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对象

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean name="/hello" class="cn.com.controller.HelloController"/>

    <context:component-scan base-package="cn.com.controller"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
</beans>

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

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

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

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

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

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

请求成功,搞定!

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值