springside4项目源码研读(1)

对springside4的研究:

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

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

	
		shiroFilter
		org.springframework.web.filter.DelegatingFilterProxy
		
			targetFilterLifecycle
			true
		
	
	
		shiroFilter
		//拦截所有请求路径
		/*
	

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

	
		
		//登录路径,相当于web配置文件中的欢迎页配置(暂时这样认识,目前还不是很清楚是不是这个)
		
		//认证成功,跳转/路径
		
		
			
				/login = authc
				/logout = logout
				/static/** = anon
				/api/** = anon
				/register/** = anon
				/admin/** = roles[admin]
				/** = user
			
		
	

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

@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, 													Model model) {

		model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, userName);
		return "account/login";
	}

}

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

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

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

再看springmvc的配置文件:

	
	
可以看出“/”这样的请求路径被springmvc拦截后,会重定向到/task路径。


你可能感兴趣的:(每天进步一点)