石家庄无极网站建设,那个网站建设好,域名策划方案,台州人才网转发和重定向
1.0 面试提问 定义不同跳转的方式不同数据共享不同最终的URL地址不同代码实现不同 1. 转发
1.1 概念 转发实际上在服务器端进行页面的跳转操作#xff0c;请求转发#xff1a;一种在服务器内部的资源的跳转的方式。 访问A#xff0c;A请求转发了B#xff0c…转发和重定向
1.0 面试提问 定义不同跳转的方式不同数据共享不同最终的URL地址不同代码实现不同 1. 转发
1.1 概念 转发实际上在服务器端进行页面的跳转操作请求转发一种在服务器内部的资源的跳转的方式。 访问AA请求转发了B访问A的同时就也访问到了B。
带参数跳到指定的页面比如request。
访问A进入A的网址然后在A里面请求转发B就是带着A的请求到了B。1.2 特点 转发操作用户只请求了一次转发操作用户请求的URL不发生改变转发操作只能够转发服务器内部的资源.转发操作过程中任何一个步骤都可以获取用户的请求参数获取之前其他操作添加的数据内容, 即请求域中的数据不会丢失。转发操作是服务器行为。 1.3 方法通过HttpServletRequest)
方法含义获取参数String getParameter(String name);通过名称获取用户请求参数对应的数据Map(String,String[]) getParameterMap();直接获取用户请求参数对应的map双边队列String[] getParameterValues(String names);通过名称获取对应的Value值获取属性存储的数据void setAttribute(String name,Object obj);request 对象添加属性的操作要求提供属性名称和对应的属性值属性名称是String 类型值为Object 什么类型都可以Object getAttribute(String name);根据属性的名称获取对应的属性值返回是Object。可使用强转。void removeAttribute(String name);删除属性的操作根据属性名称删除属性信息属性名称属性值都删除区分 Parameter 用户提交的数据通过表单ajax等方式获取数据形式是键值对的形式。Servlet获取的数据类型是String类型。 Attribute属性服务器在转发的过程中的操作方便后续资源的使用在Attribute 属性中添加属性数据类似于Map 类型。name value 模式value 类型不会限制。 1.4 Request域对象特征 域对象 表示的是一定范围内的有效的对象 有效范围 对于HttpServletRequest 对象是整个转发路径中的所有的相关的资源范围内有效。 1.5 实例 首先 Servlet 接收用户的请求转发到中间的Servlet。中间的Servlet 接收其他的Servlet转发访问同时添加访问的内容转发到最终的处理需求的Servlet。最终的Servlet 完成针对于用户的响应的请求之后同时用户的请求的数据和中间的Servlet添加属性数据。 WebServlet(/test1)
public class ADispatchServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 解决Servlet中的乱码的问题req.setCharacterEncoding(utf-8);resp.setContentType(text/html;charsetutf-8);System.out.println(首先收到指定的请求操作);System.out.println(请求中的参数1是 req.getParameter(user1));System.out.println(请求中的参数2是 req.getParameter(user2));/*** 执行转发的操作通过request 对象进行调用指定的方法然后通过forword转发到目标的资源中提供请求对象和响应对象*/req.getRequestDispatcher(test2).forward(req, resp);}
}WebServlet(/test2)
public class BDispatchServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*当前 Servlet 对应的请求和响应不是 Tomcat 服务器用户请求创建和绑定的而是上一个资源在转发过程中 提交给当前 Servlet 程序运行所需的请求和响应对象*/System.out.println(收到test1 中的转发);System.out.println(所需要的参数一req.getParameter(user1));System.out.println(所需要的参数二req.getParameter(user2));// 给当前的request对象添加属性值进行传递操作req.setAttribute(none,张三,李四);req.getRequestDispatcher(test3).forward(req, resp);}
}WebServlet(/test3)
public class CDispatchServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(重定向);System.out.println(获取请求中的1参数;req.getParameter(user1));System.out.println(获取请求中的2参数;req.getParameter(user2));System.out.println(获取上一级建立的属性的参数);System.out.println(req.getAttribute(none));resp.getWriter().append((String)req.getAttribute(none));}
}1.6 总结 1. 得到转发器 RequestDispatcher request.getRequestDispatcher(/跳转的地址) 参数是要跳转的地址
2. 实现转发操作转发器对象.forward(request,response)表示的含义是 将请求和响应提交过去保证转发过去的页面也能够有同样的request 和 response。总结 实现request.getRequestDispatcher(“/跳转的地址”).forward(request,response); 2. 重定向
2.1 概念 重定向就是通过各种方法将各种网络请求重新定个方向转到其他的位置。也就是说在网页上设置一个约束条件如果满足条件就会自动跳转到其他的网页上。例如网页重定向、域名重定向、路由的选择的变化也是重定向. 2.2 特点 用户请求多次两次两次以上URL会改变浏览器行为操作后用户无法获取请求资源和中间资源可以定向至服务器内部资源也能够访问服务器外部资源 2.3 核心 核心变量: HttpServletResponse 对象 核心方法 SendRedirect(String location) 完成对应的重定向的操作 response.sendRedirect(跳转的地址)2.4 网页定向 在我们创建网站的时候时常能够遇到网页需要重定向的情况 网站的调整改变网页的目录结构网页被移动到一个新的地址网页拓展名称改变。注册了多个域名的网站也需要通过重定向让访问这个域名的用户自动跳转到主站点。 3. 使用区分总结 如果需要保存数据域中的数据则需要进行转发的实现操作否则需要使用重定向。 如果之后需要访问数据库增删改的操作需要使用重定向的操作查询的时候使用转发。 区别转发forward()重定向sendRedirect()根目录包含项目的访问地址没有项目的访问地址地址栏不会发生改变会发生变化哪里跳转服务端进行的跳转浏览器进行的跳转请求域中的数据不会丢失会丢失