springMVC 学习之第二篇(注解篇)

接着上一篇基础上讲,本次我们使用注解的方式。

在之前的代码基础上,只需要修改两个地方(控制器代码和springmvc的配置

第一个就是HelloController.java。为了不影响之前的代码,我新建一个类,命名

AnnotationController。代码如下:
@Controller
public class AnnotationController {

    Log log = LogFactory.getLog(AnnotationController.class);

    @RequestMapping("/helloAnno")
    public ModelAndView helloAnnotation(HttpServletRequest request, HttpServletResponse response){
        log.info("进入注解controller");
        ModelAndView mv =  new ModelAndView();
        mv.addObject("message","注解请求");
        mv.setViewName("index.jsp");
        return mv;
    }
}

@Controller 注释类型用于指示Spring类是一个控制器

@RequestMapping 注释类型用来映射一个请求和请求的方法,“/helloAnno”,表示请求由helloAnno方法进行处理。返回了一个ModelAndView对象

接下来需要修改配置,配置内容如下:




    

    
    
    

在之前的配置下添加了三行,用于扫描spring注解的相关的类。如果扫描到,则把这些类注册为spring的bean。如本例中 当扫描到 @Controller时,就把这个类注册bean.没有注解前是手动注册的,如红色标注的地方。

接下来配置了srping bean,一个是annotation 类型的处理映射器 RequestMappingHandlerMapping 明显用于查找请求方法映射的。你请求 /helloAnno过来时,去查找对应的方法,就是靠这个类

还配置了一个是 annotation 类型的处理器适配器 RequestMappingHandlerAdapter 这个用来完成对 @RequestMapping 标注方法的调用。如果没有会报错的,前面那个是用来查找映射的请求方法,后面一个是调用

注意 配置了 RequestMappingHandlerMapping 后,原来手动配置的请求方式就不生效了,红色标注的地方。

这个配置了就意味着从注解里查找对应的映射方法了。

启动服务,浏览器访问结果如下图:

springMVC 学习之第二篇(注解篇)_第1张图片

请求成功,搞定!

第一篇说没有注解之前的一些缺点:

一:一个类只能处理一个请求,用注解就不会有这样的限制,一个类中可以写多个 @requestMapping,都能映射到。

二:注解之前的返回类型只能是ModelAndView,用注解不用限制。可以返回String,也可以void 不返回。返回String时需结合其他注解一起使用,否则默认都是把返回的内容识别为一个视图地址的

你可能感兴趣的:(spring)