转发请求RequestDispatcher()方法用于与页面的交互
jsp1代码
<form action="HelloServlet" >
账号: <input type="text" name="username"/>
密码: <input type="text" name="password"/>
<input type="submit" value="注册"/>
</form>
一、转发请求 request.getRequestDispatcher("目标页面").forward(request, response);
1. request.getParameter 将请求转发到另外一个页面,
servlet中代码如下: // 将从页面获取的数据不经解析,直接转发到其他页面上去
request.getRequestDispatcher("jsp2.jsp").forward(request, response);
jsp2代码 //在jsp2通过request.getParameter方法获得request中的数据
<!-- request.getParameter表示取到数据,= 表示打印到界面 -->
用户:<%=request.getParameter("username") %>
密 码:<%=request.getParameter("password") %>
2.request.setAttribute(一般放在servlet方法中,添加参数) 和request.getAttribute(在页面中取出参数)
如下例子:将一个map 带入界面中显示
servlet代码:
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", 1);
map.put("name", "刘星");
map.put("password", "123456");
request.setAttribute("map",map);
jsp代码:以下引用el表达式需要添加 jstl.jar和standard.jar 包,并在jsp文件头添加taglib指令负责引入其他标签库
<%=request.getAttribute("map") %>
<!-- 注:使用EL表达式可以直接获取request请求中的数据 -->
<c:set var="test" value="${map}"/>
<c:forEach items="${map}" var="s">
<p>values.add()=${s} </p>
</c:forEach>
二、重定向sendRedirect() sendRedirect()方法是通过浏览器重定向的,所以第二个JSP页面中获得的request并非是前一个页面的request(两次请求生成了前后两个不同的 request对象了)。
而此时使用RequestDispatcher接口的forward()方法则能够得到request中的对象了,这是因为后者并不是使用客户端浏览器进行重定向的,从函数的名字就可以看出,RequestDispatcher.forward()就是从服务器端进行任务转发。

浙公网安备 33010602011771号