IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> @RequestMapping注解 -> 正文阅读

[Java知识库]@RequestMapping注解

@RequestMapping注解

这一次我们要学习的是@RequestMapping的相关注解

1、@RequestMapping注解出现的位置

@RequestMapping注解主要定义于处理器对请求的映射规则。首先我们可以将其定义在类上,也可以定义到方法上。当然其中的含义也会不同。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.stereotype;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

首先我们用Ctrl点进注解下,一个@Controller所注解的是可以定义多个处理器方法。只不过我们自然会让不同的处理器所匹配的URL不同罢了。这些不同的 URI 被指定在注解于方法之上的@RequestMapping 的value 属性中

如果出现请求相同的URL部分,这些相同的部分将被抽取到注解在类之上的RequestMapping 的 value 属性中。(这里注意的是:我们说的请求相同的URL部分指的是处理器—即业务方法,而抽取于类上的RequestMapping是在类上的value属性中)。此时这个URL表示模块的名称。

URI 的请求是相对于 Web 的根目录。在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。之后你还可以另外添加方法级别的注解来进一 步指定到处理方法的映射关系

1.1 示例

1.首先在你的控制层下写入处理器(这里的update方法为了方便测试也跟add同样的内容):

@RequestMapping("hello.do")
    public ModelAndView add(){
        System.out.println("TeamController-add");
        teamService.add();
        ModelAndView mv = new ModelAndView();
        mv.addObject("teamName","湖人");
        mv.setViewName("Team/add");
        return mv;
    }
    @RequestMapping("hi.do")
    public ModelAndView update(){
        System.out.println("TeamController-update");
        teamService.update();
        ModelAndView mv1 = new ModelAndView();
        mv1.addObject("teamName","热火");
        mv1.setViewName("Team/update");
        return mv1;
    }

此时创建ModelAndView类中,设置了View窗口即如下两行代码:

        mv.setViewName("Team/add");
        mv1.setViewName("Team/update");
/*此时默认设置为localhost:8080/Team/add.jsp 
或者是:localhost:8080/Team/update.jsp */

2.目录路径设置成如下:

(这里我创建的是Maven项目,在webapp下创建一个Team包后再创建两个jsp文件而后用插件Tomcat编译运行。)

在这里插入图片描述

3.运行后应该会出现如下结果:

在这里插入图片描述

在这里插入图片描述

此时输入一下@RequestMapping下的value值后试一试。

在这里插入图片描述
在这里插入图片描述
这就是@RequestMapping的基本原理,即将其value映射成物理地址,物理地址即为setViewName()下的路径。

2、指定请求提交方式

每个网页请求数据方式各个不一。

当你在@RequestMapping中添加Method属性后如下所示。

在这里插入图片描述

点击后进入前面的置顶注解(下面的代码块),发现有什么不同吗?

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping

对,当你设置新的属性后,你的注解会(对编译器)说明添加的注解信息。其中,对于method属性,用来对被注解方法所处理请求的提交方式进行限制,即只有满足 method 属性指定的提交方式的请求,才会执行该被注解方法。

如上图所示,Method 属性的取值为 RequestMethod 枚举常量。常用的为 RequestMethod.GET 与 RequestMethod.POST,分别表示提交方式的匹配规则为GET 与 POST 提交。

设置了对应的处理请求后,后续的编译服务器只会请求该方式的请求。

请求方式提交方式
地址栏请求get请求
超连接请求get请求
表单请求默认get,可以指定post
AJAX请求默认get,可以指定post

2.1 示例

1.首先添加method属性:

在这里插入图片描述

2.编译结果参考:
在这里插入图片描述

此时报405的错误,即不支持请求GET。

以上就是@RequestMapping注解的基本介绍,谢谢大家的阅读,另外对于java的学习请各位关注我,大家一起学习呀谢谢!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:51:35  更:2021-09-19 07:53:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:36:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码