<mvc:annotation-driven/>标签的使用

171 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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目录下的动态资源不可以直接访问,必须要通过请求转发的方式进行访问。这样避免了通过地址栏直接对资源的访问。重定向也无法访问动态资源。

项目案例:

页面结构图:

image.png

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";\
    }\
}

运行结果:

![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/38a5bb0a4ba24eebbea340273aa28fe9~tplv-k3u1fbpfcp-watermark.image?)

SpringMVC拦截器

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