Servlet基础_0300_Cookie
2011-09-26 18:59
393 查看
web服务器和Client基础:
1.web服务器可以向客户端写内容
2.web服务器向客户端写的内容只能是文本文件
3.浏览器客户端可以阻止web服务器写入东西
4.web服务器端的servlet只能拿自己webapp的写入的内容
Cookie基础:
1.Cookie:保存到客户端的一个文本文件,与特定的浏览器客户端相关
2.Cookie以"名--值"对的形式保存数据
3.创建Cookie: new Cookie(name,value)
实验一:探究Cookie的类型以及存活时间
//测试类
找到IE的Cookie文件,里面的内容如下:
persist-cookie-name0
persist-cookie-value0
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117245440
30178360
*
persist-cookie-name1
persist-cookie-value1
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117255440
30178360
*
persist-cookie-name2
persist-cookie-value2
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117265440
30178360
*
内容里只存在persist的三个Cookie,证明了设置了时间的Cookie写入了文件,而没有设置时间的Cookie只在当前浏览器有效,当浏览器关闭时,临时Cookie自动清除
实验二:探究能够访问Cookie的路径(url)
a.先实验一种情况:
1.将web.xml做如下配置:
//ShowCookiesServlet.java文件如下:
2.删除IE临时文件夹下所有的文件,以清除所有Cookie
3.访问 http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/Cookie1Test ; 然后访问 http://127.0.0.1:8080/Servlet_0300_Cookie/ShowCookiesServlet
输出结果为空,任何内容都没有
b.实验另外一种情况:
4.然后将web.xml文件修改成这样:
5.再次删除IE临时文件夹下所有的文件,以清除先前的Cookie
6.访问 http://127.0.0.1:8080/Servlet_0300_Cookie/Cookie1Test ; 然后访问 http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/ShowCookiesServlet
输出结果为:
current-cookie-name0 current-cookie-value0
persist-cookie-name0 persist-cookie-value0
current-cookie-name1 current-cookie-value1
persist-cookie-name1 persist-cookie-value1
current-cookie-name2 current-cookie-value2
persist-cookie-name2 persist-cookie-value2
访问出了Cookie1Test的所有内容,证明servlet/jsp能够访问同一级路径(或者其子路径)下的所有Cookie
1.web服务器可以向客户端写内容
2.web服务器向客户端写的内容只能是文本文件
3.浏览器客户端可以阻止web服务器写入东西
4.web服务器端的servlet只能拿自己webapp的写入的内容
Cookie基础:
1.Cookie:保存到客户端的一个文本文件,与特定的浏览器客户端相关
2.Cookie以"名--值"对的形式保存数据
3.创建Cookie: new Cookie(name,value)
实验一:探究Cookie的类型以及存活时间
//测试类
/** * @author 紫竹 * @function 探讨Cookie */ package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Cookie1Test extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); for(int i=0;i<3;i++){ /** * 没有设置时间的Cookie,默认存活的时间是存活到这个窗口关闭,当这个窗口关闭后,这个cookie就不存在了;且这个cookie它只存在于当前窗口,以及其子窗口(直接从当前窗口开一个新窗口时, * 能够访问到这个cookie;如果直接开另一个新的窗口(IE8是新建会话),访问不到这个cookie) * 本质:没有设置时间的Cookie只是写入到了这个浏览器的内存 * */ Cookie cookie = new Cookie("current-cookie-name"+i,"current-cookie-value"+i); response.addCookie(cookie); /** * 这个Cookie写入了文件,新开的浏览器也能访问这个Cookie */ Cookie cookie2 = new Cookie("persist-cookie-name"+i,"persist-cookie-value"+i); cookie2.setMaxAge(3600);//一个小时过期 response.addCookie(cookie2); } PrintWriter pw = response.getWriter(); pw.print("<a href='ShowCookiesServlet'>show all cookies</a>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
找到IE的Cookie文件,里面的内容如下:
persist-cookie-name0
persist-cookie-value0
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117245440
30178360
*
persist-cookie-name1
persist-cookie-value1
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117255440
30178360
*
persist-cookie-name2
persist-cookie-value2
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117265440
30178360
*
内容里只存在persist的三个Cookie,证明了设置了时间的Cookie写入了文件,而没有设置时间的Cookie只在当前浏览器有效,当浏览器关闭时,临时Cookie自动清除
实验二:探究能够访问Cookie的路径(url)
a.先实验一种情况:
1.将web.xml做如下配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Cookie1Test</servlet-name> <servlet-class>com.servlet.Cookie1Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Cookie1Test</servlet-name> <url-pattern>/servlet/Cookie1Test</url-pattern> </servlet-mapping> <servlet> <servlet-name>ShowCookiesServlet</servlet-name> <servlet-class>com.servlet.ShowCookiesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowCookiesServlet</servlet-name> <url-pattern>/ShowCookiesServlet</url-pattern> </servlet-mapping> </web-app>
//ShowCookiesServlet.java文件如下:
/** * @author 紫竹 * @function 探讨Cookie * */ package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShowCookiesServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter pw = response.getWriter(); Cookie[] cookies = request.getCookies(); System.out.println(cookies); if(cookies!=null){ for(int i=0;i<cookies.length;i++){ Cookie cookie = cookies[i]; pw.println(cookie.getName()+" "+cookie.getValue()+"<br/>"); } } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
2.删除IE临时文件夹下所有的文件,以清除所有Cookie
3.访问 http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/Cookie1Test ; 然后访问 http://127.0.0.1:8080/Servlet_0300_Cookie/ShowCookiesServlet
输出结果为空,任何内容都没有
b.实验另外一种情况:
4.然后将web.xml文件修改成这样:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Cookie1Test</servlet-name> <servlet-class>com.servlet.Cookie1Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Cookie1Test</servlet-name> <url-pattern>/Cookie1Test</url-pattern> </servlet-mapping> <servlet> <servlet-name>ShowCookiesServlet</servlet-name> <servlet-class>com.servlet.ShowCookiesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowCookiesServlet</servlet-name> <url-pattern>/servlet/ShowCookiesServlet</url-pattern> </servlet-mapping> </web-app>
5.再次删除IE临时文件夹下所有的文件,以清除先前的Cookie
6.访问 http://127.0.0.1:8080/Servlet_0300_Cookie/Cookie1Test ; 然后访问 http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/ShowCookiesServlet
输出结果为:
current-cookie-name0 current-cookie-value0
persist-cookie-name0 persist-cookie-value0
current-cookie-name1 current-cookie-value1
persist-cookie-name1 persist-cookie-value1
current-cookie-name2 current-cookie-value2
persist-cookie-name2 persist-cookie-value2
访问出了Cookie1Test的所有内容,证明servlet/jsp能够访问同一级路径(或者其子路径)下的所有Cookie
相关文章推荐
- 【Java学习-J.160611.0.21】Servlet基础四 cookie部分
- Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同
- day_7在servlet中实现cookie技术
- Servlet基础
- Java基础——Servlet(四)
- JavaWeb开发基础:Servlet登录小实例
- 零java基础搞定微信Server_2_Servlet基础
- PHP Cookie 和 Session基础用法
- Java Web基础 --- Servlet 综述(实践篇)
- Servlet重新温习,cookie
- Servlet 清除Cookie 方法
- HTTP协议基础(渗透基础:状态码,cookie,session)
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 问题解决
- Servlet基础 Tomcat配置 和常见错误代码
- Java Web基础知识之Servlet(3):Session管理
- Servlet第七篇【Cookie和Session的区别、应用】
- 第九天3月1日之Servlet中的cookie和session两大对象
- Servlet自学第26讲:禁用cookie后还能继续使用session的方法
- javax.servlet.http.Cookie.setHttpOnly(Z)V
- servlet基础之2--form提交