SSM总结:Session篇
web 应用通常会引入 Session,用来在服务端和客户端之间保存一系列动作/消息的状态。
比如:网上购物维护 user 登录信息直到 user 退出。
在 user 登录后,后面当我们需要user信息时,都需要从 Session 中获取。这其中就会涉及到程序去访问 Session属性的问题。在java中,Servlet 规范提供了 HttpSession对象来满足这种需求。开发人员可以从 HttpServletRquest对象得到 HttpSession,再从HttpSession中得到状态信息。
基于Servlet的标准代码是:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { User user = (User)req.getSession().getAttribute("currentUser"); }
保存Session:
HttpSession session = request.getSession(); session.setAttribute("buyer", buyer);
获取Session:
HttpSession session = request.getSession(); Buyer buyer = (Buyer) session.getAttribute("buyer");销毁Session:
session.invalidate();在SSM框架中,Session:面向接口编程,我们可以创建一个Session供应类:写成(接口-实现类)的方式,例如:SessionProvider-HttpSessionProvider
写成接口然后再将SessionProvider托管给Spring,好处:注入Spring,在项目启动时可以直接准备好,速度快。
@Autowired private SessionProvider sessionProvider;
public class HttpSessionProvider implements SessionProvider { @Override public void setAttribute(HttpServletRequest request, String name, Serializable value) { HttpSession session = request.getSession(); session.setAttribute(name, value); } @Override public Serializable getAttribute(HttpServletRequest request, String name) { HttpSession session = request.getSession(false); if (session != null) { return(Serializable) session.getAttribute(name); } return null; } @Override public void logout(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } } @Override public String getSessionId(HttpServletRequest request) { return request.getSession().getId(); } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。