requestmapping 传参怎么传参数

121013人阅读
SPRING-MVC(113)
Spring接收请求参数:
1,使用HttpServletRequest获取
Java代码&&
@RequestMapping(&/login.do&)&&
public&String&login(HttpServletRequest&request){&&
&&&&String&name&=&request.getParameter(&name&)&&
&&&&String&pass&=&request.getParameter(&pass&)&&
&2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样
Java代码&&
@RequestMapping(&/login.do&)&&
public&String&login(HttpServletRequest&request,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&name,&&
&@RequestParam(&pass&)String&password)&&&
&&&syso(name);&&
&&&syso(password)&&
3,自动注入Bean属性
Java代码&&
&form&action=&login.do&&&&
用户名:&input&name=&name&/&&&
密码:&input&name=&pass&/&&&
&input&type=&submit&&value=&登陆&&&&
public&class&User{&&
&&private&String&&&
&&private&String&&&
Java代码&&
@RequestMapping(&/login.do&)&&
public&String&login(User&user)&&
&&&syso(user.getName());&&
&&&syso(user.getPass());&&
向页面传值:
当Controller组件处理后,向jsp页面传值,
1,使用HttpServletRequest 和 Session &然后setAttribute(),就和Servlet中一样
2,使用ModelAndView对象
3,使用ModelMap对象
4,使用@ModelAttribute注解
Model数据会利用HttpServletRequest的Attribute传值到success.jsp中
Java代码&&
@RequestMapping(&/login.do&)&&
public&ModelAndView&&login(String&name,String&pass){&&
&&&&User&user&=&userService.login(name,pwd);&&
&&&&Map&String,Object&&data&=&new&HashMap&String,Object&();&&
&&&&data.put(&user&,user);&&
&&&&return&new&ModelAndView(&success&,data);&&
使用ModelMap参数对象示例:
ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中
Java代码&&
@RequestMapping(&/login.do&)&&
public String&login(String&name,String&pass&,ModelMap&model){&&
&&&&User&user&&=&userService.login(name,pwd);&&
&&&&model.addAttribute(&user&,user);&&
&&&&model.put(&name&,name);&&
&&&&return&&success&;&&
&使用@ModelAttribute示例
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
Java代码&&
@RequestMapping(&/login.do&)&&
public&String&login(@ModelAttribute(&user&)&User&user){&&
&&&return&&success&;&&
@ModelAttribute(&name&)&&
public&String&getName(){&&
&&&&return&&&
Session存储:
可以利用HttpServletReequest的getSession()方法
Java代码&&
@RequestMapping(&/login.do&)&&
public&String&login(String&name,String&pwd&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&ModelMap&model,HttpServletRequest&request){&&
&&&&&User&user&=&serService.login(name,pwd);&&
&&&&&HttpSession&session&=&request.getSession();&&
&&&&&session.setAttribute(&user&,user);&&
&&&&&model.addAttribute(&user&,user);&&
&&&&&return&&success&;&&
Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作
1,使用RedirectView
2,使用redirect:前缀
Java代码&&
public&ModelAndView&login(){&&
&&&RedirectView&view&=&new&RedirectView(&regirst.do&);&&
&&&return&new&ModelAndView(view);&&
& &或者用如下方法,工作中常用的方法:
Java代码&&
public&String&login(){&&
&&&&return&&redirect:regirst.do&;&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6887884次
积分:60637
积分:60637
排名:第37名
原创:248篇
转载:2606篇
评论:653条
(21)(92)(17)(25)(37)(63)(7)(74)(67)(95)(177)(114)(86)(40)(43)(71)(14)(10)(17)(12)(6)(20)(27)(54)(71)(97)(74)(32)(2)(24)(21)(62)(60)(36)(23)(27)(46)(34)(76)(63)(121)(141)(74)(54)(120)(77)(42)(4)(12)(19)(1)(9)(15)(19)(18)(16)(31)(79)(68)springmvc后台接收前台页面传递参数的方式 -
- ITeye博客
博客分类:
前端form传递username和password两个参数,后端的接收方式可以有一下几种方式:
@RequestMapping("/jsp/login/login.do")
public ModelAndView login(String username,String password){
ModelMap map = new ModelMap();
map.put("loginUser", username);
return new ModelAndView("/jsp/login/hello",map);
@RequestMapping("/jsp/login/login.do")
public ModelAndView login(String username){
ModelMap map = new ModelMap();
map.put("loginUser", username);
return new ModelAndView("/jsp/login/hello",map);
@RequestMapping("/jsp/login/login.do")
public ModelAndView login(User user){
ModelMap map = new ModelMap();
map.put("loginUser", user.getUsername());
return new ModelAndView("/jsp/login/hello",map);
@RequestMapping("/jsp/login/login.do")
public ModelAndView login(HttpServletRequest request){
String username = request.getParameter("username");
ModelMap map = new ModelMap();
map.put("loginUser", username);
return new ModelAndView("/jsp/login/hello",map);
@RequestMapping("/jsp/login/login.do")
public String login(HttpServletRequest request ,Model model){
String username = request.getParameter("username");
model.addAttribute("loginUser", username);
return "/jsp/login/hello";
@RequestMapping("/jsp/login/login.do")
public ModelAndView login(HttpServletRequest request,ModelMap map){
String username = request.getParameter("username");
map.put("loginUser", username);
return new ModelAndView("/jsp/login/hello",map);
浏览: 4143 次3343人阅读
package com.atguigu.springmvc.
import java.io.IOE
import java.io.W
import java.util.A
import java.util.D
import java.util.M
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.CookieV
import org.springframework.web.bind.annotation.ModelA
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestH
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestP
import org.springframework.web.bind.annotation.SessionA
import org.springframework.web.servlet.ModelAndV
@RequestMapping(&/ads&)
@Controller
public class SpringMVCTest {
private static final String SUCCESS = &success&;
@RequestMapping(&/testRedirect&)
public String testRedirect(){
return &redirect:/index.jsp&;
@RequestMapping(&/testView&)
public String testView(){
return &helloView&;
@RequestMapping(&/testViewAndViewResolver&)
public String testViewAndViewResolver(){
return SUCCESS;
* 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用!&
* 2. @ModelAttribute 注解也可以来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下的作用:
* 1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中.
* 2). SpringMVC 会一 value 为 key, POJO 类型的对象为 value, 存入到 request 中.&
@ModelAttribute
public void getUser(@RequestParam(value=&id&,required=false) Integer id,&
Map&String, Object& map){
System.out.println(&modelAttribute method&);
if(id != null){
//模拟从数据库中获取对象
User user = new User(1, &Tom&, &123456&, &&, 12);
System.out.println(&从数据库中获取一个对象: & + user);
map.put(&user&, user);
* 运行流程:
* 1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user
* 2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性.
* 3. SpringMVC 把上述对象传入目标方法的参数.&
* 注意: 在 @ModelAttribute 修饰的方法中, 放入到 Map 时的键需要和目标方法入参类型的第一个字母小写的字符串一致!
* SpringMVC 确定目标方法 POJO 类型入参的过程
* 1. 确定一个 key:
* 1). 若目标方法的 POJO 类型的参数木有使用 @ModelAttribute 作为修饰, 则 key 为 POJO 类名第一个字母的小写
* 2). 若使用了 &@ModelAttribute 来修饰, 则 key 为 @ModelAttribute 注解的 value 属性值.&
* 2. 在 implicitModel 中查找 key 对应的对象, 若存在, 则作为入参传入
* 1). 若在 @ModelAttribute 标记的方法中在 Map 中保存过, 且 key 和 1 确定的 key 一致, 则会获取到.&
* 3. 若 implicitModel 中不存在 key 对应的对象, 则检查当前的 Handler 是否使用 @SessionAttributes 注解修饰,&
* 若使用了该注解, 且 @SessionAttributes 注解的 value 属性值中包含了 key, 则会从 HttpSession 中来获取 key 所
* 对应的 value 值, 若存在则直接传入到目标方法的入参中. 若不存在则将抛出异常.&
* 4. 若 Handler 没有标识 @SessionAttributes 注解或 @SessionAttributes 注解的 value 值中不包含 key, 则
* 会通过反射来创建 POJO 类型的参数, 传入为目标方法的参数
* 5. SpringMVC 会把 key 和 POJO 类型的对象保存到 implicitModel 中, 进而会保存到 request 中.&
* 源代码分析的流程
* 1. 调用 @ModelAttribute 注解修饰的方法. 实际上把 @ModelAttribute 方法中 Map 中的数据放在了 implicitModel 中.
* 2. 解析请求处理器的目标参数, 实际上该目标参数来自于 WebDataBinder 对象的 target 属性
* 1). 创建 WebDataBinder 对象:
* ①. 确定 objectName 属性: 若传入的 attrName 属性值为 &&, 则 objectName 为类名第一个字母小写.&
* *注意: attrName. 若目标方法的 POJO 属性使用了 @ModelAttribute 来修饰, 则 attrName 值即为 @ModelAttribute&
* 的 value 属性值&
* ②. 确定 target 属性:
* & 在 implicitModel 中查找 attrName 对应的属性值. 若存在, ok
* & *若不存在: 则验证当前 Handler 是否使用了 @SessionAttributes 进行修饰, 若使用了, 则尝试从 Session 中
* 获取 attrName 所对应的属性值. 若 session 中没有对应的属性值, 则抛出了异常.&
* & 若 Handler 没有使用 @SessionAttributes 进行修饰, 或 @SessionAttributes 中没有使用 value 值指定的 key
* 和 attrName 相匹配, 则通过反射创建了 POJO 对象
* 2). SpringMVC 把表单的请求参数赋给了 WebDataBinder 的 target 对应的属性.&
* 3). *SpringMVC 会把 WebDataBinder 的 attrName 和 target 给到 implicitModel.&
* 近而传到 request 域对象中.&
* 4). 把 WebDataBinder 的 target 作为参数传递给目标方法的入参.&
@RequestMapping(&/testModelAttribute&)
public String testModelAttribute(User user){
System.out.println(&修改: & + user);
return SUCCESS;
* @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值),
* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值)
* 注意: 该注解只能放在类的上面. 而不能修饰放方法.&
@RequestMapping(&/testSessionAttributes&)
public String testSessionAttributes(Map&String, Object& map){
User user = new User(&Tom&, &123456&, &&, 15);
map.put(&user&, user);
map.put(&school&, &atguigu&);
return SUCCESS;
* 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数.&
* @param map
@RequestMapping(&/testMap&)
public String testMap(Map&String, Object& map){
System.out.println(map.getClass().getName());&
map.put(&names&, Arrays.asList(&Tom&, &Jerry&, &Mike&));
return SUCCESS;
* 目标方法的返回值可以是 ModelAndView 类型。&
* 其中可以包含视图和模型信息
* SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中.&
@RequestMapping(&/testModelAndView&)
public ModelAndView testModelAndView(){
String viewName = SUCCESS;
ModelAndView modelAndView = new ModelAndView(viewName);
//添加模型数据到 ModelAndView 中.
modelAndView.addObject(&time&, new Date());
return modelAndV
* 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型
* HttpServletRequest&
* HttpServletResponse&
* HttpSession
* java.security.Principal&
* Locale InputStream&
* OutputStream&
* @throws IOException&
@RequestMapping(&/testServletAPI&)
public void testServletAPI(HttpServletRequest request,
HttpServletResponse response, Writer out) throws IOException {
System.out.println(&testServletAPI, & + request + &, & + response);
out.write(&hello springmvc&);
// return SUCCESS;
* Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
* 如:dept.deptId、dept.address.tel 等
@RequestMapping(&/testPojo&)
public String testPojo(User user) {
System.out.println(&testPojo: & + user);
return SUCCESS;
* @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam
@RequestMapping(&/testCookieValue&)
public String testCookieValue(@CookieValue(&JSESSIONID&) String sessionId) {
System.out.println(&testCookieValue: sessionId: & + sessionId);
return SUCCESS;
* 了解: 映射请求头信息 用法同 @RequestParam
@RequestMapping(&/testRequestHeader&)
public String testRequestHeader(
@RequestHeader(value = &Accept-Language&) String al) {
System.out.println(&testRequestHeader, Accept-Language: & + al);
return SUCCESS;
* @RequestParam 来映射请求参数. value 值即请求参数的参数名 required 该参数是否必须. 默认为 true
* & & & & & & & defaultValue 请求参数的默认值
@RequestMapping(value = &/testRequestParam&)
public String testRequestParam(
@RequestParam(value = &username&) String un,
@RequestParam(value = &age&, required = false, defaultValue = &0&) int age) {
System.out.println(&testRequestParam, username: & + un + &, age: &
+ age);
return SUCCESS;
* Rest 风格的 URL. 以 CRUD 为例: 新增: /order POST 修改: /order/1 PUT update?id=1 获取:
* /order/1 GET get?id=1 删除: /order/1 DELETE delete?id=1
* 如何发送 PUT 请求和 DELETE 请求呢 ? 1. 需要配置 HiddenHttpMethodFilter 2. 需要发送 POST 请求
* 3. 需要在发送 POST 请求时携带一个 name=&_method& 的隐藏域, 值为 DELETE 或 PUT
* 在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解
@RequestMapping(value = &/testRest/{id}&, method = RequestMethod.PUT)
public String testRestPut(@PathVariable Integer id) {
System.out.println(&testRest Put: & + id);
return SUCCESS;
@RequestMapping(value = &/testRest/{id}&, method = RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id) {
System.out.println(&testRest Delete: & + id);
return SUCCESS;
@RequestMapping(value = &/testRest&, method = RequestMethod.POST)
public String testRest() {
System.out.println(&testRest POST&);
return SUCCESS;
@RequestMapping(value = &/testRest/{id}&, method = RequestMethod.GET)
public String testRest(@PathVariable Integer id) {
System.out.println(&testRest GET: & + id);
return SUCCESS;
* @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.
* @param id
@RequestMapping(&/testPathVariable/{id}&)
public String testPathVariable(@PathVariable(&id&) Integer id) {
System.out.println(&testPathVariable: & + id);
return SUCCESS;
@RequestMapping(&/testAntPath/*/abc&)
public String testAntPath() {
System.out.println(&testAntPath&);
return SUCCESS;
* 了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.
@RequestMapping(value = &testParamsAndHeaders&, params = { &username&,
&age!=10& }, headers = { &Accept-Language=en-US,q=0.8& })
public String testParamsAndHeaders() {
System.out.println(&testParamsAndHeaders&);
return SUCCESS;
* 常用: 使用 method 属性来指定请求方式
@RequestMapping(value = &/testMethod&, method = RequestMethod.POST)
public String testMethod() {
System.out.println(&testMethod&);
return SUCCESS;
* 1. @RequestMapping 除了修饰方法, 还可来修饰类 2. 1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录
* 2). 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL
* 相对于 WEB 应用的根目录
@RequestMapping(&/testRequestMapping&)
public String testRequestMapping() {
System.out.println(&testRequestMapping&);
return SUCCESS;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:140675次
积分:3609
积分:3609
排名:第8958名
原创:228篇
转载:51篇
(1)(8)(1)(3)(9)(14)(18)(2)(9)(17)(14)(15)(3)(19)(14)(11)(4)(2)(4)(6)(6)(2)(4)(4)(6)(27)(8)(45)(3)SpringMVC向页面传递参数的4种方式_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SpringMVC向页面传递参数的4种方式
&&SpringMVC向页面传递参数的4种方式
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢SpringMVC——接收请求参数和页面传参 -
- ITeye博客
博客分类:
Spring接收请求参数:
1,使用HttpServletRequest获取
@RequestMapping("/login.do")
public String login(HttpServletRequest request){
String name = request.getParameter("name")
String pass = request.getParameter("pass")
2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样
@RequestMapping("/login.do")
public String login(HttpServletRequest request,
String name,
@RequestParam("pass")String password) // 表单属性是pass,用变量password接收
syso(name);
syso(password)
3,自动注入Bean属性
&form action="login.do"&
用户名:&input name="name"/&
密码:&input name="pass"/&
&input type="submit" value="登陆"&
//封装的User类
public class User{
@RequestMapping("/login.do")
public String login(User user)
syso(user.getName());
syso(user.getPass());
向页面传值:
当Controller组件处理后,向jsp页面传值,
1,使用HttpServletRequest 和 Session
然后setAttribute(),就和Servlet中一样
2,使用ModelAndView对象
3,使用ModelMap对象
4,使用@ModelAttribute注解
Model数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public ModelAndView
login(String name,String pass){
User user = userService.login(name,pwd);
Map&String,Object& data = new HashMap&String,Object&();
data.put("user",user);
return new ModelAndView("success",data);
使用ModelMap参数对象示例:
ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(String name,String pass ,ModelMap model){
= userService.login(name,pwd);
model.addAttribute("user",user);
model.put("name",name);
return "success";
使用@ModelAttribute示例
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(@ModelAttribute("user") User user){
return "success";
@ModelAttribute("name")
public String getName(){
Session存储:
可以利用HttpServletReequest的getSession()方法
@RequestMapping("/login.do")
public String login(String name,String pwd
ModelMap model,HttpServletRequest request){
User user = serService.login(name,pwd);
HttpSession session = request.getSession();
session.setAttribute("user",user);
model.addAttribute("user",user);
return "success";
Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作
1,使用RedirectView
2,使用redirect:前缀
public ModelAndView login(){
RedirectView view = new RedirectView("regirst.do");
return new ModelAndView(view);
或者用如下方法,工作中常用的方法:
public String login(){
return "redirect:regirst.do";
浏览 21631
浏览: 227714 次
来自: 武汉
写的很仔细, 谢谢分享
请问下,&bean class=&org.my ...
经典整合推荐一个实例下载:http://blog.sina.c ...
额 大致有点了解

我要回帖

更多关于 requestmapping参数 的文章

 

随机推荐