用户会话
一次会话(浏览器打开-浏览器关闭)包含多次request和response组成,同一个次会话sessionId相同,获得的session相同。
session
常用api
- getId() 获取sessionId
- getMaxInactiveInterval() 获得sesion失效时间,单位秒
- setMaxInactiveInterval(int second) 设置失效时间
- invalidate() session立刻失效
- getAttribute(String) 获得属性
- setAttribut(String,Object) 设置属性
场景
用户登录保存用户信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<form action="/loginServlet" method="post">
<table>
<tr>
<td>用户名</td>
<td><input id="name" name="name" type="text"></td>
</tr>
<tr>
<td>密码</td>
<td><input id="password" name="password" type="password"></td>
</tr>
</table>
<input type="submit" name="提交" value="提交"/>
</form>
</body>
</html>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.claudxyz.servlet.LoginServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>root123</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
@Override
//登陆
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String password = req.getParameter("password");
ServletConfig servletConfig = this.getServletConfig();
resp.setContentType("text/html;charset=UTF-8");
if(name.equals(servletConfig.getInitParameter("name")) && password.equals(servletConfig.getInitParameter("password"))){
HttpSession session = req.getSession();
session.setAttribute("userName",name);
resp.sendRedirect("Welcome.jsp");
}else{
resp.sendRedirect("login.jsp");
}
}
@Override
//登出
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
session.invalidate();
resp.sendRedirect("login.jsp");
}
cookie
用户会话的一种方式,客户端浏览器存储,小文本形式,保存cookie后请求和响应会来回传递,直到cookie失效
创建
Cookie cookie = new Cookie("name","hello");
response.addCookie(cookie);
获取
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies){
System.out.println(cookie.getName() + ":" + cookie.getValue());
}
常用api
- getMaxAge() 获得cookie失效时间,-1代表关闭浏览器失效
- setMaxAge(int) 设置cookie失效时间
- getName() 获得key
- getValue() 获得value