网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 单个Cookie保存的数据不能超过 4k
- Cookie 和 Session 经常会在一起配合使用. 但是不是必须配合
4. 相关方法
HttpServletRequest 类中的相关方法
方法 | 描述 |
---|---|
HttpSession getSession() | 在服务器中获取会话. 参数如果为 true, 则当不存在会话时新建会话; 参数如果为 false, 则当不存在会话时返回 null |
Cookie[] getCookies() | 返回一个数组, 包含客户端发送该请求的所有的 Cookie 对象. 会自动把Cookie 中的格式解析成键值对. |
HttpServletResponse 类中的相关方法
方法 | 描述 |
---|---|
void addCookie(Cookie cookie) | 把指定的 cookie 添加到响应中. |
HttpSession 类中的相关方法
方法 | 描述 |
---|---|
Object getAttribute(String name) | 该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null. |
void setAttribute(String name, Object value) | 该方法使用指定的名称绑定一个对象到该 session 会话 |
boolean isNew() | 判定当前是否是新创建出的会话 |
Cookie 类中的相关方法
方法 | 描述 |
---|---|
String getName() | 该方法返回 cookie 的名称。名称在创建后不能改变。(这个值是 SetCooke 字段设置给浏览器的) |
String getValue() | 该方法获取与 cookie 关联的值 |
void setValue(String newValue) | 该方法设置与 cookie 关联的值。 |
注意事项
- 通过
HttpServletRequest.getCookies()
获取到请求中的一系列 Cookie 键值对.需要带有参数
当为true
的时候, 如果 session 不存在,就会创建,如果存在,就获取session然后返回
当为false
的时候,如果 session 不存在,就会返回null,如果存在,就获取session然后返回 - HTTP 的 Cooke 字段中存储的实际上是多组键值对. 每个键值对在 Servlet 中都对应了一个 Cookie对象.Cookie里主要有
key
和value
两个属性
5. 实现一个用户登录
① 创建 maven 项目,引入需要的库和目录
创建 webapp/WEB-INF/web.xml
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app\_2\_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
引入 Servlet
② 首先设计好前端后端交互接口
客户端给服务器第一次交互, 登录请求
登录账号,之后重定向到第二次交互
此时重定向到第二次交互,访问主页
③ 写 login.html (登录页面)
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/login.css">
</head>
<body>
<div id="leader">
<div class="login">
<form action="login" method="POST">
<div class="title">某某管理系统</div>
<div class="one"><input type="text" name="username" class="user"><input type="password" name="password" class="password"></div>
<div class="submit"><button>登 录</button></div>
</form>
</div>
</div>
</body>
</html>
common.css
\* {
padding: 0;
margin: 0;
}
html,body {
width: 100%;
height: 100%;
}
login.css
#leader{
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.login {
background-color: pink;
width: 400px;
height: 290px;
padding: 25px;
border-radius: 10px;
}
.login .title{
font-size: 30px;
font-weight: 600;
text-align: center;
margin: 5px;
}
.login .one{
display: flex;
flex-direction: column;
align-items: center;
}
.login .user,.login .password {
width: 380px;
height: 35px;
margin: 10px;
border-radius: 8px;
padding: 5px;
border: none;
}
.login .submit{
margin: 10px;
}
.login .submit button{
display: block;
margin: 0 auto;
width: 100px;
height: 50px;
background-color: orange;
color: white;
border-radius: 5px;
border: 0;
}
.login .submit button:active{
background-color: red;
}
④ 写 LoginServlet
这里是账号密码是直接固定好了
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 {
![img](https://img-blog.csdnimg.cn/img_convert/a1cdc190d135c1200b1b6997d33f2df9.png)
![img](https://img-blog.csdnimg.cn/img_convert/1d5675de0c7221de27bf1b89b1b251be.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
中...(img-8YWOk4nX-1715524835983)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**