SpringMVC中@RequestMapping注解用法实例

目录
  • 1 修饰类和方法
  • 2 value
  • 3 method
  • 4 params和headers
  • 5 Ant路径
  • 5 @PathVariable
  • 6 HiddenHttpMethodFilter
  • 7 @RequestParam
  • 8 @RequestHeader
  • 9 @CookieValue
  • 总结

1 修饰类和方法

package site.exciter.springmvc.handlers;

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

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {

    /**
     * 1. @RequestMapping 除了修饰方法, 还可来修饰类
     * 2.
     * 1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录
     * 2). 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL
     * 相对于 WEB 应用的根目录
     */
    @RequestMapping("/testRequestMapping")
    public String testRequestMapping() {
        System.out.println("testRequestMapping");
        return "success";
    }
}

2 value

@RequestMapping("/springmvc")可以改为@RequestMapping(value = "springmvc")

3 method

post请求

controller

/**
* method比较常用,用来指定请求方式
* @return
*/
@RequestMapping(value = "testMethod", method = RequestMethod.POST)
    public String testMethod() {
        System.out.println("testMethod");
        return "success";
    }

jsp

<form action="/springmvc/testMethod" method="post">
    <input type="submit" value="submit">
</form>

4 params和headers

/**
     * 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.
     *
     * @return
     */
    @RequestMapping(value = "testPramsAndHeaders",
            params = {"username", "age!=10"}, headers = {})
    public String testPramsAndHeaders() {
        System.out.println("testPramsAndHeaders");
        return "success";
    }
<a href="/springmvc/testPramsAndHeaders?username=exciter&age=10" rel="external nofollow" >testPramsAndHeaders</a>

当age=10时,访问会出错;当age为其他值时,正常访问。

http://localhost:8080/springmvc/testPramsAndHeaders?username=exciter&age=10

5 Ant路径

 /**
     * 通配符 Ant风格,*可以是任何内容
     *
     * @return
     */
    @RequestMapping("/testAntPath/*/exciter")
    public String testAndPath() {
        System.out.println("testAndPath");
        return "success";
    }
&lt;a href="/springmvc/testAntPath/ww/exciter" rel="external nofollow" &gt;testAntPath&lt;/a&gt;

5 @PathVariable

    /**
     * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中
     */
    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id) {
        System.out.println("testPathVariable:" + id);
        return "success";
    }
&lt;a href="/springmvc/testPathVariable/1" rel="external nofollow" &gt;testPathVariable&lt;/a&gt;

6 HiddenHttpMethodFilter

HiddenHttpMethodFilter:浏览器 form 表单只支持 GET、POST、HEAD 请求,而DELETE、PUT 等 method 并不支 持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与DELETE 请求。

web.xml中配置HiddenHttpMethodFilter

<!--  配置org.springframework.web.filter.HiddenHttpMethodFilter,可以把 POST 请求转为 DELETE 或 PUT 请求   -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
@RequestMapping(value = "/testRest/{id}", method = RequestMethod.GET)
    public String testRestGet(@PathVariable("id") Integer id) {
        System.out.println("testRestGet:" + id);
        return "success";
    }

    @RequestMapping(value = "/testRest", method = RequestMethod.POST)
    public String testRestPost() {
        System.out.println("testRestPost");
        return "success";
    }

    @RequestMapping(value = "/testRest/{id}", method = RequestMethod.PUT)
    public String testRestPut(@PathVariable Integer id) {
        System.out.println("testRestPut:" + id);
        return "success";
    }

    /**
     * Rest 风格的 URL. 以 CRUD 为例: 新增: /order POST 修改: /order/1 PUT update?id=1 获取:
     * /order/1 GET get?id=1 删除: /order/1 DELETE delete?id=1
     * <p>
     * 如何发送 PUT 请求和 DELETE 请求呢 ? 1. 需要配置 HiddenHttpMethodFilter 2. 需要发送 POST 请求
     * 3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT
     * <p>
     * 在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解
     */
    @RequestMapping(value = "/testRest/{id}", method = RequestMethod.DELETE)
    public String testRestDelete(@PathVariable Integer id) {
        System.out.println("testRestDelete:" + id);
        return "success";
    }
<a href="/springmvc/testRest/1" rel="external nofollow" >
    <button>TestRest GET</button>
</a>
<form action="/springmvc/testRest" method="post">
    <input type="submit" value="TestRest POST">
