2024年C C++最全Cookie 和 Session_set-cookie session,C C++程序员如何通过跳槽薪资翻倍

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. 单个Cookie保存的数据不能超过 4k
  2. CookieSession 经常会在一起配合使用. 但是不是必须配合

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里主要有 keyvalue 两个属性

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)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值