1.在把以下语句转化成Servlet时发生了什么
把jsp编译成servlet时的代码如下
_jspx_page_context是一个引用的名字,调用它的forward方法
下面查看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
myResult.jsp
2.session和request中的hidden属性完成向导式注册
my1.jsp
my2.jsp
my3.jsp
3.HttpServlet对象的sendRedirect(String location)方法,称作重定向,其中的参数:
加斜杠后表示相对于Servlet容器*根*的路径
不加斜杠表示相对于当前请求URI的路径
myForward.jsp与myResult.jsp代码相同
MyForwardServlet.java代码如下:
运行结果:
4.RequestDispatcher的forward(request,response)方法,称作请求转发。
myForward.jsp
myForwardServlet.java
myResult.jsp
运行结果:
直接请求转发到结果页面:
MyForwardServlet.java
myResult.jsp
运行结果:
直接重定向到结果页面:
运行结果:
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)投票:题目链接的列表,