</form>
<form action="/springmvc/testRest/1" method="post">
    <input type="hidden" name="_method" value="PUT">
    <input type="submit" value="TestRest PUT">
</form>
<form action="/springmvc/testRest/1" method="post">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="TestRest DELETE">
</form>

注意: 在Tomcat8.0以上请求完接口之后返回页会报错:

HTTP状态 405 - 方法不允许
类型 状态报告

消息 JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS

描述 请求行中接收的方法由源服务器知道,但目标资源不支持

临时解决方案:在返回的jsp中添加isErrorPage="true"

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>

7 @RequestParam

/**
     * @RequestParam 来映射请求参数
     * value 值即请求参数的参数名
     * required 该参数是否必须. 默认为 true
     * defaultValue 请求参数的默认值
     */
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value = "username") String username,
                                   @RequestParam(value = "age", required = false, defaultValue = "0") int age) {
        System.out.println("testRequestParam: username=" + username + "  age=" + age);
        return "success";
    }
<a href="/springmvc/testRequestParam?username=exciter&age=20" rel="external nofollow"  rel="external nofollow" >testRequestParam</a>

8 @RequestHeader

/**
     * 映射请求头信息 用法同 @RequestParam
     */
@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept-Language") String al) {
        System.out.println("testRequestHeader:" + al);
        return "success";
    }
<a href="/springmvc/testRequestParam?username=exciter&age=20" rel="external nofollow"  rel="external nofollow" >testRequestParam</a>

9 @CookieValue

  @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String sessionId) {
        System.out.println("testCookieValue:" + sessionId);
        return "success";
    }

总结

