Eclipse中页面跳转、请求转发

一、JSP9大内置对象(自带的,不需要new也能使用的对象)

out:输出对象,向客户端输出内容
request:请求对象,存储“客服端向服务端发送的请求信息”。
response对象的常见方法
String getParameter(String name):根据请求的字段名Key(intput标签的name属性值),返回字段值value(intput标签的value属性值)
String[] getParametervalues(Sting name):根据请求的字段名Key,返回多个字段值value(checkbox)
void setCharacterEncoding(“编码格式UTF-8”):设置请求编码
getRequestDispatcher(“b.jsp”).forward(request,response); :请求转发的方式跳转页面
getServerContext():获取项目的ServletContext对象

二、调用方式

在servlet中调用转发、重定向的语句如下:

request.getRequestDispatcher("request.jsp").forward(request, response);//转发到request.jsp
response.sendRedirect("request.jsp");//重定向到request.jsp

也可以在JSP中实现

<%response.sendRedirect("request.jsp");//重定向到request.jsp%>

三、重定向与请求转发

1.重定向流程图
Eclipse中页面跳转、请求转发_第1张图片重定向是两次request,
第一次,客户端request 某一个资源,服务器响应,并response回来,告诉浏览器,你应该去另一个。
缺点:在重定向的过程中,传输的信息会被丢失。

2.请求转发
Eclipse中页面跳转、请求转发_第2张图片
请求转发是服务器内部把对一个request/response的处理权,移交给另外一个
对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。
优点:传输的信息不会丢失。

四、区别

1.request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;服务器内部转发,整个过程处于同一个请求当中。
response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。
重定向,实际上客户端会向服务器端发送两个请求。 所以转发中数据的存取可以用request作用域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。只能用session。
2.RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
3.重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。

你可能感兴趣的:(Eclipse中页面跳转、请求转发)