赞
踩
1.RequestDispatcher是请求的派发者。它有两个动作:include和forward。
2.主要作用:让其它的资源参与进来,协同完成响应。
3.特点:浏览器上的url不会因为使用了forward或者include而改变,因此forward和include的调用对于用户来说是透明的。
这个方法将请求从一个servlet或jsp目标资源转发到另一个资源,由该资源来产生响应数据。这个方法允许目标资源在做一些准备工作之后,
再将请求转发给另一资源。需要注意的是,在forward的前后,都不应出现响应输出的语句。
//1.jsp <form action="userServlet" method="get"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> //userServlet protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //处理乱码,设置请求编码 req.setCharacterEncoding("UTF-8"); //打印请求url System.out.println(req.getRequestURL());//http://localhost:8081/JavaWeb01/userServlet //转发 req.getRequestDispatcher("2.jsp").forward(req, resp); } //2.jsp <%=request.getRequestURL()%> //http://localhost:8081/JavaWeb01/2.jsp
从上面的示例可以看出:虽然浏览器上的url地址不会改变,但是请求url是不同的,也就说有两个不同的request对象,那么为什么我们可以从后者取到
前者的数据呢(getParameter)?呃,我也不晓得,估计是中间做了啥交接工作吧,希望有大神可以教教小弟!阿里嘎头扣杀伊马斯!不过想想其实也容易理解,就类似于我们将qq聊天的内容转发给其它的好友一样,转发的和被转发的内容是一样的对吧,但是这又的的确确是两条聊天记录!
此方法用于包含响应中的某一个资源的内容,什么意思呢?就是说,我们把请求发送给目标资源,目标资源中使用include包含另一个资源,这个
被包含的资源会对请求产生响应数据,这份响应数据会被包含在目标资源的响应数据之中。需要注意的是:
被包含的资源不能设置ServletResponse的响应状态和响应头,因为这些事是包含者(目标资源)做的事,它只需要提供响应数据就行了。
//1.jsp <form action="userServlet" method="get"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> //userServlet protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //处理乱码,设置请求编码 req.setCharacterEncoding("UTF-8"); //打印请求url System.out.println(req.getRequestURL());//http://localhost:8081/JavaWeb01/userServlet //转发 req.getRequestDispatcher("2.jsp").forward(req, resp); } //2.jsp <%=request.getRequestURL()%> //http://localhost:8081/JavaWeb01/userServlet
这个示例可以发现:两个请求url是一样的,也就是只有一个request对象。
相同点:二者都不会使浏览器的url地址发生变化。
不同点:forward过程中会出现两个不同的request对象(不同的请求url),并且由转发的资源进行响应;
而include过程中只出现了一个request对象(相同的请求url),并且转发的资源的响应数据会被包含在目标资源的响应中,
也就是由目标资源进行响应而不是转发资源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。