Spring3 MVC请求参数获取的几种方法

来源:互联网 发布:type c数据线线序 编辑:程序博客网 时间:2024/06/11 03:50

一、通过@PathVariabl获取路径中的参数

   @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET/POST)
    
public String printMessage1(@PathVariable("id")  String id,@PathVariable("name")  String name, ModelMap model) {
        

        System.out.println(id);
        System.out.println(name);
        model.addAttribute("message","111111");
        
return"users";
    
}

例如,访问user/123/whd路径时,执行以上方法,其中,参数id=123,name=whd

@RequestMapping(value="user/{id}/{name}")其中的{id}/{name}就是占位符,这样和路径能完整对应,之后通过方法中的注解从请求路径中获取这些站位符位置的值。

 

二、 @ModelAttribute获取请求的FORM表单数据

JSP表单如下

<form method="post" action="hao.do">
    
a: <input id="a" type="text"  name="a"/>
    
b: <input id="b" type="text"  name="b"/>
    <input type="submit" value="Submit"/>
 </form>

 

Java  Pojo如下

    public class Pojo{
        
private String a;
        
privateint b;
    
}

 

Java Controller如下

@RequestMapping(method= RequestMethod.POST) 
public StringprocessSubmit(@ModelAttribute("pojo") Pojopojo) {
    

    return"helloWorld";
}

这里数据的获取就是以对象的方式获取,将获取的对象值赋值给pojo这个变量

同样可以按照对象来获取实例,不用ModelAttribute 来注释,直接在方法中写和提交的变量名称相同的类类型的变量就可以按照类的方式获取数据

 


、如果提交的数据的名称和javabean 的名称相同则可以以pojo方式获取数据

表单属性名称如下:

<form method="post" action="hao.do">
    
a: <input id="a" type="text"  name="a"/>
    
b: <input id="b" type="text"  name="b"/>
    <input type="submit" value="Submit"/>
 </form>

 

Java  Controller 如下:

@RequestMapping(value="/formvalue.do")

Public String getValue(Pojo  pojo){

// 方法中的a,b参数就是提交参数的名称

 String a=pojo.getA();

String b=pojo.getB();

  return "valuelist"

}

 

、按照form中提交的名称获取,或者是提交的参数名称

表单属性名称如下:

<form method="post" action="hao.do">
    
a: <input id="a" type="text"  name="a"/>
    
b: <input id="b" type="text"  name="b"/>
    <input type="submit" value="Submit"/>
 </form>

 

Java  Controller 如下:

@RequestMapping(value="/formvalue.do")

Public String getValue(String a,String b){

// 方法中的a,b参数就是提交参数的名称

 

  return "valuelist"

}

 

 

五、直接用HttpServletRequest获取

@RequestMapping(method= RequestMethod.GET) 
public Stringget(HttpServletRequest request, HttpServletResponse response) {
  
System.out.println(request.getParameter("a"));
    
return"helloWorld";
}

 

六、用注解@RequestParam绑定请求参数

用注解@RequestParam绑定请求参数a到变量a

当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,

例如: @RequestParam(value="a",required=false)

Controller如下

@RequestMapping(value= "/requestParam", method =RequestMethod.GET/POST)
public StringsetupForm(@RequestParam("a") String a,ModelMap model) {
   
System.out.println(a); 
return "helloWorld";
}


Controller如下

@RequestMapping(value= "/requestParam", method =RequestMethod.GET/POST)
public StringsetupForm(@RequestParam(value="a" , required='false') String a,ModelMap model) {
   
System.out.println(a); 
return "helloWorld";
}


 以上都是获取请求参数的方式,@RequestParam(value="a"  required=false) 从请求参数中获取值,而RequestMapping(value="/{id}/{name}/values.do")

对于这样的请求路径我们可以使用  public  String  getValue(@ParthVariable String id ,@PathVariable String name,HttpservleetRequest  ) 这样的方式来获取路径中的参数

从controller (控制层)向view(视图) 传递数据的方式请看这篇文章:获取请求参数以及向前台传值


原创粉丝点击