持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
mvc:annotation-driven/标签的使用
mvc:annotation-driven/会自动注册两个bean,分别为DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。 是springmvc为@controller分发请求所必须的。除了注册了这两个bean,还提供了很多支持。
1)支持使用ConversionService 实例对表单参数进行类型转换;
2)支持使用 @NumberFormat 、@DateTimeFormat;
3)注解完成数据类型的格式化;
4)支持使用 @RequestBody 和 @ResponseBody 注解;
5)静态资源的分流也使用这个标签;
资源在WEB-INF目录下
很多企业会将动态资源放在WEB-INF目录下,这样可以保证资源的安全性。在WEB-INF目录下的动态资源不可以直接访问,必须要通过请求转发的方式进行访问。这样避免了通过地址栏直接对资源的访问。重定向也无法访问动态资源。
项目案例:
页面结构图:
action:
@Controller\
public class ShowAction {\
@RequestMapping("/showIndex")\
public String showIndex(){\
System.*out*.println("index.............");\
return "index";\
}\
@RequestMapping("/showMain")\
public String showMain(){\
System.*out*.println("main.............");\
return "main";\
}\
@RequestMapping("/showLogin")\
public String showLogin(){\
System.*out*.println("login.............");\
return "login";\
}\
@RequestMapping("/login")\
public String login(String name, String pwd, HttpServletRequest request){\
if("admin".equals(name) && "123".equals(pwd)){\
return "main";\
}\
request.setAttribute("msg","用户名或密码不正确!");\
return "login";\
}\
}
运行结果:

SpringMVC拦截器
SpringMVC 中的 Interceptor 拦截器,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行处理器之前”。当然,在处理器映射器映射出所要执行的处理器类时,已经将拦截器与处理器组合为了一个处理器执行链,并返回给了中央调度器。