#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向

1.在把以下语句转化成Servlet时发生了什么

把jsp编译成servlet时的代码如下

_jspx_page_context是一个引用的名字,调用它的forward方法

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第1张图片

下面查看PageContext类中的方法

forward方法:public abstract void forward(String relativeUrlPath) throws ServletException IOException

    这个方法用于 重定向 请求转发 当前的servlet请求和servlet相应到另一个应用当中活动的组件。

    如果这个relativeUrlPath以“/”开头,那么它是绝对路径。如果这个relativeUrlPath不以“/”开头,那么它是相对路径

程序示例:写两个JSP和一个Servlet,第一个JSP填写信息后,转到Servlet,再由Servlet请求转发到第二个JSP

myForward.jsp


MyForwardServlet.java

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第2张图片

myResult.jsp


2.session和request中的hidden属性完成向导式注册

my1.jsp

my2.jsp

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第3张图片

my3.jsp

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第4张图片

3.HttpServlet对象的sendRedirect(String location)方法,称作重定向,其中的参数:

加斜杠后表示相对于Servlet容器*根*的路径

不加斜杠表示相对于当前请求URI的路径

myForward.jsp与myResult.jsp代码相同

MyForwardServlet.java代码如下:

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第5张图片

运行结果:

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第6张图片

4.RequestDispatcher的forward(request,response)方法,称作请求转发

myForward.jsp

myForwardServlet.java

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第7张图片

myResult.jsp

运行结果:

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第8张图片

直接请求转发到结果页面:

MyForwardServlet.java

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第9张图片

myResult.jsp

运行结果:

直接重定向到结果页面:

#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向_第10张图片

运行结果:


5.请求转发(forward)和重定向(sendRedirect)的区别

请求转发:向服务器提交请求(myForward.jsp),服务器找到能够处理请求的servlet(MyForwardServlet.java),服务器产生Request和Response两个对象,把这两个对象分别赋给doGet方法的两个参数。函数处理完之后,转发到结果页面(result.jsp),以上整个过程,都是在一个请求里面完成,最后处理完,服务器把这个响应返回给客户端

请求转发:RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,食欲请求对象的方法


重定向:向服务器提交请求(myForward.jsp),服务器找到能够处理请求的servlet(MyForwardServlet.java),服务器产生Request和Response两个对象,把这两个对象分别赋给doGet方法的两个参数。***当服务器执行到sendRedirect方法的时候,不再继续向下执行,而是向客户端返回一个响应,这个响应告诉客户端访问sendRedirect中参数代表的地址(myResult.jsp),客户端收到这个响应后,立刻向服务器发送一个新的请求:这个请求标识着请求myResult.jsp,所以服务器找到myResult.jsp这个文件,执行它,执行后,把这个响应返回给客户端。所以,在第二个请求里不能获得第一个请求里面的信息。重定向实际上,客户端向服务器端发送两个请求,第一个请求servlet,第二个请求result.jsp

重定向:sendRedirect()是HttpServletResponse对象的方法,及响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果

6.投票管理

(1)出题目:设定题目名称、选项数量、选项名称、投票类型(单选、多选)

(2)投票:题目链接的列表,

你可能感兴趣的:(#笔记#圣思园 JavaWeb 第18讲——forward元素,session和request向导式注册,请求转发、重定向)