springside4项目源码研读(1)

对springside4的研究:

项目是maven项目按照文档,进行项目环境的搭建,数据库数据也有。搭建完成后,就是代码的研读了。这个项目是后台使用的技术:spring+springmvc+jpa+shiro。

项目跑起来后,由于对shiro不是很了解,找了半天也没搞明白路径是怎么跳转的,web配置文件没有配置欢迎页但项目键入项目名字也跳转到了登录页,后来发现原来是shiro的问题,项目将所有请求路径都拦截下来了,统一有shiro权限系统管理,代码如下:

<span style="font-size:18px;"><span style="white-space:pre">	</span><filter>
		<filter-name>shiroFilter</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
		<init-param>
			<param-name>targetFilterLifecycle</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>shiroFilter</filter-name></span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>//拦截所有请求路径
		<url-pattern>/*</url-pattern>
	</filter-mapping></span>

下面是shiro权限拦截规则配置:

<span style="font-size:18px;"><span style="white-space:pre">	</span><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" /></span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>//<span style="font-family:Consolas, Courier New, Courier, mono, serif;color:#008200;"><span style="line-height: 18px;">登录路径,相当于web配置文件中的欢迎页配置(暂时这样认识,目前还不是很清楚是不是这个)</span></span>
		<property name="loginUrl" value="/login" /></span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>//认证成功,跳转/路径
		<property name="successUrl" value="/" />
		<property name="filterChainDefinitions">
			<value>
				/login = authc
				/logout = logout
				/static/** = anon
				/api/** = anon
				/register/** = anon
				/admin/** = roles[admin]
				/** = user
			</value>
		</property>
	</bean></span>

就此,我们就进入了springside4的登录页,下面我们研究下LoginController这个类。

<span style="font-size:18px;">@Controller
@RequestMapping(value = "/login")
public class LoginController {

	@RequestMapping(method = RequestMethod.GET)
	public String login() {
		return "account/login";
	}

	@RequestMapping(method = RequestMethod.POST)
	public String fail(@RequestParam(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM) String userName, <span style="white-space:pre">													</span>Model model) {</span>
<span style="font-size:18px;">
		model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, userName);
		return "account/login";
	}

}</span>

这段代码让我对@requestMapping()这个注解更加理解了:

@requestMapping()这个注解里有6个属性可以配置,详情请点这里。其中常用的事value、method、params。这里让我知道了@requestMapping()不光可以将value映射成请求路径,而且可以将method对应的请求方式映射到对应的方法中,这真是一个收获。

LoginController的代码可以看出,LoginController作用是打开login登录页面,由shiro配置文件配置的拦截规则可以看出,当认证不通过时返回login.jsp页面,当登录成功时,则请求路径变成 “/”

再看springmvc的配置文件:

<span style="font-size:14px; white-space: pre;">	</span><span style="font-size:18px;"><!-- 定义无需Controller的url<->view直接映射 -->
	<mvc:view-controller path="/" view-name="redirect:/task"/></span>
可以看出“/”这样的请求路径被springmvc拦截后,会重定向到/task路径。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值