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提交方式

相关推荐
老王熬夜敲代码2 小时前
Linux信号量
linux·笔记·面试
1+2单片机电子设计2 小时前
基于 STM32 的网络授权时钟系统设计与实现
开发语言·stm32·单片机·嵌入式硬件·php·51单片机
Tjohn92 小时前
Java环境配置(JDK8环境变量配置)补充
java·开发语言
摇摆的含羞草2 小时前
Java加解密相关的各种名词的含义,各种分类的算法及特点
java·开发语言·算法
顾安r2 小时前
12.17 脚本工具 自动化全局跳转
linux·前端·css·golang·html
踢球的打工仔2 小时前
jquery的基本使用(2)
前端·javascript·jquery
天桥下的卖艺者2 小时前
R语言绘制复杂加权数据(nhanes数据)多模型生存分析决策曲线
开发语言·r语言
huohuopro2 小时前
java金额转换,将数字金额转换为7位大写
java·开发语言