servlet cookie处理实践
2016-05-10 18:56
344 查看
一、servlet中处理cookie的方法
方法描述 |
---|
public void setDomain(String pattern)该方法设置 cookie 适用的域名。 |
public String getDomain()该方法获取 cookie 适用的域名。 |
public void setMaxAge(int expiry)该方法设置cookie生产的时间(以秒为单位)。如果不设置,cookie只会在当前session中有效。 |
public int getMaxAge()获取cookie的最大生存周期(以秒为单位),默认,-1表示cookie将持续下去,直到浏览器关闭。 |
public String getName()获取cookie的名称。name只能被设置一次,不能修改。 |
public void setValue(String newValue)设置cookie的值。 |
public String getValue()获取cookie的值。 |
public void setPath(String uri)设置cookie适用的路径。如果不指定路径,与当前页面相同目录下的(包括子目录下的)所有URL都会返回cookie。 |
public String getPath()获取cookie的适用路径。 |
public void setSecure(boolean flag)设置布尔值,true表示cookie只能在加密的(SSL)连接上发送。 |
public void setComment(String purpose)设置cookie的注释。该注释可以用于浏览器向用户呈现cookie时。 |
public String getComment()获取设置的注释。 |
二、创建cookie和使用cookie的例子
首先写了一个servlet,重写了doGet方法,用于处理来自”/CookiesTest”的GET请求。//使用注解的方式注册servlet,和在web.xml中注册等效 @WebServlet(name = "CookiesTest", urlPatterns = {"/CookiesTest"}) public class CookiesTest extends HttpServlet{ private static final long serialVersionUID = 1L; public CookiesTest() {} @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //获取浏览器访问时携带的cookie,以数组的形式保存。 Cookie[] readCookies = request.getCookies(); String userNameStr; String passwordStr; if(readCookies == null){//等于null表示浏览器没有携带cookie //浏览器没有携带cookie时,就从url中获取需要的参数 //http://localhost:8080/ServletCookieTest/CookiesTest?userName=1&password=1 //是本例子的url userNameStr = request.getParameter("userName");//获取userName参数的值 passwordStr = request.getParameter("password");//获取password参数的值 //创建两个cookie,以name和value作为参数 Cookie userName = new Cookie("userName", userNameStr); Cookie password = new Cookie("password", passwordStr); //设置cookie的生存时间,单位是秒。 userName.setMaxAge(60*60); //60s * 60 = one hour password.setMaxAge(60*60); //60s * 60 = one hour //将新创建的cookie添加到HttpServletResponse中 response.addCookie(userName); response.addCookie(password); } else{//说明浏览器携带了cookie,直接从浏览器携带的cookie中获取参数的值,不关心url了 userNameStr = readCookies[0].getValue(); passwordStr = readCookies[1].getValue(); } //以下内容用于返回html,使用了userNameStr和passwordStr。 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "设置 Cookies 实例"; String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n" + " <li><b>User Name</b>:" + userNameStr + "\n</li>" + " <li><b>Password</b>:" + passwordStr + "\n</li>" + "</ul>\n" + "</body></html>"); } }
编写index.html,一个简单的表单,action=”CookiesTest” method=”GET”
<html> <head> <meta charset="utf-8"> <title>ServletCookieTest</title> </head> <body> <form action="CookiesTest" method="GET"> 姓名<input type="text" name="userName"> <br /> 密码<input type="text" name="password" /> <input type="submit" value="提交" /> </form> </body> </html>
部署
创建动态web工程,命名ServletCookieTest;创建java类,创建CookiesTest;
在WebContent目录下创建index.html;
部署到tomcat;
访问http://localhost:8080/ServletCookieTest/index.html即出现用户名密码登陆界面,点击提交则出现http://localhost:8080/ServletCookieTest/CookiesTest?userName=test&password=test ,上文定义的servlet将处理这个url,第一次登陆时,不携带cookie,将使用填写的用户名和密码并设置cookie,之后登陆则忽略用户名和密码,使用cookie。
推荐一个chrome的插件EditThisCookie,可以修改删除cookie。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序