目录
MVC 的 Handler 方法可以接受 哪些 ServletAPI 类型的参数
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
一、使用Servlet原生API
在我们平常使用springMVC中,虽然说springMVC已经帮我们做了很多工作了,但是我们实际中还是会要用到Servlet的原生API,那这个时候要如何得到Servlet的原生对象呢?这里与struts2不同,springMVC是在方法中声明对应的参数来使用这些对象,而struts2则是调用相应的方法来得到这些对象。当然,对于没有学过struts2的同学,可以忽略,下面给出代码示例:
1.1 例1
在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:
/*
* 可以使用Serlet 原生API 作为目标方法的参数,具体支持以下类型
* HttpServletRequest
* HttpServletResponse
* HttpSession
* java.security.Principal
* Locale
* InputStream
* OutputStream
* Reader
* Writer
* */
@RequestMapping("/springmvc/testServletAPI")
public String testServletAPI(HttpServletRequest request, HttpServletResponse response){
System.out.println("testServletAPI,"+request+","+response);
return "ok";
}
打开web/index.jsp,在其页面的<body></body>标签中添加如下代码:
<p><a href="springmvc/testServletAPI">Test ServletAPI</a></p>
运行tomcat,idea会自动打开主页点,下面链接
访问成功之后,再看idea正下方日志控制台提示如下:
testServletAPI,org.apache.catalina.connector.RequestFacade@f40af06 org.apache.catalina.connector.ResponseFacade@39e22f10
1.2 例2
在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:
@RequestMapping("/springmvc/testServletAPI2")
public void testServletAPI2(HttpServletRequest request,
HttpServletResponse response, Writer out) throws IOException {
System.out.println("testServletAPI,"+request+","+response);
out.write("hello springMVC");
}
打开web/index.jsp,在其页面的<body></body>标签中添加如下代码:
<p><a href="springmvc/testServletAPI2">Test ServletAPI 2</a></p>
运行tomcat,idea会自动打开主页点,下面链接
二、springMVC支持哪些原生API
支持九种个对象,对应关系分别是:
ServletRequest -- ServletRequestServletResponse --
ServletResponseHttpSession -- HttpSession
Principal -- request.getUserPrincipal()
Locale -- RequestContextUtils.getLocale(request);
InputStream -- request.getInputStream();
Reader -- request.getReader();
OutputStream -- response.getOutputStream();
Writer -- response.getWriter();