发布时间 : 星期六 文章SpringMVC学习 - 图文更新完毕开始阅读
Spring MVC+Bootstrap
1.Shiro
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。 导入标签库
<%@ taglib prefix=\标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。
1.1 guest标签
用户没有身份验证时显示相应信息,即游客访问信息。
1.2 user标签
欢迎[
用户已经身份验证/记住我登录后显示相应的信息。
1.3 authenticated标签
用户[
用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的。
1.4 notAuthenticated标签
用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。
1.5 principal标签
显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。 相当于Subject.getPrincipals().oneByType(String.class)。 相当于((User)Subject.getPrincipals()).getUsername()。 1.6 hasRole标签 用户[ 如果当前Subject有角色将显示body体内容。 1.7 hasAnyRoles标签 用户[ 如果当前Subject有任意一个角色(或的关系)将显示body体内容。 1.8 lacksRole标签 用户[ 如果当前Subject没有角色将显示body体内容。 1.9 hasPermission标签 用户[ 如果当前Subject有权限将显示body体内容。 1.10 lacksPermission标签 如果当前Subject没有权限将显示body体内容。 2. ${pageContext.request.contextPath} ${pageContext.request.contextPath} JSP取得绝对路径 ${pageContext.request.contextPath}样是通过 get方法去取的,先 pageContext.getRequest()得到HttpServletRequest对象,再调用 HttpServletRequest的getContextPath方法 作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的。 El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 2.1问题 1)采用相对路径遇到的问题 相对路径固然比较灵活,但如果想复制页面内的代码却变得比较困难,因为不同的页面具有不同的相对路径,复制后必须修改每一个连接的路径。 如果页面被多于一个的页面所包含,那么被包含页面中的相对路径将是不正确的。 如果采用Struts的Action返回页面,那么由于页面路径与Action路径不同,使得浏览器无法正确解释页面中的路径,如页面为/pages/cust/cust.jsp,图片所有目录为/images/title.gif,这时在/pages/cust/cust.jsp中的所用的路径 为”http://images.cnblogs.com/title.gif”,但是如果某一个Action的Forward指向这个JSP文件,而这个Action的路径为/cust/manage.do,那么页面内容中”http://images.cnblogs.com/title.gif”就不再指向正确的路径了。 解决以上问题似乎只有使用绝对路径了。 2)采用绝对路径遇到的问题 随着不同的Web应用发布方式,绝对路径的值也不同。如Web应用发布为MyApp,则路径”/MyApp/images/title.gif”是正确的,但发布为另一应用时如MyApp2,这个路径就不对了,也许这个情况比较少,但以default方式发布Web应用时以上绝对路径也不同:”/images/title.gif”。 2.2解决方案 1)采用绝对路径,但为了解决不同部署方式的差别,在所有非struts标签的路径前加