jjzjj

SpringMVC(四):RequestMapping

jmsstudy 2023-04-16 原文

现在我们来学习一下RequestMapping注解。

RequestMapping注解用来将url映射到一个控制类(Controller类)或一个特定处理的方法上。

一、RequestMapping使用的位置

1.方法上

直接上实例:

package com.jms.controller;

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

@Controller
public class MainController {

    @RequestMapping("/t1")
    public String test1(Model model) {
        model.addAttribute("message", "test1");
        return "main";
    }
}

 

 此时直接访问类上注解的地址即可发起请求。

2.类上

使用在类上时不能仅仅使用在类上,还需要同时使用在方法上。

使用在类上相当于给使用RequestMapping注解的方法添加了一个父关系,也就说在实际请求时需要将类注解的url和方法注解的地址拼接起来,看下面的例子:

package com.jms.controller;

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

@Controller
@RequestMapping("/m1")
public class MainController {

    @RequestMapping("/t1")
    public String test1(Model model) {
        model.addAttribute("message", "test1");
        return "main";
    }
}

此时在类和方法上都有注解,我们访问一下:

 

 此时我们需要访问类注解和方法注解拼接起来的路径才能够发起请求。

一般来说直接在方法上写死即可,无需在类上进行RequestMapping注解的使用。

二、RequestMapping注解的属性

我们来看一下RequestMapping注解的源码:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {}; 
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};

}
    

1.name属性:这个属性相当于方法的注释,使方法更容易理解。

2.value属性:指定请求的实际地址,指定的地址可以是URI 模板模式(Template Pattern),这里用的是数组,说明可以有多个值;value属性是RequestMapping注解的默认属性,我们所写的@RequestMapping("/t1")实际上就是@RequestMapping(value = "/t1")。

3.path属性:有源码中可见,path与value互为别名,也就是说它和value属性的作用是相同的。

4.method属性:指定请求的类型,我们看一下RequestMethod的源码如下:

 

 由此我们衍生出来了一些新的注解,如

    @GetMapping

    @PostMapping

    @PutMapping

    @PatchMapping

    @DeleteMapping

@GetMapping("/t1")就等价于@RequestMapping(value="/t1", method=RequestMethod.GET)。

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

