UserController.java
@RequestMapping(value = "/user_login")
public String checkUserInfo(@ModelAttribute User user , HttpSession userInfoSession) {
User userlogin = userService.getUserbyName(user.getUsername()); //从数据库中找相同用户名的数据
if(userlogin!= null){ //用户输入的用户名存在
if(userlogin.getPassword().equals(user.getPassword())){ //比较用户输入的密码和数据库中保存的密码是否相同
userInfoSession.setAttribute("userlogin",userlogin);
return "redirect:/book_list";
}
else{
return "Login";
}
}
else{//用户输入的用户名不存在
return "Login";
}
}
在UserController中创建了一个userInfoSession,并赋予“userlogin”在JSP页面中,之间运用el表达式调用Session,如下代码所示:
<c:if test="${userlogin.getUsername() != null}">
当前用户:${userlogin.getUsername()} 权限:${userlogin.getPermission()}
</c:if>
<c:if test="${userlogin.getUsername() == null}">
<c:redirect url="login"></c:redirect>
</c:if>
另外,上面代码实现了用户未登入时,不能访问除登入界面的网页。
EL表达式判断字符串时,字符串需要加单引号,如下代码所示:
<c:if test="${userlogin.getPermission() == 'admin'}"> <!-- 字符串后面要加单引号 -->
<td><a href="book_delete/${book.id}">Delete</a></td>
</c:if>
另外,上面代码实现了判断登入用户权限,是否显示操作链接。
如上所示,运用JSTL可以在JSP页面中进行判断,但需要在jsp页面中引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>