Spring MVC中常用注解之RequestMapping详解

SpringMVC和Struts2最大区别可能就是注解的使用。因为SpringMVC中可以实现在类这个层面上面配置信息,也可以在方法层面上面配置信息,既灵活又方便,不需要写大量的配置文件,也不需要写大量的action控制类,因为SpringMVC仅仅通过注解就可以实现了Action控制器的跳转和一些常用的功能。

通过注解来实现Action控制器中的execute方法和页面跳转的功能,而且SpringMVC中拦截器的实现也比Struts2方便的多,所以在开发效率方面SpringMVC比Struts2强,正因为如此所以SpringMVC的使用率这几年正在逐渐上升。

下面就来介绍一下RequestMapping中常用注解的用法。

RequestMapping中有六个属性分别是:

value:     指定请求的实际地址,指定的地址可以是URI Template 模式; method:  指定请求的method类型, GET、POST、PUT、DELETE等; consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html; produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; params: 指定request中必须包含某些参数值是,才让该方法处理。 headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

其中比较常用的是value,method,params;具体的案例我就不多介绍了,有兴趣了解的可以看这篇博客:点击打开链接

1.RequestMapping最基础的用法就是实现类或者方法的访问控制:例如下面案例就是方法上面的控制:

    @RequestMapping(value = "testlogin.do",method = RequestMethod.POST)
    public String testLogin(){
        return "redirect:login";
    }
<form id="loginTestForm" action="testlogin.do" method="post">
    <input type="submit" value="submit">
</form>

从代码上面就可以很明显的看出来,在表单中提交action地址,通过SpringMVC框架会自动找到value值等于action地址的方法然后就会执行这个方法。

这里需要注意的是form表单中提交的方式要和方法里面的method一直,否则就会报错。上面的例子中两个都是post方法提交的。

2.RequestMapping带参数的情况:

   @RequestMapping(value = "testlogin.do",method = RequestMethod.POST)
    public String testLogin(@RequestParam("departmentId") String departmentId){
        System.out.println("输入的参数为:"+departmentId);
        return "redirect:login";
    }

第一种表单形式:

<form id="loginTestForm" action="testlogin.do" method="post">
    <input type="text" name="departmentId" id="departmentId"></br>
    <input type="submit" value="submit">
</form>

第二中表单形式:

<form id="loginTestForm" action="testlogin.do?departmentId=123" method="post">
    <input type="submit" value="submit">
</form>

以上两种的结果是一样的,都可以执行方法中内容。其中@RequestParam还有其他的写法,我这里就不多介绍了,有兴趣的可以自己去了解一下。

3.RequestMapping中获取URL中的参数信息:

<form id="loginTestForm" action="testlogin.do/adc" method="post">
    <input type="submit" value="submit">
</form>
    @RequestMapping(value = "testlogin.do/{departmentId}",method = RequestMethod.POST)
    public String testLogin(@PathVariable("departmentId") String departmentId){
        System.out.println("输入的URL参数为:"+departmentId);
        return "redirect:login";
    }

通过{变量名称}这样的写法,就可以在@PathVariable("变量名")  实现参数的调用了。

当然也可以绑定多个参数,例如:

    @RequestMapping(value = "testlogin.do/departmentId/{departmentId}/departmentName/{departmentName}",method = RequestMethod.POST)
    public String testLogin(@PathVariable("departmentId") String departmentId,@PathVariable("departmentName") String departmentName){
        System.out.println("输入的URL参数为1:"+departmentId);
	System.out.println("输入的URL参数为2:"+departmentName);
        return "redirect:login";
    }

还有就是可以实现正则表达式,我这里就不多介绍了,有兴趣的可以看一下这篇博客:点击打开链接

到这里RequestMapping一些常用的方法就介绍完了,当然还有很多其他的用法。例如:在类中中实现action控制,方法之间相互访问跳转之类的,不过这些方法的实现基本都是基于RequestMapping这些常用方法实现的。

如对内容有问题或有疑义,请及时提出,不甚感谢。本人QQ:208017534

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏邹立巍的专栏

Linux 的进程间通信:消息队列

Linux 环境提供了 XSI 和 POSIX 两套消息队列,本文将帮助您掌握以下内容:如何使用 XSI 消息队列,如何使用 POSIX 消息队列,它们的底层实...

4720
来自专栏用户2442861的专栏

poll()函数总结

http://www.cnblogs.com/Anker/archive/2013/08/15/3261006.html

672
来自专栏程序员宝库

Spring 注解概览

从Java5.0开始,Java开始支持注解。Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解。相比起之前使用xml来配置Spring框架,...

3618
来自专栏菩提树下的杨过

spring cloud 学习(11) - 用fastson替换jackson及用gb2312码输出

前几天遇到一个需求,因为要兼容旧项目的编码格式,需要spring-cloud的rest接口,输出gb2312编码,本以为是一个很容易的事情,比如下面这样:

1191
来自专栏Java技术分享

“金三银四”招聘期又要到了,快来复习JAVA题!!

由于各操作系统(windows,liunx等)支持的指令集,不是完全一致的。就会让我们的程序在不同的操作系统上要执行不同程序代码。Java开发了适用于不同操作...

1.3K13
来自专栏Java呓语

The difference between @Autowired and @ResourceAutowired (由Spring提供)Resource(由J2EE提供)结论参考地址

我更偏向于使用 @Resource 注解在 Field上,这样可以省略 setter方法。 其次,这个注解由 J2EE 提供,可以在 J2EE 环境下通用,而...

994
来自专栏Java3y

Shiro第二篇【授权、整合Spirng、过滤器】

前言 本文主要讲解的知识点有以下: Shiro授权的方式简单介绍 与Spring整合 初始Shiro过滤器 一、Shiro授权 上一篇我们已经讲解了Shiro的...

35310
来自专栏lgp20151222

@RequestBody和@RequestParam区别

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,默认传递的参数就是app...

531
来自专栏柠檬先生

SpringMVC——笔记

使用 @RequestMapping 映射请求 Spring MVC 使用@RequestMapping 注解为控制器指定可以处理那些URL请求。   在控制器...

2105
来自专栏java沉淀

MySQL · 特性分析 ·MySQL 5.7新特性系列三无标题文章

1444

扫码关注云+社区