zoukankan      html  css  js  c++  java
  • SpringMVC笔记(八)SpringMVC中的参数传递

    接收请求参数

        一、使用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;
    	}
    
  • 相关阅读:
    [声明]博主退役了
    galgame(s?)
    atcoder grand contest 040 F Two Pieces
    AtCoder Grand Contest 040 E
    【AtCoder】CODE FESTIVAL 2016 qual C E-順列辞書 / Encyclopedia of Permutations
    GMOJ6282 向量
    [GMOJ6281] 串
    GMOJ 5909 跑商
    2019.10.28 GMOJ 6394 燃烧的火焰
    题解 CF1092B 【Teams Forming】
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7425637.html
Copyright © 2011-2022 走看看