SpringMVC笔记(八)SpringMVC中的参数传递

时间:2022-08-27 21:54:57

接收请求参数

    一、使用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;
}