java中include_关于java中sendRedirect,forward和include区别

在javaWeb中页面跳转一般有三种形式,sendRedirect,forward和include,三者有什么区别呢?

我先进行说明,再以一个小例子说明

一、sendRedirect

使用方式

response.sendRedirect();

服务器根据逻辑,发送一个状态码,告诉浏览器去请求指定的地址,把需要的参数放在转发的地址里面。由于是一次新的申请,原先的request就不能读取了,可以使用session代替,或者使用include,和forward代替

二、forward

使用方式

request.getRequestDispatcher("/first.jsp").forward(request, response);

页面会是first.jsp的内容,地址栏不变

可以使用设置属性

三、include

使用方式

request.getRequestDispatcher("/first.jsp").include(request, response);

页面会同时包含当前页面和first.jsp的内容

可以使用设置属性

下面是一个例子

index.jsp

%>

Insert title here

index.jsp 页面

first.jsp

first.jsp带id123456

second.jsp

second.jsp带id123456

third.jsp

third.jsp带id123456
可以获取id为:

first.jsp

%>

Insert title here

first.jsp 页面

提交的ID:

response.sendRedirect(request.getContextPath()+"/index.jsp");

System.out.println("first.jsp有访问过了");

%>

second.jsp

%>

Insert title here

second.jsp 页面

request.getRequestDispatcher("/index.jsp").forward(request, response);

%>

提交的ID:

third.jsp

%>

Insert title here

third.jsp 页面

提交的ID:

request.getRequestDispatcher("/fourth.jsp").include(request, response);

request.getRequestDispatcher("/index.jsp").include(request, response);

%>


fourth.jsp

%>

Insert title here

fourth.jsp 页面


接下来运行服务器(使用的是TomCat8.0)

访问项目

58f84be536e74f5f56a0e8786145ceae.png

点击第一个链接

92609f44de9656389585055e058fc963.png

页面没有变化,但是控制台有输出,表示访问过了

我们试着传一个参数过去id=123456

535fb377ec9bc0d7727ba53badb188d5.png

不能获取id,说明是浏览器重新发出的一个请求,request已经被销毁,这个是一个新的request

下面放上流程图

f928a6eb15072ebae6a82050a952b54a.png

点击第三个连接

9f49a68828690697e24f74ba8e102eb3.png

页面没有变化,但是地址栏发生变化

我们传一个参数进去

fb60176b722d448d5f58aaf2a6718780.png

有了,可以显示id,说明是同一个request

下面放上流程图

4d100358e529421c3df5ed36001d3153.png

因为forward是服务器内部跳转,会带着request一起到下一个页面,所以id可以获得

接着点击第五条链接

4838fb05f9d8a96b044d08a742778bf1.png

页面发生变化,同时包含了,third.jsp和fourth.jsp的内容

我们传一个参数

4fceff129ab417662d011d9aadc03983.png

可以获得request

下面是流程图

316d90030eaabbd68dc03edb70557fde.png

本人知识有限,如有错误,望指出

此文系原创,转载请声明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值