0
点赞
收藏
分享

微信扫一扫

Session技术主要应用

非衣所思 2022-04-16 阅读 46
java

1.什么是Session

Session是在服务器保存客户端信息的一种技术

2.使用HttpSession管理会话

在java中,使用javax.servlet.http.HttpSession类来实现session会话。每个请求者对应一个Session对象,客户的所有状态信息都保存在该对象里。当用户第一次请求服务器时,就创建Session对象。它以key-value的形式进行保存,通过getAttribute(String key)和setAttribute(String key,Object value)方法读写客户状态信息。Servlet里通过request.getSession()方法获取该客户的Session对象,

例如:

HttpSession session = request.getSession(); // 获取Session对象

session.setAttribute(“loginTime”, new Date()); // 设置Session中的属性

Session应用:

一、在Session中保存数据

public class Session01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");//用于设置发送到客户端的响应的内容类型
        // 获取Session
        HttpSession session = req.getSession();
        // 在session中保存数据
        session.setAttribute("userName","中国人");
        // 获取Session的id
        String sessionId = session.getId();
        //判断Session是不是新创建的
        // isNew()该方法用于判断当前用户是否为新用户,可以判断用户是否刷新了当前页面。
        // 它的返回值为 boolean 类型。返回值:如果当前用户是新用户则返回 true,否则返回 false。
        if (session.isNew()){
            resp.getWriter().print("session创建成功,ID"+sessionId);
        }else {
            resp.getWriter().print("session以及在服务器中存在了,ID"+sessionId);
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

二、获取Session中保存的数据

public class sessionGetData extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");//用于设置发送到客户端的响应的内容类型
        //获取Session
        HttpSession session = req.getSession();
       String userName = (String) session.getAttribute("userName");
       resp.getWriter().print(userName);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

三、手动注销毁Session

public class Session02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.removeAttribute("userName");
        // 手动注销Session
        session.invalidate();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

四、配置web.xml

<servlet>
    <servlet-name>Session01</servlet-name>
    <servlet-class>com.Zeng.session.Session01</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Session01</servlet-name>
    <url-pattern>/session01</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Session02</servlet-name>
    <servlet-class>com.Zeng.session.Session02</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Session02</servlet-name>
    <url-pattern>/session02</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>sessionGetData</servlet-name>
    <servlet-class>com.Zeng.session.sessionGetData</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>sessionGetData</servlet-name>
    <url-pattern>/sessionGetData</url-pattern>
</servlet-mapping>

五、设置Session的有效时间在web.xml配置

<!--设置Session有效时间-->
<session-config>
    <session-timeout>15</session-timeout>//设置Session有效时间为15min
</session-config>
举报

相关推荐

0 条评论