| 方法 | 描述 |
| — | — |
| void addCookie(Cookie cookie) | 把指定的 cookie 添加到响应中. |
响应中就可以根据 addCookie
这个方法来添加一个 Cookie
信息到响应报文中,这里添加进来的键值对,就会作为 Http 响应中的 Set-Cookie
字段来表示。
HttpSession 类中的相关方法
| 方法 | 描述 |
| — | — |
| Object getAttribute(String name) | 该⽅法返回在该 session 会话中具有指定名称的 对象,如果没有指定名称的对象,则返回 null |
| void setAttribute(String name, Object value) | 该⽅法使⽤指定的名称绑定⼀个对象到该 session 会话 |
| boolean isNew() | 判定当前是否是新创建出的会话 |
- HttpSession
这个对象本质上也是一个“键值对”结构,允许程序员往 HttpSession 对象中储存任意的键值对结构(key 必须是 String,value 是一个 Object)
-
HttpSession 对象里面包含了若干键值对,里面的 key 和 value 都是程序员自定义的。
-
HttpSession 里面的每个键值对,称为 属性(Attribute).。
-
HeepSession 提供了两个方法:
getAttribute
:取键值对。setAttribute
:存键值对。
Cookie 类中的相关方法
| 方法 | 描述 |
| — | — |
| String getName() | 该方法返回 cookie 的名称。名称在创建后不能改 变。(这个值是 Set-Cooke 字段设置给浏览器的) |
| String getValue() | 该方法获取与 cookie 关联的值 |
| void setValue(String newValue) | 该方法设置与 cookie 关联的值。 |
补充用法注意事项:
Cookie 这里是可以保存任意的键值对,包括用户自定义的键值对,所以在获取键值对时,如果是一般的键值对,直接通过 getCookies
来获取。如果是特殊的键值对(保存 sessionId
的键值对),直接用 getSession
来自动的帮我们从 Cookie
中取 sessionId
了。
实现登录案例交互:
图例分析:
约定前后端交互接口:
-
登录 + 获取主页
- 编写一个简单的登陆页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录系统</title>
<script src="js/jquery-1.9.1.min.js"></script>
</head>
<body>
<div style="margin-top:50px;margin-left:40%;">
<h1 style="padding-left:50px;">用户登录</h1>
姓名:<input id="username" type="text" >
<p>
密码:<input id="password" type="password" >
<p>
<div style="padding-left:50px;">
<!-- 提交事件-->
<input type="button" value=" 提 交 " onclick="mySubmit()">
<input type="reset" value=" 重 置 ">
</div>
</div>
<script>
// ajax 请求登录
function mySubmit(){
// 非空效验
var username = jQuery("#username");
var password = jQuery("#password");
if(""==jQuery.trim(username.val())){
alert("请先输入用户名!");
username.focus();
return;
}
if(""==jQuery.trim(password.val())){
alert("请先输入密码!");
password.focus();
return;
}
jQuery.ajax({
url:"login", // 设置请求地址
type:"POST", // 设置请求方法类型
contentType:"application/x-www-form-urlencoded; charset=utf-8", // 请求类型
// dataType:"", // 响应的类型
data:{"username":username.val(),"password":password.val()}, // 请求参数
success:function(data){
alert(data);
}
});
}
</script>
</body>
</html>
- 登录逻辑
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 处理用户请求
String username = req.getParameter("username");
String password = req.getParameter("password");
// 判定用户名或者密码是否正确~~
// 正常来说这个判定操作是要放到数据库中进行存取的.
// 此处为了简单, 就直接在代码里写死了. 假设有效的用户名和密码是 "admin", "123"
if ("admin".equals(username) && "123".equals(password)) {
// 登录成功!
// 创建会话, 并保存必要的身份信息.
HttpSession httpSession = req.getSession(true);
// 往会话中存储键值对. 必要的身份信息
httpSession.setAttribute("username", username);
// 初始情况下, 把登录次数设为 0
httpSession.setAttribute("count", 0);
resp.sendRedirect("index");
} else {
// 登录失败!
resp.getWriter().println("login failed!");
}
}
}
- 主页逻辑
### 最后
**文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。**