有关SpringMVC(四):RequestMapping的更多相关文章

  1. SpringMVC的数据响应(一) - 2

    4.SpringMVC的数据响应4.1.SpringMVC的数据响应方式(理解)1.页面跳转直接返回字符串通过ModelAndView对象返回2.回写数据直接返回字符串(解析json数据)返回对象或集合4.2.SpringMVC的数据响应-页面跳转-返回字符串形式(应用)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OxdfClO3-1671702092565)(C:\Users\紫轩蝶泪\AppData\Roaming\Typora\typora-user-images\image-20220916113108020.png)]WEB-INF是受饱保护的文件夹

  2. javascript - Java/SpringMVC/Maven元素的缓存清除机制 - 2

    关于我正在使用的应用程序的一些背景知识:SpringMVC、JavaEEWeb应用程序、Maven。基本上,我正在寻找的是一种在每次部署我们的应用程序时刷新所有JS和CSS文件的机制。就目前而言,应用程序正在引用静态文件(例如“js/app.js”)。每次这个文件有变化,在本地重新部署后,当浏览器去下载它时,我们会得到一个304(文件没有被修改)。我的问题是:1)在重新部署应用程序时再次提供这些文件并使用应用程序版本作为缓存清除机制(例如“js/v1.0.0/app.js”)会更好吗?这可以通过servlet过滤器来完成。2)由于该元素是一个Maven动态Web元素,是否有某种插件可以

  3. SpringMvc介绍。 - 2

    目录1、SpringMvc概述1、基本介绍2、工作流程 3、bean加载控制 二、请求1、请求映射路径2、请求方式3、请求参数4、请求参数(传递json数据)5、日期类型参数传递三、响应四、REST风格1、REST简介2、RESTful入门案例3、RESTful快速开发五、拦截器1、拦截器概念2、拦截器开发3、拦截器参数4、拦截器链配置1、SpringMvc概述1、基本介绍▶基本概念 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架▷优点 ●使用简单、开发便捷(相比于Servlet) ●灵活性强▷当前WEB程序的工作流程:●三层架构 ○ web程序通过浏览器访问前端页面,发

  4. 【SpringMVC】| SpringMVC 入门 - 2

    目录一:SpringMVC入门1.SpringMVC简介2.SpringMVC的优点3. SpringMVC的优化4. SpringMVC执行的流程5.基于注解的SpringMVC程序图书推荐一:《SpringBoot进阶:原理、实战与面试题分析》二:《深入理解Java虚拟机》一:SpringMVC入门1.SpringMVC简介(1)首先我们先回忆一下MVC的三层架构?它是一种开发模式,它是模型、视图、控制器的简称;所有的web应用都是基于MVC开发。M:模型层,包含实体类、业务逻辑层、数据访问层。V:视图层,html、javaScript、vue等都是视图层,用来显现数据。C:控制器,它是用

  5. Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发 - 2

    Java语言开发在线小说推荐网小说推荐系统基于用户、物品的协同过滤推荐算法SSM(Spring+SpringMVC+Mybatis)开发框架大数据、人工智能、机器学习开发NovelRecommendWeb一、项目简介1、开发工具和使用技术MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。2、实

  6. java - Spring 4 : How to map RequestMapping URLs to particular controller - 2

    我编写了一个带有多个Controller的SpringMVC应用程序。在JSP上,我在表单上有action:并且相同的操作映射到Controller中的方法:@ControllerpublicclassTableControllerimplementsTableConstants{@RequestMapping(value="/saveTable")publicStringsaveTable(HttpServletRequestrequest,RedirectAttributesredirectAttributes){//...}}在我的web.xml中:Contextnameofth

  7. java - 在没有 HTTP 请求/servlet 的情况下使用 @RequestMapping 功能(URL 到 Java 方法映射) - 2

    我正在尝试构建一个简单的PoC来替换当前依赖于加载到主Java(SpringMVC4.2)Web应用程序中的JAR文件的应用程序,以在启动时声明额外的Controller。它看起来很像:ClientGateway+app(SpringMVC+order.jar)Exposedendpoints:/pingviacontrollerincoreSpringapp/orderApp/doSomethingviacontrollerinorder.jar理想情况下,我希望每个JAR文件都是独立的SpringBoot应用程序,使用SpringIntegration4.2(通过AMQP)与面向外

  8. java - 如何使用@RequestMapping 在 Spring MVC Controller 中优化我的代码? - 2

    在我的Controller中,我的Controller方法名称等于请求映射url。例如,/list等于方法名称list。是否有通用的处理程序方法来缩短我的代码?我不想以这种方式编写每个Controller和方法。我记得.netmvc有一种常见的配置方式。SpringMVC怎么样?@Controller@RequestMapping(value="/fooController")publicclassFooController{@RequestMapping("/list")publicStringlist(...){...}@RequestMapping("/save")publicS

  9. java - 如何在 Spring 中从 @RequestMapping 中排除 url 映射? - 2

    我有一个请求映射,可以处理上下文之后的任何字符串,例如www.example.com/anystring我是这样处理的:@RequestMapping(value="/{str}",method=RequestMethod.GET)publicStringgetApp(@PathVariable("str")StringanyString,ModelMapmodel){//Dosomething}问题是我的应用程序中有2-3个网址,网址如下:www.example.com/about、www.example.com/contact等我为他们写了如下请求映射:@RequestMappin

  10. java - Spring MVC中没有参数的@RequestMapping - 2

    我在学习SpringMVC的同时试图理解我的项目代码。在spring中,@RequestMapping注解接受参数。例如,@RequestMapping(value="/something",method=RequestMethod.POST)@RequestMapping(value="/index.html",method=RequestMethod.GET)@RequestMapping("/index")@RequestMapping(params="command=GETINFO")我的项目使用注释并且不使用任何XML进行映射。我有一个Controller的以下结构。@Con

随机推荐