有时候用户登陆的时候,前端页面需要显示欢迎xx登陆,或者链接跳转的时候需要传过去用户的id等一系列的信息。
这时候我们需要在控制层(Controller)将用户信息放入session。
代码如下:
@RequestMapping("/login")
public String login(String username , String password,HttpSession httpSession){
System.out.println(username);
if(adminBiz.login(username, password)){
Admin admin = new Admin();
admin.setUsername(username);
httpSession.setAttribute("admin", admin);
return "/success";
}else{
return "/error";
}
}
以上代码放入session的只是登陆用户的姓名,登陆成功后会跳转到success.jsp页面,我们需要在页面上获取后台放入session中的username
success.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>提示页面</title>
</head>
<body>
欢迎用户 ${admin.username}!</br>
登陆成功!
</body>
</html>
此页面代码需要注意的是,必须要在页面中加入
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
这里我们用到了EL表达式(${})来获取session中的username
运行后台程序,输入用户名(test)和密码(123),登陆成功后显示的效果如下:
-----------------------------------------------------------------------------------------------------------------------------
以上代码只是将登陆用户的username放入了session中,那么如果我们要获取登陆用户的全部信息怎么办呢?
首先修改Dao层代码,接口AdminDao代码如下:
//管理员登陆
public Admin login(String username, String password);//将类型定义为Admin
AdminDaoImpl代码如下:
// 管理员登陆
public Admin login(String username, String password) {
//查询结果用admin接收,并返回admin
Admin admin = (Admin) sessionFactory.getCurrentSession()
.createQuery("from Admin a where a.username=:i and a.password=:p").setParameter("i", username)
.setParameter("p", password).uniqueResult();
return admin;
}
AdminBiz接口代码如下:
//管理员登陆
public Admin login(String username,String password);
AdminBizImpl代码如下:
// 管理员登陆
@Override
public Admin login(String username, String password) {
Admin admin = adminDao.login(username, password);//接收数据层返回的admin
return admin;//返回admin到控制层
}
AdminController代码如下:
//管理员登陆
@RequestMapping("/login")
public String login(String username , String password,HttpSession httpSession){
Admin admin = adminBiz.login(username, password);//接收业务层返回的admin
httpSession.setAttribute("admin", admin);//将admin放入session
return "/success";//返回success.jsp
}
success.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>提示页面</title>
</head>
<body>
用户名:${admin.username}</br>
用户ID:${admin.id}</br>
用户密码:${admin.password }
登陆成功!
</body>
</html>
输入用户名和密码之后登陆成功跳转到success.jsp页面,效果如下: