Java课题笔记~ SpringMVC注解式开发

2.1 @Controller

传统的配置式开发中的控制器Controller类必须实现Controller接口,并实现接口中的HandleRequest()方法,还需要再配置文件中配置处理器映射,且一个处理器(控制器)只能有一个方法,为了实现程序功能,不得不创建大量的处理器(控制器)类,不够方便灵活。

而注解开发中,将一个普通的类转化为控制器类只需要在该类的声明上添加@Controller注解即可。

一个基于注解的控制器可以有多个方法,能大大减少处理器(控制器)类的数量。

要使注解被扫描到,必须在springmvc.xml中配置组件扫描器,代码如下:

java 复制代码
<context:component-scan base-package="com.ambow.controller" />

2.2 @RequestMapping定义请求规则

基于注解的控制器无须在xml配置文件中配置处理器映射器,仅需要用@RequestMapping对应控制器类中任意一个方法进行注解即可建立"请求/响应"映射关系,将客户端请求与处理器的犯法一一对应。

通过@RequestMapping 注解可以定义处理器对于请求的映射规则。该注解可以注解在方法上,也可以注解在类上,但意义是不同的。value 属性值常以"/"开始。

@RequestMapping 的 value 属性用于定义所匹配请求的 URI。

2.2.1 指定模块名称

一个@Controller 所注解的类中,可以定义多个处理器方法。当然,不同的处理器方法所匹配的 URI 是不同的。这些不同的 URI 被指定在注解于方法之上的@RequestMapping 的value 属性中。但若这些请求具有相同的 URI 部分,则这些相同的 URI部分可以被抽取到注解在类之上的@RequestMapping 的 value 属性中。此时的这个 URI 表示模块(相当于包)的名称。

URI 的请求是相对于 Web 的根目录。

换个角度说,要访问处理器的指定方法,必须要在方法指定 URI 之前加上处理器类前定义的模块名称。

示例:

提取后

java 复制代码
@Controller
@RequestMapping("/zar")
public class HelloSpringMvc {
    //相当于一个控制器处理的方法
    @RequestMapping("/hello")
    public String one() {
        return "main";
    }
    @RequestMapping("/two")
    public String two() {
        return "main";
    }
//客户端的请求:
// <form action="${pageContext.request.contextPath}/zar/hello.action">
    // <form action="${pageContext.request.contextPath}/zar/two.action">
}

2.2.2 对请求提交方式的定义

对于@RequestMapping,其有一个属性 method,用于对被注解方法所处理请求的提交方式进行限制,即只有满足该 method 属性指定的提交方式的请求,才会执行该被注解方法。

Method 属性的取值为 RequestMethod 枚举常量。

常用的为 RequestMethod.GET 与RequestMethod.POST,分别表示提交方式的匹配规则为 GET 与 POST 提交。

java 复制代码
@RequestMapping(value = "/hello",method = RequestMethod.POST)
public String one() {
	return "main";
}

以上处理器方法只能处理 POST 方式提交的请求。

客户端浏览器常用的请求方式,及其提交方式有以下几种:

也就是说,只要指定了处理器方法匹配的请求提交方式为 POST,则相当于指定了请求发送的方式:

要么使用表单请求,要么使用 AJAX 请求。其它请求方式被禁用。

当然,若不指定 method 属性,则无论是 GET 还是 POST 提交方式,均可匹配。即对于请求的提交方式无要求。

(1) post提交方式

(2) get提交方式

相关推荐
好心的小明16 分钟前
【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
笔记·算法·决策树
fouryears_2341731 分钟前
什么是JSON,如何与Java对象转化
java·spring boot·spring·json
go546315846531 分钟前
Python点阵字生成与优化:从基础实现到高级渲染技术
开发语言·人工智能·python·深度学习·分类·数据挖掘
猫头虎36 分钟前
2025年02月11日 Go生态洞察:Go 1.24 发布亮点全面剖析
开发语言·后端·python·golang·go·beego·go1.19
CHEN5_021 小时前
【RocketMQ】一分钟了解RocketMQ
java·rocketmq·java-rocketmq
仰望天空—永强1 小时前
PS 2025【七月最新v26.5】PS铺软件安装|最新版|附带安装文件|详细安装说明|附PS插件
开发语言·图像处理·python·图形渲染·photoshop
寒士obj1 小时前
JVM 内存结构
java·开发语言·jvm
cypking1 小时前
electron中IPC 渲染进程与主进程通信方法解析
前端·javascript·electron
MediaTea1 小时前
Python 库手册:xmlrpc.client 与 xmlrpc.server 模块
开发语言·python
悦悦子a啊1 小时前
Python之--字典
开发语言·python·学习