摘要:本文主要向大家介绍了JAVA语言的请求转发和请求包含和重定向之间的区别,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言的请求转发和请求包含和重定向之间的区别,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
1 package com.sn.servlet.forward;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.annotation.WebServlet;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 /**
11 * Servlet implementation class OneServlet
12 */
13 @WebServlet("/OneServlet")
14 /**
15 * 请求转发和请求包含和重定向之间的区别
16 * @author Administrator
17 *
18 */
19 public class OneServlet extends HttpServlet {
20 /**
21 * 1.response:服务器端向客户端发送数据,主要设置一些响应。
22 * 2.request:访问任何客户端,可以用post方法传递参数和get方法发出请求。
23 * 3.get和post在表单中既可以是get请求,也可以是post请求。
24 * 注意:请求转发和请求包含都是一个请求。
25 * 4.请求转发:留头不留体
26 * 5.请求包含:留头又留体
27 *
28 * 6.servlet中的三大域对象分别是:
29 * 1)、Request
30 * 2)、Session
31 * 3)、application
32 * 共同点:都有这三个方法:
33 * void setAttribute(String name,Object value);储存一个对象
34 * Object getAttribute(String name);获取数据
35 * void removeAttribute(String name);移除属性
36 * 注意:如果一个servlet中存储了一个对象,然后重定向后,然后在获取数据,是不可以获取到的,因为已经被重定向了,他会在新的servlet创建一个新的request。
37 * 如果在一个servlet中存储了一个对象,请求转发和请求包含都可以使用getAttribute获取数据,因为是只有一个请求。
38 * 三个域对象都可以存放数据。
39 * 注意:request可以存放数据,但是只会在一个请求范围内。
40 * 7.请求转发和重定向之间的区别:
41 * >请求转发是一个请求一个响应,重定向是两次请求两次响应
42 * >请求转发浏览器地址栏不会发生变,重定向的浏览器地址栏会发生变化
43 * >请求转发只能转发到本项目的其他serlvet中,重定向不但可以重定向到本项目的其他servlet中还可以重定向到其他项目
44 * >请求转发是服务端行为,只要给出转发的servlet路径,重定向需要给requestURI和项目名
45 * >请求转发效率能搞,因为只有一次请求
46 * 总结:通过学习了请求转发,掌握了以上知识点,这些以后会经常用到。一定要弄清楚服务器端和客户端。
47 *
48 */
49 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
50 System.out.println("OneServlet"); //打印在控制台
51 response.setHeader("vip", "VIP"); //设置响应头
52 response.getWriter().print("OneServlet......"); //设置响应体,主要是向浏览器输出
53 request.setAttribute("name", "wangcai"); //setAttribute:设置属性及属性值,属性:name,属性值:wangcai
54 //request.getRequestDispatcher("/TwoServlet").forward(request, response); //请求转发。forward:转发
55 request.getRequestDispatcher("/TwoServlet").include(request, response); //请求包含。include:包含
56 }
57
58 }
复制代码
1 package com.sn.servlet.forward;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.annotation.WebServlet;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 /**
11 * Servlet implementation class TwoServlet
12 */
13 @WebServlet("/TwoServlet")
14 public class TwoServlet extends HttpServlet {
15 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16 System.out.println("TwoServlet"); //打印在控制台
17 String s = (String) request.getAttribute("name"); //通过属性名获取属性值,因为是obj,所以需要强转
18 response.getWriter().print(s); //设置响应体,向浏览器输出
19 }
20
21 }
请求转发:留头不留体
复制代码
希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!
已有23人表明态度,87%喜欢该老师!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号