springmvc之@Controller、@RequestMapping等注解解说
首先来看下一段代码:
@Controller
@RequestMapping("/user")
public class UsersController {
@RequestMapping(value="/findAll")
private String findAll(){
return "index";
}
}
以下对上面几个注解进行简单的说下使用方法:
@Controller
@Controller:表明这个类是一个控制器类。假设用这个注解。须要在spring-mvc配置文件加上这一段。<context:component-scan base-package="com.ztz.springmvc.controller"/>
@RequestMapping
@RequestMapping:能够为控制器指定处理能够请求哪些URL请求,@RequestMapping能够定义在类或方法上。
- 类上:提供初步的请求映射信息。相对于 WEB 应用的根文件夹
- 方法上:提供进一步的细分映射信息。
相对于类定义处的 URL。
若类定义处未标注 @RequestMapping。则方法处标记的 URL 相对于WEB 应用的根文件夹
DispatcherServlet 截获请求后,就通过控制器上
@RequestMapping 提供的映射信息确定请求所相应的处理方法。
@RequestMapping 除了能够使用请求 URL 映射请求外,还能够使用请求方法、请求參数及请求头映射请求。
@RequestMapping 限定请求方法、 请求參数、 请求头
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.GET)
private String findAll(){
System.out.println("仅仅接受get请求");
return "index";
}
}
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.POST)
private String findAll(){
System.out.println("仅仅接受post请求");
return "index";
}
}
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",params="name")
private String findAll(){
System.out.println("仅仅接受name參数");
return "index";
}
}
假设一个请求URL,没有携带name參数,那么该方法就拒绝呗訪问。
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",headers="Content-Type:text/html;charset=UTF-8")
private String findAll(){
System.out.println("仅仅接受请求头中Content-Type为text/html;charset=UTF-8的请求");
return "index";
}
}
@RequestParam 绑定请求參数
在处理方法入參处使用 @RequestParam 能够把请求參数传递给请求方法
- value:參数名
- required: 是否必须。 默觉得 true, 表示请求參数中必须包括相应的參数, 若不存在,将抛出异常
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@RequestParam(value="name",required=true)String name,//參数name不能为空
@RequestParam(value="sex",required=false)String sex,//參数sex能够为空
@RequestParam(value="age",defaultValue="20")String age){//參数age假设为空,默认值为20
System.out.println(name);
System.out.println(sex);
System.out.println(age);
return "index";
}
}
浏览器请求:http://127.0.0.1:8080/springmvc/user/findAll?name=123
null
20
@RequestHeader 获取请求头
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@RequestHeader(value="User-Agent")String user_Agent,
@RequestHeader(value="Cookie")String cookie){
System.out.println(user_Agent);
System.out.println(cookie);
return "index";
}
}
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
JSESSIONID=0E665D80D25F097EB9ECA533F07C3355
@CookieValue 获取cookie值
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@CookieValue(value="JSESSIONID")String cookie){
System.out.println(cookie);
return "index";
}
}
0E665D80D25F097EB9ECA533F07C3355
@RequestBody获取http的body
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.POST)
private String findAll(@RequestBody(required=true) String body){
System.out.println(body);
return "index";
}
}
这里採用Fiddler測试下。POST请求http://127.0.0.1:8080/springmvc/user/findAll,消息体是:{"name":"test @RequestBody"}
springmvc之@Controller、@RequestMapping等注解解说的更多相关文章
- SpringMVC的controller方法中注解方式传List参数使用@RequestBody
在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...
- SpringMVC中 Controller的 @ResponseBody注解分析
需求分析:需要 利用 out 对象返回给财付通是否接收成功 .那么将需要如下代码: /** * 返回处理结果给财付通服务器. * @param msg: Success or fail. * @ ...
- SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable
我的開發環境 框架: springmvc+spring+freemarker 開發工具: springsource-tool-suite-2.9.0 JDK版本: 1.6.0_29 to ...
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解(转)
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...
- spring mvc 注解@Controller @RequestMapping @Resource的详细例子
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- spring mvc:内部资源视图解析器2(注解实现)@Controller/@RequestMapping
spring mvc:内部资源视图解析器2(注解实现) @Controller/@RequestMapping 访问地址: http://localhost:8080/guga2/hello/goo ...
- spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping
spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping 项目访问地址: http://localhost:8080/guga2/hello/prin ...
随机推荐
- Vue项目打包部署到apache服务器
vue项目在开发环境下,让项目运行起来,是通过npm run dev命令,原理是在本地搭建了一个express服务器. 但是在服务器上就不是这样的,必须要通npm run build命令来对整个项目进 ...
- CAS配置(3)之restful-api接入接口
第一步,cas服务端对api接口支持 在cas-server-webapp下 pom.xml添加如下依赖 <dependency> <groupId>org.jasig.cas ...
- 缓存,队列(Redis,RabbitMQ)
Redis Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- linux下常用命令失效
注意:修改一下PATH环境变量 export PATH=/bin:/usr/bin/:. 可以把这句话加到你的.profile或者.bash_profile里,这样每次登录的时候都会生效
- Linux的那点事
1.重启nginx服务器 注意,修改了nginx配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行. 判断Nginx配置是否正确命令如下: nginx - ...
- html5与css3入门知识点精炼
<meta name = "keywords" content="…………"/>(网页搜索时要输入的关键字) <meta name = &qu ...
- SQL Server之十大存储过程
下面介绍十大不同类型存储过程. 用户自定义存储过程 . 创建语法 create proc | procedure pro_name [{@参数数据类型} [=默认值] [output], {@参数数据 ...
- 图像局部显著性—点特征(SiftGPU)
SIFT的计算复杂度较高. SiftGpu的主页:SiftGPU: A GPU Implementation of ScaleInvariant Feature Transform (SIFT) 对S ...
- 安卓JNI使用OpenCV
OpenCV也有Java数据结构的包,不过计算速度还是很慢,非不得已不使用此种方式调用OpenCV.使用NDK编写底层OpenCv的调用代码,使用JNI对代码进行封装,可以稍微提高一点效率. 参考链接 ...
- 小功能__tab实录
作为一个没有js基础的人来说,写一个小功能确实麻烦,也很累,从一个demo中发现details标签完美的实现菜单折叠功能,而不用费劲写好多li.div.js.发现html也是好厉害的.看来以后回家要多 ...