到此这篇关于SpringMVC中@RequestMapping注解用法的文章就介绍到这了,更多相关SpringMVC @RequestMapping用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于SpringMVC @RequestMapping的参数和用法

    @RequestMapping的参数和用法 RequestMapping里面的注解包含的参数如图: RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @RequestMapping 除了修饰方法, 还可来修饰类 : 类定义处:提供初步的请求映射信息.相对于 WEB 应用的根目录: 方法处:提供进一步的细分映射信息. 相对于类定义处的 URL. 若类定义处未标注 @RequestMapping,则方法处标

  • SpringMVC @RequestMapping注解详解

    目录 一.@RequestMapping 1.@RequestMapping注解的功能 2.@RequestMapping注解的位置 二.@RequestMapping注解的属性 1.value属性(掌握) 2.method属性(掌握) 3.params属性(了解) 4.headers属性(了解) 5.SpringMVC支持ant风格的路径 6.SpringMVC支持路径中的占位符(重点) 三.@RequestMapping的派生类注解 测试form表单是否支持put或delete方式的请求 一

  • Spring MVC之@RequestMapping注解详解

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据.为了找出原因,便对参数绑定(@RequestParam. @RequestBody. @RequestHeader . @PathVariable)进行了研究,同时也看了一下HttpMessage

  • SpringMVC的注解@RequestMapping属性及使用

    目录 SpringMVC注解@RequestMapping 一.@RequestMapping 注解的位置 1. 作用在方法 2. 作用在类 二.@RequestMapping 注解的 value 属性 三.@RequestMapping 注解的 method 属性 @RequestMapping 结合请求方式的派生注解 四.@RequestMapping 注解的 params 属性 五.@RequestMapping 注解的 headers 属性 SpringMVC注解@RequestMapp

  • 解决SpringMVC @RequestMapping不设置value出现的问题

    目录 SpringMVC @RequestMapping不设置value 从上个项目拷贝过来的form的action属性忘了修改了 Spring mvc中@RequestMapping 6个基本用法小结 1.最基本的,方法级别上应用 2.参数绑定 3.REST风格的参数 4.REST风格的参数绑定形式之2 5.url中同时绑定多个id 6.支持正则表达式 SpringMVC @RequestMapping不设置value 从上个项目拷贝过来的form的action属性忘了修改了 在control

  • Spring MVC中@Controller和@RequestMapping注解使用

    目录 @Controller和@RequestMapping注解使用 RequestMapping注解类型 通过@RequestParam接收请求参数 SpringMVC应用@Autowired和@Service进行依赖注入 通过org.springframework.web.bind.annotation.ModelAttribute 拦截器的配置 @RequestMapping和Controller方法返回值 @RequestMapping Controller方法返回值 @Controll

  • SpringMVC中@RequestMapping注解用法实例

    目录 1 修饰类和方法 2 value 3 method 4 params和headers 5 Ant路径 5 @PathVariable 6 HiddenHttpMethodFilter 7 @RequestParam 8 @RequestHeader 9 @CookieValue 总结 1 修饰类和方法 package site.exciter.springmvc.handlers; import org.springframework.stereotype.Controller; impo

  • SpringMVC中RequestMapping注解(作用、出现的位置、属性)

    RequestMapping注解 作用出现位置属性 作用 用于建立请求 URL 和处理请求方法之间的对应关系. 出现位置 1.作用在类上:请求 URL 的第一级访问目录.此处不写的话,就相当于应用的根目录.写的话需要以/开头. 2.作用在方法上:请求 URL 的第二级访问目录. 控制器中部分代码示例: @Controller @RequestMapping(path = "/user") //第一级的访问目录 public class HelloController { @Reques

  • 浅谈SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2.SpringMVC特有的@SessionAttributes 我个人比较关注@SessionAttributes的用法,毕竟现在是在用SpringMVC嘛.但是我看网上那些文章,基本都是只说明了基础用法,详细的使用和细节却基本没有,我想这是不够的,所以我自己做了一些测试,然后整理了下代码做了个de

  • spring springMVC中常用注解解析

    一,使用注解: 在spring的配置文件applicationContext.xml中,加入注解扫描.配置项就配置了对指定的包进行扫描,以实现依赖注入. <?xml version="1.0" encoding="UTF-8"?> <span style="font-size:18px;"><beans xmlns="http://www.springframework.org/schema/beans&q

  • SpringMVC中@ModelAttribute注解的使用教程

    前言 @ModelAttribute最主要的作用是将数据添加到模型对象中,用于视图页面展示时使用. @ModelAttribute等价于 model.addAttribute("attributeName", abc); 但是根据@ModelAttribute注释的位置不同,和其他注解组合使用,致使含义有所不同.具体区别如下: 1.@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被

  • 一文搞懂SpringMVC中@InitBinder注解的使用

    目录 简介 应用示例 原理解读 环境:Springboot2.4.12 简介 ​@Controller或@ControllerAdvice类可以有@InitBinder方法来初始化WebDataBinder的实例,这些方法可以: 将请求参数(即表单或查询数据)绑定到模型对象. 将基于字符串的请求值(如请求参数.路径变量.头.cookie等)转换为控制器方法参数的目标类型. 渲染HTML表单时,将模型对象的值格式化为字符串值. @InitBinder方法可以注册控制器特定的java.bean.Pr

  • SpringMVC中常用注解与使用方法详解

    MVC简介 MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计创建 Web 应用程序表现层的模式. Model(模型): 通常指的就是我们的数据模型.作用一般情况下用于封装数据. View(视图): 通常指的就是我们的 jsp 或者 html.作用一般就是展示数据的. 通常视图是依据模型数据创建的. Controller(控制器): 是应用程序中处理用户交互的部分.作用一般就是处理程序逻辑的.

  • SpringMVC中RequestParam注解的简单理解

    目录 1.前言 2.name/value属性 3.required属性 4.defaultValue属性 总结 1.前言 作用:主要用于对前端请求的参数进行一些约束,包括参数名不匹配问题.是否必须.默认值! 这个注解非常简单,准确的说应该是MVC中除了Controller之外最简单的注解. @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Request

  • Spring中@order注解用法实战教程

    目录 前言 一.观察@order源码 二.@order实战 三.@order失效原因 四.解决排序问题 五.排序源码分析 六.@AutoConfigureOrder 总结 前言 @order注解是spring-core包下的一个注解,@Order的作用是定义Spring IOC容器中Bean的执行顺序的优先级(这里的顺序也可以理解为存放到容器中的先后顺序).开发过程当中有时候经常会出现配置依赖关系,例如注入A对象使用了 @ConditionalOnBean(B.class),意思是要求容器当中必

  • MySQL数据类型中DECIMAL的用法实例详解

    MySQL数据类型中DECIMAL的用法实例详解 在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法. 一般赋予浮点列的值被四舍五入到这个列所指定的十进制数.如果在一个FLOAT(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2.如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3 4 6. 这表示应该定义具有足够位数的浮点列以便

随机推荐