江苏住房和城乡建设网站,fatal error: class wordpress,如何制作自己想要的图片,如何制作一个网站做淘宝券请求转发和响应重定向 概述 什么是请求转发和响应重定向 请求转发和响应重定向是web应用中间接访问项目资源的两种手段,也是Servlet控制页面跳转的两种手段 请求转发通过HttpServletRequest实现,响应重定向通过HttpServletResponse实现 请求转发生活举例: 张三找李四借钱,李四…请求转发和响应重定向 概述 什么是请求转发和响应重定向 请求转发和响应重定向是web应用中间接访问项目资源的两种手段,也是Servlet控制页面跳转的两种手段 请求转发通过HttpServletRequest实现,响应重定向通过HttpServletResponse实现 请求转发生活举例: 张三找李四借钱,李四没有,李四找王五,让王五借给张三 响应重定向生活举例:张三找李四借钱,李四没有,李四让张三去找王五,张三自己再去找王五借钱
请求转发 请求转发特点(背诵) 请求转发通过HttpServletRequest对象获取请求转发器实现 请求转发是服务器内部的行为,对客户端是屏蔽的 客户端只发送了一次请求,客户端地址栏不变 服务端只产生了一对请求和响应对象,这一对请求和响应对象会继续传递给下一个资源 因为全程只有一个HttpServletRequset对象,所以请求参数可以传递,请求域中的数据也可以传递 请求转发可以转发给其他Servlet动态资源,也可以转发给一些静态资源以实现页面跳转 请求转发可以转发给WEB-INF下受保护的资源 请求转发不能转发到本项目以外的外部资源
请求转发测试代码
ServletA
WebServlet(/servletA)
public class ServletA extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求转发器// 转发给servlet okRequestDispatcher requestDispatcher req.getRequestDispatcher(servletB);// 转发给一个视图资源 ok//RequestDispatcher requestDispatcher req.getRequestDispatcher(welcome.html);// 转发给WEB-INF下的资源 ok//RequestDispatcher requestDispatcher req.getRequestDispatcher(WEB-INF/views/view1.html);// 转发给外部资源 no//RequestDispatcher requestDispatcher req.getRequestDispatcher(http://www.atguigu.com);// 获取请求参数String username req.getParameter(username);System.out.println(username);// 向请求域中添加数据req.setAttribute(reqKey,requestMessage);// 做出转发动作requestDispatcher.forward(req,resp);}
}
ServletB
WebServlet(/servletB)
public class ServletB extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求参数String username req.getParameter(username);System.out.println(username);// 获取请求域中的数据String reqMessage (String)req.getAttribute(reqKey);System.out.println(reqMessage);// 做出响应resp.getWriter().write(servletB response); }
}
响应重定向 响应重定向运行逻辑图 响应重定向特点(背诵) 响应重定向通过HttpServletResponse对象的sendRedirect方法实现 响应重定向是服务端通过302响应码和路径,告诉客户端自己去找其他资源,是在服务端提示下的,客户端的行为 客户端至少发送了两次请求,客户端地址栏是要变化的 服务端产生了多对请求和响应对象,且请求和响应对象不会传递给下一个资源 因为全程产生了多个HttpServletRequset对象,所以请求参数不可以传递,请求域中的数据也不可以传递 重定向可以是其他Servlet动态资源,也可以是一些静态资源以实现页面跳转 重定向不可以到给WEB-INF下受保护的资源 重定向可以到本项目以外的外部资源 响应重定向测试代码 ServletA WebServlet(/servletA)
public class ServletA extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求参数String username req.getParameter(username);System.out.println(username);// 向请求域中添加数据req.setAttribute(reqKey,requestMessage);// 响应重定向// 重定向到servlet动态资源 OKresp.sendRedirect(servletB);// 重定向到视图静态资源 OK//resp.sendRedirect(welcome.html);// 重定向到WEB-INF下的资源 NO//resp.sendRedirect(WEB-INF/views/view1);// 重定向到外部资源//resp.sendRedirect(http://www.atguigu.com);}
} ServletB
WebServlet(/servletB)
public class ServletB extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求参数String username req.getParameter(username);System.out.println(username);// 获取请求域中的数据String reqMessage (String)req.getAttribute(reqKey);System.out.println(reqMessage);// 做出响应resp.getWriter().write(servletB response);}
}
打开浏览器,输入以下url测试
http://localhost:8080/web03_war_exploded/servletA?usernameatguigu PS:来源尚硅谷