Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。
导入标签库
- <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。
guest标签
- <shiro:guest>
- 欢迎游客访问,<a href="${pageContext.request.contextPath}/login.jsp">登录</a>
- </shiro:guest>
用户没有身份验证时显示相应信息,即游客访问信息。
user标签
- <shiro:user>
- 欢迎[<shiro:principal/>]登录,<a href="${pageContext.request.contextPath}/logout">退出</a>
- </shiro:user>
用户已经身份验证/记住我登录后显示相应的信息。
authenticated标签
- <shiro:authenticated>
- 用户[<shiro:principal/>]已身份验证通过
- </shiro:authenticated>
用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的。
notAuthenticated标签
<shiro:notAuthenticated> 未身份验证(包括记住我) </shiro:notAuthenticated>
用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。
principal标签
<shiro: principal/>
显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。
- <shiro:principal type="java.lang.String"/>
相当于Subject.getPrincipals().oneByType(String.class)。
- <shiro:principal type="java.lang.String"/>
相当于Subject.getPrincipals().oneByType(String.class)。
- <shiro:principal property="username"/>
相当于((User)Subject.getPrincipals()).getUsername()。
hasRole标签
- <shiro:hasRole name="admin">
- 用户[<shiro:principal/>]拥有角色admin<br/>
- </shiro:hasRole>
如果当前Subject有角色将显示body体内容。
hasAnyRoles标签
- <shiro:hasAnyRoles name="admin,user">
- 用户[<shiro:principal/>]拥有角色admin或user<br/>
- </shiro:hasAnyRoles>
如果当前Subject有任意一个角色(或的关系)将显示body体内容。
lacksRole标签
- <shiro:lacksRole name="abc">
- 用户[<shiro:principal/>]没有角色abc<br/>
- </shiro:lacksRole>
如果当前Subject没有角色将显示body体内容。
hasPermission标签
- <shiro:hasPermission name="user:create">
- 用户[<shiro:principal/>]拥有权限user:create<br/>
- </shiro:hasPermission>
如果当前Subject有权限将显示body体内容。
lacksPermission标签
- <shiro:lacksPermission name="org:create">
- 用户[<shiro:principal/>]没有权限org:create<br/>
- </shiro:lacksPermission>
如果当前Subject没有权限将显示body体内容。
另外又提供了几个权限控制相关的标签:
导入自定义标签库
- <%@taglib prefix="zhang" tagdir="/WEB-INF/tags" %>
示例
- <zhang:hasAllRoles name="admin,user">
- 用户[<shiro:principal/>]拥有角色admin和user<br/>
- </zhang:hasAllRoles>
- <zhang:hasAllPermissions name="user:create,user:update">
- 用户[<shiro:principal/>]拥有权限user:create和user:update<br/>
- </zhang:hasAllPermissions>
- <zhang:hasAnyPermissions name="user:create,abc:update">
- 用户[<shiro:principal/>]拥有权限user:create或abc:update<br/>
- </zhang:hasAnyPermissions>
hasAllRoles表示拥有所有相关的角色;hasAllPermissions表示拥有所有相关的权限;hasAnyPermissions表示拥有任意一个相关的权限。
相关推荐
第九章 JSP标签 第十章 会话管理 第十一章 缓存机制 第十二章 与Spring集成 第十三章 RememberMe 第十四章 SSL 第十五章 单点登录 第十六章 综合实例 第十七章 OAuth2集成 第十八章 并发登录人数控制 第十九章 动态...
#### 第九章 JSP标签 - **Shiro JSP标签**: 提供了一系列用于简化安全逻辑处理的JSP标签。 #### 第十章 会话管理 **会话** - **Session**: 会话对象,用于存储用户的会话信息。 **会话管理器** - **Session...
### 第九章:JSP标签 Shiro提供了一系列JSP标签,用于在Web应用中执行安全相关的操作,如显示登录链接、隐藏未授权内容等。 ### 第十章:会话管理 #### 10.1 会话 会话是Web应用中用于跟踪用户状态的一种机制。...
#### 九、JSP 标签 - **概念**:Shiro 提供了一系列 JSP 标签,用于页面上的安全控制。 #### 十、会话管理 - **概念**:管理用户的会话信息,包括会话的创建、销毁、存储等。 - **组件**: - **会话**:存储用户...
- Shiro提供了一系列JSP标签,用于在JSP页面中进行权限检查或其他安全相关的操作。 #### 十、会话管理 - **会话**:会话管理是Shiro的重要功能之一,它帮助跟踪用户的状态。 - **会话管理器**:SessionManager负责...
- **实现**:通过 Shiro 提供的 JSP 标签库进行页面元素的显示和隐藏。 #### 十、会话管理 - **概念**:对用户的会话进行管理,包括会话的创建、维护和销毁。 - **实现**: - **Session**:表示用户的会话。 - *...
JSP文件包含静态内容(HTML、CSS、JavaScript)和动态内容(Java代码片段或JSP标签)。 **2. JSP生命周期** JSP在服务器上经历三个主要阶段:翻译、编译和执行。翻译阶段,JSP文件被转换为一个JavaServlet源代码;...
开发者可以通过JSP标签库(Tag Libraries)和脚本元素来实现页面逻辑,例如根据用户登录状态显示不同内容,或者根据查询参数显示特定的图书列表。 2. **Servlet**:Servlet是Java中用于处理HTTP请求的服务器端组件...
JSP的核心概念包括JSP指令(如page、include、taglib)、脚本元素(声明、脚本let、表达式)、以及JSP标签(自定义标签)。在企业快信系统中,JSP可能会用于创建用户界面,处理表单提交,以及与服务器端的JavaBeans...
5. **标签库(Tag Libraries)**:JSP提供了一系列预定义的标签库,如JSTL(JavaServer Pages Standard Tag Library),可以帮助开发者更方便地处理权限控制,例如`<c:if>`和`<sec:authorize>`标签用于根据用户权限...
在JSP中,JSP页面通常作为视图,Servlet或自定义标签库作为控制器,而业务逻辑和数据访问在模型中实现。 4. **数据库连接**:B2B系统需要存储大量产品信息、用户数据、订单记录等,因此数据库管理是核心部分。JDBC...
4. **标签库**:源码可能包含了自定义的JSP标签库(Tag Libraries),如EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),它们提供了简化JSP页面的表达式和控制流程的功能。 5. **...
它通过声明式和脚本元素实现动态内容生成,比如使用`<jsp:include>`、`<jsp:useBean>`、`<jsp:setProperty>`等动作标签。 2. **JavaBean规范**:JavaBean是一种符合特定规范的Java类,通常用于封装数据和业务逻辑。...
JSP页面由HTML或XML标签和嵌入的Java代码组成,这些Java代码可以处理用户的请求并生成响应。 2. **前端设计**:在"佳美网络购物中心"中,前端设计涉及到UI/UX设计原则,包括商品展示、购物车、结算流程等页面的布局...
9. **安全**:可能涉及Spring Security或Shiro进行用户认证和授权。 10. **文件上传**:了解如何处理用户上传的照片,包括文件大小限制、格式检查、存储策略等。 11. **支付集成**:如果系统支持在线支付,可能会...
开发者可以使用JSP标签库(Tag Libraries)来实现复用和模块化,比如JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)用于简化页面表达式。 2. 文件上传:北雨下载系统提供了文件上传...
"99.zip" 文件是一个包含商城管理系统的压缩包,它主要使用了JSP(Java Server Pages)技术。JSP是Java平台上的一个用于构建动态网站的技术,它允许开发者将静态HTML内容与动态Java代码结合起来,使得网页内容可以...
再者,JSTL(JavaServer Pages Standard Tag Library)是标准标签库,提供了许多预定义的标签,可以替代JSP中的脚本元素,使代码更加清晰,符合MVC设计模式。同时,理解JSP和Servlet如何与模型对象交互,例如通过...
4. **jsp技术**:JSP(JavaServer Pages)用于生成动态网页,它将HTML、CSS、JavaScript与Java代码混合编写,通过JSP标签和脚本元素来实现动态内容的展现。在本系统中,jsp主要负责视图渲染,为用户提供交互式的界面...
开发者使用JSP标签、脚本元素和表达式语言来构建视图层,处理用户界面的展示和交互。 6. **开发环境**:MyEclipse是基于Eclipse的一个集成开发环境,特别适合Java EE项目的开发。它提供了丰富的特性,如代码提示、...