SpringMVC 页面数据传递到后台
(转)CSDN:https://blog.csdn.net/benxiaohai888/article/details/78529295
方式一 通过@RequestParam注解来接收
方式二 直接用同名变量来接收
方式三 通过request来接收
下面我们借用a标签来携带数据传递到后台继续测试,a标签提交的方式为GET提交。
准备一个测试jsp页面index.jsp,内容如下:
-
<!--页面代码--> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h3>SpringMV参数传递测试</h3> <a href="mfc/showwithparam?msg=welcomespringmvcparam">测试带参数(@RequestParam注解来接收)</a> <br /> <a href="mfc/showwithparam2?msg=welcomespringmvcparam">测试带参数(同名变量来接收)</a> <br /> <a href="mfc/showwithrequest?msg=welcomespringmvcparam">测试带参数(request来接收)</a> <br /> </body> </html>
下面是分别使用三种方式接收数据的方式:
方式一 通过@RequestParam注解来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 传递参数到控制器的的一种方式(@RequestParam注解来接收)
*
* @param str
* @return
*/
@RequestMapping(value = "showwithparam")
public String showWithParam(
@RequestParam(value = "msg", required = false, defaultValue = "默认值") String str) {
System.out.println("showwithparam...");
System.out.println("接收页面传递的参数msg:" + str);
return "main";
}
}
$tr.append('<td><a href="user/userupdate?userid='+user.userid+'">编辑</a></td>');
@RequestMapping("/userupdate")
public ModelAndView doUpdate(@RequestParam("userid") Integer userid){
ModelAndView mv = new ModelAndView("showa1a");
User user = new User();
user.setUserid(userid);
List<User> list = userService.doFindBySome(user);
mv.addObject("user", list.get(0));
return mv;
}
代码解释:通过@RequestParam来接收参数, 表示页面传递参数的名字叫msg,这里定义一个名叫str的变量来接收msg的值,这种方式,要求必须传递过来一个名叫msg的参数,没有传递这个参数的时候就会出现400错误
方式二 直接用同名变量来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 传递参数到控制器的的二种方式(同名变量来接收)
*
* @param msg
* @return
*/
@RequestMapping(value = "showwithparam2")
public String showWithParam2(String msg) {
System.out.println("showWithParam2...");
System.out.println("接收页面传递的参数msg:" + msg);
return "main";
}
}
代码解释:这里添加了一个参数msg,这个参数和页面提交的数据的名称一致为msg,不管页面是否传递msg参数,都不会报错,传递了,就接收,没有传递,就是null。
方式三 通过request来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 在业务方法中,如果需要使用到内置对象,只需要在方法中,定义对应的形参,即可。
*
* @param request
* @return
*/
@RequestMapping(value = "showwithrequest")
public String showWithRequest(HttpServletRequest request) {
System.out.println("showwithrequest...");
String msg = request.getParameter("msg");
System.out.println("通过request接收的msg:" + msg);
return "show";
}
}
代码解释:通过request对象接收页面传递的数据msg。
附加:利用jsp实现的a标签传值
<c:forEach items="${list}" var="manu">
<tr>
<td><input type="checkbox"></td>
<td>${manu.makerid }</td>
<td>${manu.company }</td>
<td>${manu.principalname }</td>
<td>${manu.companytel }</td>
<td>${manu.postcode }</td>
<td>${manu.address }</td>
<td><a href="custom/showe1a/${manu.makerid }">编辑</a></td>
</tr>
</c:forEach>
@RequestMapping("/showe1a/{makerid}")
public ModelAndView toUpdate(@PathVariable("makerid") Integer makerid){
ModelAndView mv = new ModelAndView("showe1a");
mv.addObject("manu", manufacturerService.getOneManufacturer(makerid));
return mv;
}