什么是Session;request.getSession().setAttribute()

什么是Session;request.getSession().setAttribute()

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" %>

登录

用户名: 

   密码: 

      

        

${mes}

<%request.getSession().setAttribute("mes", null);%>

【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

相关推荐

12306出票失败的原因
365bet官网网投

12306出票失败的原因

📅 07-02 👁️ 6465
为什么网速很快下载很慢 网速很快下载很慢的原因
bst365老牌体育

为什么网速很快下载很慢 网速很快下载很慢的原因

📅 09-16 👁️ 1510
带你参观陈建斌的豪宅,一家人围坐在客厅吃饭,生活太接地气了