Java Servlet & JSP Cookies登录示例教程

需积分: 9 9 下载量 80 浏览量 更新于2024-08-18 收藏 986KB PPT 举报
"本文档是关于使用Cookies的Java Servlet和JSP入门教程,通过实例讲解了如何利用Cookies实现用户登录后的自动欢迎功能。" 在Web开发中,Cookies是一种客户端存储数据的技术,它允许服务器在用户的浏览器上设置和读取特定的数据。在Java Servlet和JSP中,Cookies常常用于实现会话管理,例如记录用户登录状态,以便用户在下次访问时能被自动识别。 在给出的实例中,当用户成功登录后,服务器会在响应(response)中添加一个新的Cookie。这个Cookie有一个名为"user"的键和用户输入的用户名作为值。通过`Cookie c = new Cookie("user", user);`创建Cookie对象,并通过`c.setMaxAge(3600*24*365);`设置其有效期为一年,这意味着在接下来的一年里,只要用户不清理浏览器缓存,这个Cookie就会一直存在。 在用户再次访问时,Servlet的`doGet`方法首先获取请求(request)中的所有Cookies,通过`Cookie[] cookies = request.getCookies();`。接着,遍历这些Cookies,如果找到名称为"user"的Cookie,就表明用户之前已经登录过,此时服务器可以显示欢迎信息,代码如下: ```java for(Cookie c : cookies){ if(c.getName().equals("user")){ out.println("Welcome back, "+ c.getValue()); break; } } ``` 这里,`out.println("Welcome back, "+ c.getValue());`将打印出欢迎语,其中`c.getValue()`返回的是Cookie的值,即用户名。 这个教程可能属于Java Servlet 2.4和JSP 2.0的标准,这两个版本是Java Web开发中广泛使用的经典版本。Servlet 2.4是Servlet规范的第3个版本,提供了许多改进,包括更好的异常处理和过滤器支持。而JSP 2.0引入了更多的内置对象和简化了脚本元素,使得JSP开发更加便利。 作者Frankie是一位经验丰富的JavaEE顾问,对JavaEE的各种框架如EJB3.0、Spring、Struts2和Hibernate有深入研究。他推荐了乐言网(http://www.HiAny.com)作为学习平台,该平台提供真人视频一对一的教学服务,包括JavaWeb应用的相关课程。 整个教程涵盖了从JavaWeb应用的基础到Servlet和JSP的配置与编写,是初学者学习使用Cookies进行会话管理的好资源。通过学习这个实例,开发者可以了解如何在实际项目中利用Cookies来提升用户体验。

package com.cn.servlet04; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/Cookie03") public class ServleCookie03 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置响应消息体的数据格式 resp.setContentType("text/html;char=utf-8"); //获取cookie Cookie[] cookies = req.getCookies(); //遍历数据 if(cookies != null && cookies.length>0){ for(Cookie c:cookies){ String name = c.getName(); //判断name是否是登录时间的name System.out.println("name"+name); if("time".equals(name)){ String value = c.getValue(); //解码 value = URLDecoder.decode(value,"utf-8"); //有我要的cookie 不是第一次访问 resp.getWriter().write("

欢迎回来

"); } } } if(cookies == null || cookies.length==0){ //第一次访问 Date date = new Date();//获取系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str_date = sdf.format(date); Cookie c = new Cookie("time",str_date); // c.setMaxAge(0); resp.addCookie(c); resp.getWriter().write("欢迎你首次访问"); } } } 为什么网页无法正常显示,给出修改过后的代码
166 浏览量