Servlet 和Session的关系

jsp的Session和Servlet的Session本质上是一致的,区别是:jsp中session是作为隐式对象存在的,可以直接使用;Servlet中的session需要手动提取后才能使用.
HttpSession是 Java平台session机制的实现规范,因为它仅仅是个接口,具体到每个web应用服务器的提供商,除了对规范支持之外,仍然会有一些规范里没有规定的细微差异。
1、 session机制

http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在 服务器端,通过SessionID来区分不同的客户,session是以cookie或 URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出返回给客户端Cookie保存。
2、jsp和Servlet的关系

jsp是servlet的一种简化,jsp是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑
### servlet session关系 在 Java Web 应用中,`HttpServlet` 是处理 HTTP 请求的核心组件之一。每次浏览器向服务器发送请求时,都会创建一个新的 `HttpServletRequest` 对象来封装该次请求的信息,并调用相应的服务方法(如 `doGet()` 或者 `doPost()`)。在这个过程中可以利用 `HttpSession` 来跟踪用户的会话状态。 当用户首次访问应用时,如果之前没有建立过任何会话,则服务器端将会为此用户创建新的 `HttpSession` 实例;而对于后续来自同一用户的其他请求,在能够识别出它们属于同一个会话的情况下,就会重用已有的 `HttpSession` 而不是每次都新建实例[^2]。 ### 如何使用 Session 为了更好地理解如何操作 `HttpSession` ,下面给出一段简单的代码示例: ```java @WebServlet("/session-servlet") public class SessionServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取当前请求对应的会话对象 HttpSession session = req.getSession(); // 手动设置 "JSESSIONID" Cookie 的最大存活时间为 30 分钟 Cookie jsessionid = new Cookie("JSESSIONID", session.getId()); jsessionid.setMaxAge(30 * 60); jsessionid.setPath("/"); resp.addCookie(jsessionid); // 向会话中存入属性 String userName = (String)req.getParameter("username"); if(userName != null && !userName.isEmpty()){ session.setAttribute("user_name", userName); } // 输出响应信息给客户端 PrintWriter out = resp.getWriter(); out.println("<html><body>"); out.println("<h1>Session Demo</h1>"); out.printf("<p>Welcome %s!</p>", session.getAttribute("user_name")); out.println("</body></html>"); } } ``` 这段代码展示了怎样通过 `getSession()` 方法获得 `HttpSession` 对象并对其进行一些基本的操作,比如设定 cookie 过期时间保存用户登录名到会话中以便于跨页面保持一致的状态[^1]。 另外值得注意的是,除了编程方式控制外还可以配置 web.xml 文件中的 `<session-config>` 元素指定整个应用程序范围内统一的超时期限,默认情况下是以分钟作为单位[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值