Session:会话控制,是服务器为了保存用户状态而创建的一个特殊的对象。=>用于存储信息的一个对象
当我们在服务端使用session时,首先要获取session,下面这个图就对服务器获取session的一些情况进行了说明。
Session常用方法
————————————————————————————————
resquest.getSession():得到请求游览器(客户端)对应的session。如果没有,那么就创建应该新的session。如果有那么就返回对应的session
setAttribute(String s, Object o):在session存放属性
getAttribute(String s):从session中得到s所对应的属性
========================================================
removeAttribute(String s):从session中删除s对应的属性
getId():得到session所对应的id
invalidate():使session立即无效
setMaxInactiveInterval(int i):设置session最大的有效时间。注意,这个有效时间是两次访问服务器所间隔的最大时间,如果超过最大的有效时间,那么这个session就失效了。
以房产管理系统登陆界面举例【login.jsp】
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> <link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/style.css"> <link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/index_work.css"> <style> #cont { text-align: center; margin-left: 240px; padding: 20px; } </style> </head> <body> <jsp:include page="top.jsp"/> <div id="cont" style="margin-top: 140px "> <form method="post" action="${pageContext.request.contextPath}/LoginServlet?type=trueLogin"> <div style="margin-top: 30px"> <label style="color: white"> 用户名: <input type="text" name="username"> </label> </div> <div style="margin-top: 30px"> <label style="color: white"> 密码: <input type="password" name="password"> </label> </div> <div style="margin-top: 30px; padding-left: 60px" > <select name="state"> <option>客户</option> <option>经纪人</option> <option>管理员</option> </select> </div> <div style="margin-top:50px"> <input type="submit" value="登录"> <input type="button" value="注册" onclick="location.href='/LoginServlet?type=toRes'"> </div> <jsp:include page="bottom.jsp"/> </form> <h1 style="color: white">${mes}</h1> </div> </body> <%request.getSession().setAttribute("mes", null);%> </html>
【LoginServlet.java】
@WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置对客户端请求进行重新编码,防止乱码 req.setCharacterEncoding("UTF-8"); //它是一种获取参数的方法,把jsp文件中的数据读取出来,然后就可以封装利用 String type = req.getParameter("type"); // 校验 System.out.println(type); if (type == null) { /* 在学习jsp与后台数据交互内容时,我们会接触到两种类型的跳转 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp 即在servlet中调用转发语句 假设你去办理某个执照, 重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。 转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。 */ req.getRequestDispatcher("/WEB-INF/login.jsp").forward(req, resp); } switch (type) { case "trueLogin": { // 接收信息,得到用户名和密码 String userName = req.getParameter("username"); String passWord = req.getParameter("password"); String state = req.getParameter("state"); if (userName == null || passWord == null || "".equals(userName.trim()) || "".equals(passWord.trim())) { req.getSession().setAttribute("mes", "您的账号或密码不能为空!"); resp.sendRedirect("/LoginServlet"); return; } if (state.equals("客户")) { CustomerServiceImpl customerService = new CustomerServiceImpl(); Customer customer = customerService.login(userName); if (customer == null) { req.getSession().setAttribute("mes", "您的账号不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); return; } if (customer.getPassword().equals(passWord)) { req.getSession().setAttribute("customer", customer); resp.sendRedirect("/Customer?type=toIndividual"); } else { req.getSession().setAttribute("mes", "您的密码不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); } } if (state.equals("经纪人")) { RealestateServiceImpl realestateService = new RealestateServiceImpl(); Realestate realestate = realestateService.login(userName); if (realestate == null) { req.getSession().setAttribute("mes", "您的账号不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); return; } if (realestate.getPassword().equals(passWord)) { req.getSession().setAttribute("realestate", realestate); resp.sendRedirect("/Property?type=toToIndividual"); return; } else { req.getSession().setAttribute("mes", "您的密码不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); } } if (state.equals("管理员")) { AdminService adminService = new AdminServiceImpl(); AdminEntity adminEntity = adminService.getAdminByUserName(userName); if (adminEntity == null) { req.getSession().setAttribute("mes", "您的账号不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); return; } if (adminEntity.getPwd().equals(passWord)) { req.getSession().setAttribute("adminEntity", adminEntity); resp.sendRedirect("/AdminServlet?type=admin"); return; } else { req.getSession().setAttribute("mes", "您的密码不正确!请重新输入..."); resp.sendRedirect("/LoginServlet"); return; } } break; } case "toRes": { req.getRequestDispatcher("/WEB-INF/register.jsp").forward(req, resp); break; } case "trueRes": { String userName = req.getParameter("username"); String passWord = req.getParameter("password"); String z_passWord = req.getParameter("z_password"); Integer state = Integer.valueOf(req.getParameter("state")); if (state == null || "".equals(state) || userName == null || passWord == null || z_passWord == null || userName.trim().equals("") || passWord.trim().equals("") || z_passWord.trim().equals("")) { req.getSession().setAttribute("mes", "您的账号、密码、确认密码不能为空!"); req.getRequestDispatcher("/WEB-INF/register.jsp").forward(req, resp); } else if (passWord.equals(z_passWord)) { AdminService adminService = new AdminServiceImpl(); AdminEntity adminEntity = new AdminEntity(); adminEntity.setUserName(userName); adminEntity.setPwd(passWord); adminEntity.setState(state); boolean b = adminService.addUser(adminEntity); if (b) { req.getSession().setAttribute("mes", "注册成功..."); resp.sendRedirect("/LoginServlet"); } } else { req.getSession().setAttribute("mes", "您输入的两次密码不一致!"); req.getRequestDispatcher("/WEB-INF/register.jsp").forward(req, resp); } break; } case "loginExit": { resp.sendRedirect("/LoginServlet"); } } } }
参考链接:https://blog.csdn.net/m0_51545690/article/details/123384986
标签:getSession,setAttribute,resp,req,request,Session,nbsp,passWord From: https://www.cnblogs.com/gbrr/p/16890602.html