接收请求参数
一、使用HttpServletRequest
@RequestMapping("/login") public String login(HttpServletRequest request){ String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); return "success"; }
二、参数自动匹配-----SpringMVC会自动将表单参数注入到方法参数,只要和表单的name属性保持一致
前端请求的表单
<form action="${pageContext.request.contextPath}/getParam" method="post"> 用户名:<input type="text" name="name" > 密码:<input type="text" name="pwd" > <input type="submit" value="submit"> </form>
Controller代码
@RequestMapping(value="/getParam",method=RequestMethod.POST) public String getParam1(String name,String pwd){ System.out.println("用户名"+name); System.out.println("密码"+pwd); return "success"; }
三、bean对象的自动装箱
package com.neuedu.bean; /* * 项目名称:SpringMVC-02 * @author:wzc * @date 创建时间:2017年8月22日 上午9:23:33 * @Description:定义学生类 * @parameter * */ public class Student { private String name; private String email; private int sex; private Address address; public Student() { super(); } public Student(String name, String email, int sex) { super(); this.name = name; this.email = email; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Override public String toString() { return "Student [name=" + name + ", email=" + email + ", sex=" + sex + ", address=" + address + "]"; } }
Controller代码段
@RequestMapping("/getStudent") public String getStudent(Student student){ String name = student.getName(); String email = student.getEmail(); System.out.println("name:"+name); System.out.println("email:"+email); String studnetIn = student.toString(); System.out.println(studnetIn); return "success"; }
四、 @RequestParam获取参数
<a href="${pageContext.request.contextPath }/testUrl?id=5">走一个,测试URL</a><br>
@RequestMapping(value="/testUrl",method=RequestMethod.GET) public String testURL( @RequestParam(value="id") Integer id){ // service.getOrderById(id) System.out.println("---------"+id); return "success"; }
三个默认属性:
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!
五、@PathVariable获取URL中绑定的占位符
<a href="${pageContext.request.contextPath}/order/1">测试get</a><br>
@RequestMapping(value="/order/{id}") public String getorderbyId1(@PathVariable(value="id") Integer id){ // service.getOrderById(id) System.out.println("---------"+id); return SUCCESS; }
六、@RequestHeader:获取请求头信息
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!
七、MVC 的 Handler 方法可以接受的ServletAPI 类型的参数
HttpServletRequest
HttpServletResponse
HttpSession
public String login(HttpServletRequest request,HttpServletResponse response ,HttpSession session){ }
向页面传参
一、利用setAttribute()
使用HttpServletRequest 和 Session
如:request。setAttribute(“user”,new User("张三",1));
二、Spring MVC 提供了几种途径输出模型数据
ModelAndView ,Map ,Model,ModelMap
–ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据
–Map 及 Model、ModelMap: 入参为 org.springframework.ui.Model、org.springframework.ui. ModelMap 或 java.uti.Map 时,
处理 方法返回时,Map 中的数据会自动添加到模型中。
@RequestMapping("/testMoudle") public String testMoudle(Map<String,Object> map){ map.put("user", "张三"); return "success"; } @RequestMapping("/testMoudle1") public ModelAndView testMoudle1(){ ModelAndView mAndView=new ModelAndView(); mAndView.addObject("user", "李四"); mAndView.setViewName("success"); return mAndView; } @RequestMapping("/testMoudle2") public String testMoudle(ModelMap modelMap){ modelMap.addAttribute("user", "王五"); return "success"; } @RequestMapping("/testMoudle3") public String testMoudle2(Model model){ model.addAttribute("user", "赵七"); return "success"; }
无论我们的返回值是String类型还是ModelAndView类型,SpringMVC框架执行目标Handler方法之后都会将返回值解析为ModelAView;
我们放入到Map或者Model、ModelMap中的数据都会放入ModelAndView对象中,作为MOdel使用!
在前端页面中都可以通过作用域将参数取出来
三、SpringMVC使用JSON数据
1.加入json的3个jar包
jackson-annotations-2.1.5.jar
jackson-core-2.1.5.jar
jackson-databind-2.1.5.jar
2. 编写目标方法,使其返回 JSON 对应的对象或集合
3. 在方法上添加 @ResponseBody 注解
<%@ 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> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.9.1.min.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var url="${pageContext.request.contextPath}/testJson"; var data={}; function callback(date){ for(var i= 0;i < date.length; i++){ alert(date[i].name); } } $.post(url,data,callback); }); }); </script> </head> <body> <button name="OK" id="btn">测试JSON</button> </body> </html>
@RequestMapping(value="/testJson",method=RequestMethod.POST) @ResponseBody public List<Student> testJSON(){ List<Student> list=new ArrayList<>(); list.add(new Student("张三 ", 0)); list.add(new Student("李四 ", 1)); list.add(new Student("王五 ", 0)); return list; }