Spring MVC學習路(六)可傳入方法的參數

引用 : http://jinnianshilongnian.iteye.com/blog/1698916 java


在使用方法時Spring Web MVC框架會自動幫助咱們把相應的Servlet請求/響應(Servlet API)做爲參數傳遞過來web

在定義方法的時候能夠定義不少參數安全

1、ServletRequest/HttpServletRequest 和 ServletResponse/HttpServletResponse

public String requestOrResponse (  
        ServletRequest servletRequest, HttpServletRequest httpServletRequest,  
        ServletResponse servletResponse, HttpServletResponse httpServletResponse  
    )

2、InputStream/OutputStream 和 Reader/Writer

public void inputOrOutBody(InputStream requestBodyIn, OutputStream responseBodyOut)  
        throws IOException {  
responseBodyOut.write("success".getBytes());  
}

requestBodyIn獲取請求的內容區字節流,等價於request.getInputStream();session

responseBodyOut獲取相應的內容區字節流,等價於response.getOutputStream()app

public void readerOrWriteBody(Reader reader, Writer writer)  
        throws IOException {  
    writer.write("hello");  
}

reader獲取請求的內容區字符流,等價於request.getReader();框架

writer獲取相應的內容區字符流,等價於response.getWriter()spa

 

InputStream/OutputStream 和 Reader/Writer兩組不能同時使用,只能使用其中的一組。線程

3、WebRequest/NativeWebRequest

WebRequest是Spring Web MVC提供的統一請求訪問接口,不單單能夠訪問請求相關數據(如參數區數據、請求頭數據,但訪問不到Cookie區數據),還能夠訪問會話和上下文中的數據;NativeWebRequest繼承了WebRequest,並提供訪問本地Servlet API的方法。code

public String webRequest(WebRequest webRequest, NativeWebRequest nativeWebRequest) {  
    System.out.println(webRequest.getParameter("test"));//①獲得請求參數test的值  
    webRequest.setAttribute("name", "value", WebRequest.SCOPE_REQUEST);//②  
    System.out.println(webRequest.getAttribute("name", WebRequest.SCOPE_REQUEST));  
    HttpServletRequest request =   
        nativeWebRequest.getNativeRequest(HttpServletRequest.class);//③  
    HttpServletResponse response =   
        nativeWebRequest.getNativeResponse(HttpServletResponse.class);  
        return "success";  
    }

 webRequest.getParameter:訪問請求參數區的數據,能夠經過getHeader()訪問請求頭數據;orm

② webRequest.setAttribute/getAttribute:到指定的做用範圍內取/放屬性數據,Servlet定義的三個做用範圍分別使用以下常量表明:

            SCOPE_REQUEST :表明請求做用範圍;

           SCOPE_SESSION :表明會話做用範圍;

           SCOPE_GLOBAL_SESSION :表明全局會話做用範圍,即ServletContext上下文做用範圍。 

 nativeWebRequest.getNativeRequest/nativeWebRequest.getNativeResponse:獲得本地的Servlet API

4、HttpSession

public String session(HttpSession session) {  
    System.out.println(session);  
    return "success";  
}

此處的session永遠不爲null。

 

注意:session訪問不是線程安全的,若是須要線程安全,須要設置AnnotationMethodHandlerAdapter或RequestMappingHandlerAdapter的synchronizeOnSession屬性爲true,便可線程安全的訪問session。

5、命令/表單對象

Spring Web MVC可以自動將請求參數綁定到功能處理方法的命令/表單對象上。

相似於status2和bean

@RequestMapping(value = "/commandObject", method = RequestMethod.GET)  
public String toCreateUser(HttpServletRequest request, UserModel user) {  
    return "customer/create";  
}  
@RequestMapping(value = "/commandObject", method = RequestMethod.POST)  
public String createUser(HttpServletRequest request, UserModel user) {  
    System.out.println(user);  
    return "success";  
}

 若是提交的表單(包含username和password文本域),將自動將請求參數綁定到命令對象user中去。

6、ModelAndView 

@RequestMapping(value = "/test")  
public ModelAndView test() {  
   
    ModelAndView mv = new ModelAndView("success");  
    mv.addObject("a", "update");
     
    return mv;  
}

在頁面取值${a} 可取得update

相關文章
相關標籤/搜索