request.getParameter和SpringMVC后台控制层获取参数的方式

来源:互联网 发布:新浪网络经纪人登录 编辑:程序博客网 时间:2024/06/03 23:41
**1. request.getParameter**转载于:http://blog.csdn.net/moreorless/article/details/4199677

一、简单的对比

request.getParameter用的比较多,相对熟悉

 

 

request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据。   接收数组变量,如checkobx类型    
request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值. 接收一般变量,如text类型

 

例:

1. 三个名字相同的text标签

<input type=”text” name=”test” value=”1” />
<input type=”text” name=”test” value=”2” />
<input type=”text” name=”test” value=”3” />

 

request.getParameterValues(“test”)   —————– [1, 2, 3]

request.getParameter(“test”)             —————— 1

 

${paramValues.test}

${param.test}

 

2. checkbox

 <input type=”checkbox” name=”habit” value=”read”>看书

 <input type=”checkbox” name=”habit” value=”movie”>电影

 <input type=”checkbox” name=”habit” value=”game”>游戏

request.getParameterValues(“habit”)

 

 

二、与此相关的话题——隐含对象

 

1. JSP隐含对象(Implicit Object)

 

     所谓隐含对象,是指当编写jsp网页时,不必做任何声明就可以直接使用的对象。 JSP2.0定义了九个隐含对象

 

request response pageContext session application out conifg page exception

 

这里只提一下request 和 response 两个对象

       request 对象表示客户端请求的内容,比如我们从request中取得了用户输入的内容,实现了javax.servlet.http.HttpServletRequest接口

      response对象表示响应客户端的结果。

上面我们使用了request的两个方法getParameter 和 getParameterValues,其实request还有其他几个比较重要的方法,这里只涉及几个获取请求参数的方法

String getParameter(String name)                     取得name的参数值

String[] getParameterValues(String name)        取得所有name的参数值

Enumeration getParameterNames()                  取得所有的参数名称

Map<String, String[]> getParameterMap()        取得request的所有参数的一个映射

//

Returns a java.util.Map of the parameters of this request. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

 

Returns:
an immutable java.util.Map containing parameter names as keys and parameter values as map values. The keys in the parameter map are of type String. The values in the parameter map are of type String array.

//

 

response等其他几个隐含对象也有非常重要的身份,有机会专门整理一下,宣扬一下它们的显赫地位。

 

2. EL隐含对象

 

EL即Experssion Language,自JSP2.0后正式成为JSP的标准规范之一,支持Servlet2.4/JSP2.0的Container也就相应的支持EL语法。

一个常见的形式如,<c:out value=”${ 3 + 7 * 4}” />

EL的隐藏对象有11个 PageContext PageScope RequestScope sessionScope applicationScope

param paramValues header headerValues cookie initParam

其中param 和 paramValues即对相应ServletRequest.getParameter(String name)和ServletRequest.getParameterValues(String name)


  • SpringMVC后台控制层获取参数的方式
  • 转载于:http://825635381.iteye.com/blog/2196911

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter(“name”),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解

    一、基本使用,获取提交的参数
    后端代码:
    Java代码  收藏代码
    1. @RequestMapping(“testRequestParam”)    
    2.    public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) {    
    3.     System.out.println(inputStr);  
    4.       
    5.     int inputInt = Integer.valueOf(request.getParameter(“inputInt”));  
    6.     System.out.println(inputInt);  
    7.       
    8.     // ……省略  
    9.     return “index”;  
    10.    }     
     @RequestMapping("testRequestParam")  public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) {      System.out.println(inputStr);
    int inputInt = Integer.valueOf(request.getParameter("inputInt"));System.out.println(inputInt);// ......省略return "index";
    }


    前端代码:
    Html代码  收藏代码
    1. <form action=“/gadget/testRequestParam” method=“post”>    
    2.      参数inputStr:<input type=“text” name=“inputStr”>    
    3.      参数intputInt:<input type=“text” name=“inputInt”>    
    4. </form>  
    <form action="/gadget/testRequestParam" method="post">   参数inputStr:<input type="text" name="inputStr">   参数intputInt:<input type="text" name="inputInt">  </form>


    前端界面:


    执行结果:
    test1
    123

    可以看到spring会自动根据参数名字封装进入,我们可以直接拿这个参数名来用

    二、各种异常情况处理
    1、可以对传入参数指定参数名
    Java代码  收藏代码
    1. @RequestParam String inputStr  
    2. // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错  
    3. @RequestParam(value=“aa”) String inputStr  
    @RequestParam String inputStr// 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错@RequestParam(value="aa") String inputStr

    错误信息:
    HTTP Status 400 - Required String parameter ‘aa’ is not present

    2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
    Java代码  收藏代码
    1. // required=false表示不传的话,会给参数赋值为null,required=true就是必须要有  
    2. @RequestMapping(“testRequestParam”)    
    3.     public String filesUpload(@RequestParam(value=“aa”, required=true) String inputStr, HttpServletRequest request)  
    // required=false表示不传的话,会给参数赋值为null,required=true就是必须要有@RequestMapping("testRequestParam")  public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request)


    3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,这个不可以
    Java代码  收藏代码
    1. @RequestMapping(“testRequestParam”)    
    2.    public String filesUpload(@RequestParam(value=“aa”, required=true) String inputStr,   
    3.         @RequestParam(value=“inputInt”, required=falseint inputInt  
    4.         ,HttpServletRequest request) {    
    5.       
    6.     // ……省略  
    7.     return “index”;  
    8.    }  
       @RequestMapping("testRequestParam")  public String filesUpload(@RequestParam(value="aa", required=true) String inputStr,         @RequestParam(value="inputInt", required=false) int inputInt        ,HttpServletRequest request) {  
    // ......省略return "index";
    }


    解决方法:
        “Consider declaring it as object wrapper for the corresponding primitive type.”建议使用包装类型代替基本类型,如使用“Integer”代替“int”
阅读全文
0 0
原创粉丝点击