Cookie,Session的区别与联系(最全面的分析)

来源:互联网 发布:枚举 c语言 编辑:程序博客网 时间:2024/06/05 22:35

1:login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>
 <h3>登录界面</h3>
 <form action="loginServlet" method="post">
    账号:<input type="text" name="username" required="required"/><br/><br/>
   密码:<input type="password" name="password" required="required"/><br/><br/>
   <input type="submit" value="登陆"/>
 </form>
</body>
</html>



2:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>servlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/helloServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.InitServlet</servlet-class>
    <init-param>


6:User

package cn.itcast.servlet;
//用户
public class User {
  private String username;
  private String password;
 
public User(String username, String password) {
 super();
 this.username = username;
 this.password = password;
}
public String getUsername() {
 return username;
}
public void setUsername(String username) {
 this.username = username;
}
public String getPassword() {
 return password;
}
public void setPassword(String password) {
 this.password = password;
}
@Override
public String toString() {
 return "User [username=" + username + ", password=" + password + "]";
}
 
}

      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitServlet</servlet-name>
    <url-pattern>/initServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>MappingServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.MappingServlet</servlet-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>MappingServlet</servlet-name>
    <url-pattern>/mappingServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
 
  <servlet>
    <servlet-name>ListServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.ListServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListServlet</servlet-name>
    <url-pattern>/listServlet</url-pattern>
  </servlet-mapping>
 
  <servlet>
    <servlet-name>GetServlet</servlet-name>
    <servlet-class>cn.itcast.servlet.GetServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>GetServlet</servlet-name>
    <url-pattern>/getServlet</url-pattern>
  </servlet-mapping>
</web-app>


3:LoginServlet

package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out=response.getWriter();
  HttpSession session=request.getSession();
  String name=request.getParameter("username");
  out.println("<html>");
  out.println("<head><title>响应页面</title></head>");
  out.println("<body>");
  out.print("欢迎"+name+"登陆本网站<br/>");
  //URL重写
  String url=response.encodeURL("/session/list");
  System.out.println(url);
  out.print("<a href='listServlet;jsessonid='"+session.getId()+">收件箱</a>");
  //创建Cookie,并记录信息
  //设置编码
  String name1=URLEncoder.encode(name,"UTF-8");
    Cookie cookie=new Cookie("currentName", name1);
    //向客户端添加Cookie
    //设置Cookie存活时间
    cookie.setMaxAge(10);//10秒
    response.addCookie(cookie);
  /*
               //修改Cookie
    cookie=new Cookie("currentName", "SpringBroter");
    response.addCookie(cookie);
  */
    //获取sessionid
    System.out.println(session.getId());
    //设置属性
    request.getSession().setAttribute("currentName", name);
    //封用户信息装成一个对象
    String password=request.getParameter("password");
    User user=new User(name, password);
    request.getSession().setAttribute("user", user);
  out.println("</body>");
  out.println("</html>");
 }
}


4:ListServlet

package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
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 ListServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out=response.getWriter();
  out.println("<html>");
  out.println("<head><title>响应页面</title></head>");
  out.println("<body>");
  String username="";
  //从请求头中获取Cookie
    Cookie[] cookies=request.getCookies();
    if(cookies!=null)
    {
     for(Cookie cookie:cookies)
     {
      String name=cookie.getName();
      if("currentName".equals(name))
      {
       username=cookie.getValue();
       break;
      }
     
     }
    }
    String name=URLDecoder.decode(username,"UTF-8");
    out.println("欢迎"+name+"登陆<br/>");
    username=(String)request.getSession().getAttribute("currentName");
    System.out.println("用户名:"+username);
    User user=(User)request.getSession().getAttribute("user");
    System.out.println("用户登录信息:"+user);
  for(int i=1;i<=6;i++)
  out.print("<a href='getServlet'>第"+i+"份邮件</a><br/>");
  out.println("</body>");
  out.println("</html>");
 }
}


5:GetServlet


package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
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 GetServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out=response.getWriter();
  out.println("<html>");
  out.println("<head><title>响应页面</title></head>");
  out.println("<body>");
  String username="";
  //从请求头中获取Cookie
    Cookie[] cookies=request.getCookies();
    if(cookies!=null)
    {
     for(Cookie cookie:cookies)
     {
      String name=cookie.getName();
      if("currentName".equals(name))
      {
       username=cookie.getValue();
       break;
      }
     
     }
    }
    String name=URLDecoder.decode(username,"UTF-8");
    out.println("欢迎"+name+"登陆<br/>");
  out.print("<a href='listServlet'>正在学习Servlet</a>");
  out.println("</body>");
  out.println("</html>");
 }
}


原创粉丝点击