SpringMVC学习 - 图文

发布时间 : 星期六 文章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标签

用户[]拥有角色admin

如果当前Subject有角色将显示body体内容。

1.7 hasAnyRoles标签

用户[]拥有角色admin或user

如果当前Subject有任意一个角色(或的关系)将显示body体内容。

1.8 lacksRole标签

用户[]没有角色abc

如果当前Subject没有角色将显示body体内容。

1.9 hasPermission标签

用户[]拥有权限user:create

如果当前Subject有权限将显示body体内容。 1.10 lacksPermission标签

]没有权限org:create

如果当前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标签的路径前加

联系合同范文客服:xxxxx#qq.com(#替换为@)