springmvc的5种传值的方法:
1.request获取值:
@RequestMapping("/request.action") public String request(HttpServletRequest request){ String value= (String) request.getAttribute("value"); String val=request.getParameter("value"); return "index"; }
request的getAttribute和getParameter有什么区别呢?
getAttribute:取得是setAttribute设定的值,session范围的值,可以设置为object,对象,字符串;getAttribute获取的值是web容器内部的,是具有转发关系的web组件之间共享的值;用于服务端重定向
getParameter:取得是从web的form表单的post/get,或者url传过来的值,只能是String字符串;getParameter获取的值是web端传到服务端的,是获取http提交过来的数据;用于客户端重定向。
2.使用路径变量@PathVariable绑定页面url路径的参数,用于进行页面跳转
@Controller public class BaseController { @RequestMapping("/goUrl/{folder}/{file}") public String goUrl(@PathVariable String folder,@PathVariable String file){ return folder+"/"+file; } }
3.通过@RequestParam绑定页面传来的参数,效果跟
String id=request.getParameter(“id”)是一样的:
@RequestMapping("/test.action") public void test(@RequestParam("id") String id){ System.out.println("id:"+id); }
4.自动注入,实体类属性有setter,getter方法,前端form表单的name对应实体的属性名,后台直接可以通过该实体类自动把参数绑定到类的属性。
比如:实体类
public class Content { private String content;
public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
form表单:
<form action="<%=request.getContextPath()%>/content" method="post" enctype="multipart/form-data"> 商品描述:<textarea name="content" rows="2" cols="20"></textarea><br> <input type="submit" value="提交"/> </form>
后台接收数据:
@RequestMapping("/content") public void contetn(Content content){ System.out.println("content:"+content.getContent()); }
5.使用RequestBody接受前端传来的json数组,对象。ResponseBody把数据返回
@RequestMapping("/test.action") @ResponseBody public void test(@RequestBody List<Content> list){ for (Content content:list){ System.out.println(content.toString()); } }
我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。