spring+springmvc+shiro环境集成

JAVA ginotang 1144℃ 0评论

shiro整合spring

依然是创建一个web项目,把必要的包入到到项目中。需要的包如下:

shiro dependencies

编写web.xml配置文件

和spring集成的时候,我们使用的过滤器是DelegatingFilterProxy,这个过滤器的作用是从当前的上下文中获取和此过滤器名称相同的bean,另外,既然我们是和spring集成,那必须要做的一件事就是加载spring的配置文件,这个由ContextLoaderListener负责。

编写applicationContext配置文件

前面说过,web.xml文件中的DelegatingFilterProxy在applicationContext中寻找一个id和它的名字相同的bean,这里使用的是shiroFilter,所以,applicationContext文件中首先要定义一个id为shiroFilter的bean,这个bean类型是ShiroFilterFactoryBean,它是shiro的主要类,用于配置url的访问规则:例如登录入口,url的访问权限等。

由于我们的账号信息需要从数据库中取出来,最简单的方式就是使用预定义的JdbcRealm类,连接数据库之前必须要配置数据源,所以,applicationContext文件中可以看到数据源的配置信息。另外,ShiroFilterFactoryBean中的SecurityManager类型必须是WebSecurityManager接口的子类。

需要注意的是:JdbcRealm默认使用sql语句select password from users where username=?查询账户信息。如果你希望根据需求使用不同的语句,需要明确设置JdbcRealm的authenticationQuery的属性值。

至此,shiro整合spring完成。

整合SpringMVC

既然已经整合了spring,那么,使用servlet作为控制器已经没有什么好处。可选的替代方案有struts2和springmvc,这里选择的是springmvc。整合springmvc还需要导入两个包:spring-webmvc和spring-aop。

编写web.xml配置文件

springmvc的入口是DispatcherServlet,由于前面我们使用的配置文件名称为applicationContext.xml,而DispatcherServlet默认的配置文件名称是:它的名称-servlet.xml。例如如果DispatcherServlet的servlet-name是springmvc,那么配置文件名称就是springmvc-sevlet.xml。所以我们必须明确设置配置文件的名称。

springmvc中的url-pattern不能是 /*,否则会报错导致程序运行不起来。

编写applicationContext配置文件

applicationContext文件的主要功能是配置web控制器,springmvc有多种方式设置控制器,最简单的就是使用注解控制器,使用注解控制器的前提是开启组件扫描。下面是applicationContext文件新增的springmvc部分的配置。

开启控制器shiro注解支持

注意:shrio的注解对servlet不起作用,只对springmvc的控制器生效。

编写测试控制器

下面是控制器的伪代码

完整项目代码

web.xml

applicationContext.xml

控制器代码

log.jsp

admin.jsp

 

转载请注明:Pure nonsense » spring+springmvc+shiro环境集成

喜欢 (1)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x