JavaEE——Servlet中的session
创始人
2024-02-09 04:32:34
0

之前的博客中提到,cookie是为了浏览器能够在本地保存数据而产生的机制,是在浏览器工作的。而session则是与之对应的,在客户端工作的。一个服务器对应多个客户端,每个客户端都有自己的session,以sessionId为key,session对象为值,存放在内存的哈希表中

session和cookie相关api

HttpRequest

方法功能
HttpSession getSession()在服务器中获取会话. 参数如果为 true, 则当不存在会话时新建会话; 参数如果为 false, 则当不存在会话时返回 null
Cookie[] getCookies()返回一个数组, 包含客户端发送该请求的所有的 Cookie 对象. 会自动把Cookie 中的格式解析成键值对.

HttpResponse

方法功能
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 的名称。
String getValue()获取与 cookie 关联的值
void setValue(String newValue)设置与 cookie 关联的值。

实例

实现用户登陆界面

login.html

使用form表单,实现用户名和密码的post请求提交



登陆

LoginServlet

获取前端提交的username和password,与正确的username和password进行比较,如果正确就创建会话,将username和123的键值对存入哈希表,然后页面重定向到index,

package login;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 {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");if("123".equals(username) && "1234".equals(password)){//创建会话HttpSession session = req.getSession(true);session.setAttribute("username","123");resp.sendRedirect("index");} else {resp.setStatus(403);resp.setContentType("text/html; charset=utf8");resp.getWriter().write("用户名或密码错误!");}}
}

IndexServlet

获取session,如果session为空就退出,否则获取哈希表中username对应的值,将其打印在页面上

package login;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("/index")
public class IndexServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//此处是false表示,如果不存在,就不创建,返回空HttpSession session = req.getSession(false);resp.setContentType("text/html; charset=utf8");if(session == null){resp.getWriter().write("尚未登陆!禁止访问!");resp.setStatus(403);return;}String username = (String) session.getAttribute("username");resp.getWriter().write(username + "欢迎回来!");}
}

项目展示

在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...