servlet redirect/forward/session/cookie 与 HTTP 协议的测试
2016-07-31 20:45
471 查看
本文直接展示servlet的测试结果。
servlet的代码中使用sendRedirect:
查看浏览器交互过程,先是请求该servlet:
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
302 Found
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Cache-Control:
max-age=0
Connection:
keep-alive
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
0
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 07:16:55 GMT
Location:
http://localhost:8080/web/
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=8C8DCD7355CC62C75C9BD154B2ADEDD0; Path=/web/; HttpOnly
可以看到response返回了302,并带上了location, 指示浏览器做第二次跳转请求,浏览器得到提示后进行第二次请求。
同样的servlet,将代码改为forward,实现了在servlet容器内部的跳转,对浏览器实际上是不可见得。
看一下tomcat服务器的响应,一个200 OK之后,直接返回了内容,很直接
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
200 OK
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Connection:
keep-alive
Cookie:
JSESSIONID=4D4C34D45462707E53A475C060E2D2A2; test=test
DNT:
1
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
218
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 09:12:04 GMT
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=0FE64A4D2D1777BD44F08F2F8186384B; Path=/web/; HttpOnly
再看cookie的保存,将以上代码改为将cookie加入response:
再看HTTP head:
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
200 OK
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Cache-Control:
max-age=0
Connection:
keep-alive
Cookie:
JSESSIONID=FB43328EF48C78B7122454F84B57F164
DNT:
1
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
186
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 07:47:13 GMT
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=BC3FDA2D942F2F4B50757D9C436D21A9; Path=/web/; HttpOnly
Set-Cookie:
test=test
Tomcat通过HTTP协议的Set-Cookie将servlet的cookie放入了响应头,查看浏览器的cookie,除了jsessionid,又加了一个test/test的cookie进来。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/18/6e12c8de65df5e3f62bdb9730d99da05.jpg)
servlet的代码中使用sendRedirect:
public class SessionTest extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... response.sendRedirect("http://localhost:8080/web/"); ...}
查看浏览器交互过程,先是请求该servlet:
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
302 Found
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Cache-Control:
max-age=0
Connection:
keep-alive
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
0
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 07:16:55 GMT
Location:
http://localhost:8080/web/
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=8C8DCD7355CC62C75C9BD154B2ADEDD0; Path=/web/; HttpOnly
可以看到response返回了302,并带上了location, 指示浏览器做第二次跳转请求,浏览器得到提示后进行第二次请求。
同样的servlet,将代码改为forward,实现了在servlet容器内部的跳转,对浏览器实际上是不可见得。
request.getRequestDispatcher("/index.jsp").forward(request, response);
看一下tomcat服务器的响应,一个200 OK之后,直接返回了内容,很直接
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
200 OK
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Connection:
keep-alive
Cookie:
JSESSIONID=4D4C34D45462707E53A475C060E2D2A2; test=test
DNT:
1
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
218
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 09:12:04 GMT
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=0FE64A4D2D1777BD44F08F2F8186384B; Path=/web/; HttpOnly
再看cookie的保存,将以上代码改为将cookie加入response:
Cookie cookie = new Cookie("test","test"); response.addCookie(cookie); PrintWriter out = response.getWriter();
再看HTTP head:
Request URL:
http://localhost:8080/web/SessionTest
Request Method:
GET
Status Code:
200 OK
Request Headersview source
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:
gzip,deflate,sdch
Accept-Language:
en-US,en;q=0.8,zh;q=0.6,ko;q=0.4,ja;q=0.2
Cache-Control:
max-age=0
Connection:
keep-alive
Cookie:
JSESSIONID=FB43328EF48C78B7122454F84B57F164
DNT:
1
Host:
localhost:8080
User-Agent:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Response Headersview source
Content-Length:
186
Content-Type:
text/html;charset=UTF-8
Date:
Thu, 06 Jun 2013 07:47:13 GMT
Server:
Apache-Coyote/1.1
Set-Cookie:
JSESSIONID=BC3FDA2D942F2F4B50757D9C436D21A9; Path=/web/; HttpOnly
Set-Cookie:
test=test
Tomcat通过HTTP协议的Set-Cookie将servlet的cookie放入了响应头,查看浏览器的cookie,除了jsessionid,又加了一个test/test的cookie进来。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/18/6e12c8de65df5e3f62bdb9730d99da05.jpg)
相关文章推荐
- HTTP协议详解(真的很经典)
- TCP/IP详解学习笔记(6)-UDP协议
- TCP状态变迁
- 基于ubuntu的tcpdump抓包总结
- 网络工程1.10——七层模型之四传输层
- Http Post 和 Get的请求区别
- Vmware 配置Ubuntu网络NAT模式,桌面网络连接是灰色的
- Eclipse中进行web project开发时遇到httperror 500 错误 jsp support not configured 问题的解决方法
- “另类”计算IP地址和子网划分
- node.js实现简单的网络爬虫程序
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫
- 糗事百科的网络爬虫