第六章:继承web,路径匹配、Shiro标签的使用,会话机制
在第五章基础上添加功能,工程结构:
一、路径匹配
? 匹配单个字符,正确路径/admin, 那么/admin?=authc可以匹配admin + 单个字符,admin12就不能匹配
* 能匹配任意字符,admin,admin1, admin12, 都可以匹配,多层路径不能匹配,比如admin12/12
** 匹配多层路径,admin/** 能匹配admin/1222/12112...., 但是admin12/1545不能匹配
二、shiro标签
【角色标签】
在success.jsp页面添加:注意,页面的shiro标签的name要和shiro.ini的角色名称一致,否则没有效果
<h1>欢迎您!</h1> <shiro:hasRole name="admin"> 欢迎有admin角色用户! </shiro:hasRole>
用java1234/123456登录,该用户有admin角色,结果:
用jack=123登录,该用户没有admin角色,结果:
-------------------------------
【权限标签】
<h1>欢迎您!</h1>
<shiro:hasRole name="admin">
欢迎有admin角色的用户!
</shiro:hasRole>
<shiro:hasPermission name="student:create">
欢迎有student:create权限的用户!
</shiro:hasPermission>
用java1234/123456登录,该用户没有student:create权限,结果:
用jack=123登录,该用户有student:create权限,结果:
--------------------------
显示用户身份信息:
<h1>欢迎您!</h1> <shiro:hasRole name="admin"> 欢迎有admin角色的用户!<shiro:principal/> </shiro:hasRole> <shiro:hasPermission name="student:create"> 欢迎有student:create权限的用户!<shiro:principal/> </shiro:hasPermission>
用java1234/123456登录, 结果:
用jack/123登录,结果:
--------------------------------------------
Shiro的会话机制
用户登录成功后获取用户一些信息, 在LoginServlet.java中添加:
// Shiro的会话机制 Session session = subject.getSession(); System.out.println("sessionId: " + session.getId()); System.out.println("sessionHost: " + session.getHost()); System.out.println("sessionTimeout: " + session.getTimeout()); // 默认为半个小时
测试:
---------------------------
session会话中的数据,在LoginServlet.java中添加:
session.setAttribute("sessionInfo", "session会话中的数据!");
success.jsp
${sessionInfo } <hr>
测试: