服务器端(HttpSession)

Posted dotzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器端(HttpSession)相关的知识,希望对你有一定的参考价值。

阅读文本大概需要 2 分钟。


本篇是对 Servlet 中的关于 HttpSession 的介绍和讨论。


HttpSession 对象用于存储与特定客户端的整个会话,我们可以从 HttpSession 对象存储,查询和删除属性。任何 servlet 类都可以通过 HttpServletRequest 对象的getSession()方法中访问 HttpSession 对象。


工作原理

1. 在客户端的第一个请求中,Web 容器生成唯一的会话 ID,并通过响应将其返回给客户端,这是由 Web 容器创建的临时会话。

2. 客户端发送每个请求的会话 ID。使 Web 容器更容易识别请求的来源。

3. 该 Web 容器使用这个 ID,ID 为找到匹配的会话和会话与请求关联。


HttpSession接口

HttpSession重要的方法

getCreationTime()返回创建会话的时间,以格林威治标准时间 1970 年 1 月 1 日午夜以来,单位为毫秒

getId(),返回包含分配给会话的唯一标识符的字符串。

getLastAccessedTime() ,返回客户端上次发送与会话关联的请求的时间。

getMaxInactiveInterval()返回最大无效的时间间隔,以秒为单位,换句话说就是会话过了多长时间会失效。

invalidate(),使会话无效。

isNew(),判断会话是否是新的。

setMaxInactiveInterval(int interval),设置会话过期时间。


HttpSession示例

index.html

<form method="post" action="Validate">
  User: <input type="text" name="user" /><br/>
  Password: <input type="text" name="pass" ><br/>
  <input type="submit" value="submit">
</form>


web.xml

<web-app>
    <servlet>
        <servlet-name>Validate</servlet-name>
        <servlet-class>Validate</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Welcome</servlet-name>
        <servlet-class>Welcome</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Validate</servlet-name>
        <url-pattern>/Validate</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Welcome</servlet-name>
        <url-pattern>/Welcome</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>


Validate.java

public class Validate extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
{
        response.setContentType("text/html;charset=UTF-8");
        String name = request.getParameter("user");
        String pass = request.getParameter("pass");

        if(pass.equals("1234"))
        {
            //creating a session
            HttpSession session = request.getSession();
            session.setAttribute("user", name);
            response.sendRedirect("Welcome");
        }
    }
}


Welcome.java

public class Welcome extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession();
        String user = (String)session.getAttribute("user");
        out.println("Hello "+ user);
    }
}



funnyZhang,工科男

一条迷途的咸鱼,正在游向属于它的天地

恰同学少年风华正茂,数风流人物还看今朝


长按二维码关注funnyZhang

以上是关于服务器端(HttpSession)的主要内容,如果未能解决你的问题,请参考以下文章

HttpSession

JavaWeb之HttpSession

javaweb之HttpSession对象

服务端会话技术--Session

HttpSession 和 HttpSession

关于HttpSession