1 Session的创建
package p7.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CreateSessionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * request.getSession()方法内部会判断 该客户端是否在服务器端已经存在 session * 如果该客户端在此服务器不存在 session 那么就会创建一个新的 session 对象 * 如果该客户端在此服务器已经存在 session 获得已经存在的该 session 返回 */ // 1 创建属于该客户端(会话)的私有的 session 区域 HttpSession session = request.getSession(); // 2 向session域中存入数据 session.setAttribute("name", "jerry"); // 3 获取该session对象的JSESSIONID编号 String id = session.getId(); //解决乱码问题 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("你的JSESSIONID是:"+id); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
2 从Session中获取数据
package p7.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class GetDataFromSessionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 从 session 中获得存储的数据 // 已经存在了,拿着的是客户端携带过来的JSESSIONID去找对应的区域。 HttpSession session = request.getSession(); // 从Session域中获取数据 Object attribute = session.getAttribute("name"); // 解决乱码 输出。 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(attribute+""); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
3 JSESSIONID的持久化操作
package p7.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CreateSessionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * request.getSession()方法内部会判断 该客户端是否在服务器端已经存在 session * 如果该客户端在此服务器不存在 session 那么就会创建一个新的 session 对象 * 如果该客户端在此服务器已经存在 session 获得已经存在的该 session 返回 */ // 1 创建属于该客户端(会话)的私有的 session 区域 HttpSession session = request.getSession(); // 2 向session域中存入数据 session.setAttribute("name", "李四"); // 3 获取该session对象的JSESSIONID编号 String id = session.getId(); // 4 手动创建一个存储 JSESSIONID 的 Cookie 为该 cookie 设置持久化时间 Cookie cookie = new Cookie("JSESSIONID",id); cookie.setMaxAge(6000); cookie.setPath("/WEBTest/"); //解决乱码问题 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("你的JSESSIONID是:"+id); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
4 Session的生命周期
5 案例-验证码检验功能实现和总结
package login; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //验证码校验 //获得页面输入的验证 String checkCode_client = request.getParameter("checkCode"); //获得生成图片的文字的验证码 String checkCode_session = (String) request.getSession().getAttribute("checkcode_session"); //比对页面的和生成图片的文字的验证码是否一致 if(!checkCode_session.equals(checkCode_client)){ request.setAttribute("loginInfo", "您的验证码不正确"); request.getRequestDispatcher("/login.jsp").forward(request, response); return; } //获得页面的用户名和密码进行数据库的校验 //...... } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }