Spring MVC常用注解

在我的上篇博客中《Spring MVC简介》中,我们做了一个特别简单的项目,来大概描述了一下Spring MVC的原理和处理请求的流程,但是我们是通过让controller包下的类通过实现Controller接口来实现的控制器,这个控制器可以处理单一的请求

但是如果我们有多个请求的话,就需要创建多个类来继承Controller接口,这就比较复杂,所以在实际开发中我们推荐使用 注解 来进行开发

Spring MVC常用注解

@Controller注解

如果有多个请求,需要在springmvc.xml文件中配置多个映射关系,并且还需要建立多个JavaBean作为控制器来进行请求的处理。若业务复杂,这样并不合适。最常用的解决方式是使用Spring MVC提供的一键式配置方法<mvc:annotation-driven/>,通过注解的方式来进行Spring MVC开发,配置此标签后Spring MVC会帮助我们自动做一些注册组件之类的事情。

我们修改之前的springmvc.xml的配置文件

我们将之前的配置的和URL请求同名的那个Bean删除后对后续的代码做如下修改:

新增两句:

<context:component-scan base-package="com.westos"/>
    
<mvc:annotation-driven/>

对视图解析器进行修改

<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/ch06/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

完整的springmvc.xml文件内容为

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd

        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd

        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/spring-mvc.xsd
        ">


    <context:component-scan base-package="com.westos"/>

    <mvc:annotation-driven/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/ch06/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>
  1. <mvc:annotation-driven/>
    配置该标签会自动注册 处理器映射器处理器适配器 两个Bean,Spring MVC需要通过这两个Bean来实现对@Controller@RequestMapping等注解的支持,从而找出URL与handler method的关系并予以关联。换言之,完成在Spring容器中这两个Bean的注册是Spring MVC为控制器分发请求的必要支持
  2. <context:component-scan base-package="com.westos"/>
    配置该标签是对包进行扫描,实现注解驱动Bean的定义,同时将Bean自动注入容器中使用,也就是标注了Spring MVC注解的Bean生效,如果没有此标签,那么标注@Controller的Bean仅仅是一个普通的JavaBean,而不是一个可以处理请求的控制器
  3. 在视图解析器中我们添加了前缀和后缀,这样可以将控制器方法返回的的逻辑视图名称渲染为物理视图

在完成对springmvc.xml的修改后,我们将controller包下的类进行相应的修改

package com.westos.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class HelloController {

    @RequestMapping(value = "/hello")
    public ModelAndView hello(){
        System.out.println("Hello Annptation Spring MVC");
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "注解实现Spring MVC程序");
        mv.setViewName("first");
        return mv;
    }
}

至此项目修改完成,我们可以启动项目,因为之前的Tomcat已经配置完成,所以我们不需要对Tomcat进行修改,直接将项目发布即可

但是遇到了问题index.jsp界面正常
在这里插入图片描述但当请求hello时发生了错误
在这里插入图片描述在这里插入图片描述

后来经过在网上查阅相关解决方法得知是springmvc.xml文件的头部关于mvc的相关配置信息有误,我们将springmvc.xml之前的

http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/spring-mvc.xsd

修改为

http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd

修改后将项目再次发布
在这里插入图片描述index.jsp界面成功,请求hello
在这里插入图片描述测试成功

在上述代码中,使用@Controller注解对HelloController类进行标注,使其成为一个可以处理http请求的控制器;使用@RequestMapping注解映射一个请求的处理方法,来对hello()方法进行标注,确定hello()对应的URL,如果我们还需要添加其他请求直接在HelloController类下添加方法即可 ,当然方法需要使用@RequestMapping注解来标注

@RequestMapping注解

Spring通过@Controller注解找到相应的控制器类后需要知道控制器内部对每一个请求是如何处理的,这就需要 @RequestMapping注解, @RequestMapping注解的作用是为控制器指定可以处理哪些URL请求,该注解可以标注在一个方法或者一个类上

标注在类上时,该类的所有方法都将映射为相对于类级别的请求;标注在方法上时,该方法将成为一个处理请求处理方法

我们对之前的HelloController类进行修改

package com.westos.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
@RequestMapping(value = "/hhh")
public class HelloController {

    @RequestMapping(value = "/hello")
    public ModelAndView hello(){
        System.out.println("Hello Annptation Spring MVC");
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "注解实现Spring MVC程序");
        mv.setViewName("first");
        return mv;
    }
}

修改完成后发布项目

直接请求hello
在这里插入图片描述报错,我们需要在hello请求前面加上hhh
在这里插入图片描述访问成功,这就是在类上和方法上加 @RequestMapping注解的区别

当然 @RequestMapping注解不只有value这一个参数,详解如下

  • value属性
    该属性是 @RequestMapping注解的默认属性,因此如果有唯一的value属性的话,可以省略属性名,用来映射处理请求的方法,但如果超过一个属性,就需要写上属性名
  • method属性
    该属性用来指示方法仅仅处理哪些http请求,可以支持一个或多个请求方式
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值