参数接收
springMVC参数传递有一下几种形式:
1.request、response、session传递。
2.参数绑定
3.url动态参数
request、response、session传递
这种和servlet是一样的,request.getAttribute(“”),response.setAttribute(“”)等
参数绑定
http的参数是以key-value的形式传递的, springMVC接收参数是通过方法的形参来接收,而不是通过控制器的类成员来接收。
参数绑定分为这么几种形式
1.基本的java对象参数绑定
2.自定义pojo对象参数绑定
3.参数解析绑定pojo
4集合对象参数(List、Set等)绑定
基本的java对象参数绑定
http的参数是以key-value的形式传递的,springMVC会自动绑定key与形参名相同的参数。
1.测试方法
@Test
public void strParam() throwsIOException {
InputStream is = HttpUtil.doGet(testUrl + "/string?id=1&name=mark");
String response= StreamUtils.inputStreamToString(is, "UTF-8");
System.out.println(response);
}
testUrl是项目的url
public static String testUrl = "http://127.0.0.1:8080/study_ssmvc/params";
HttpUtil.doGet是发送http请求的工具方法,在下面的测试方法中也会出现
public class HttpUtil {
public static InputStream doGet(String urlstr) throws IOException {
URL url= new URL(urlstr);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
InputStream inputStream= conn.getInputStream();
return inputStream;
}
}
StreamUtils.inputStreamToString是将http响应InputStream转成String便于打印输出的工具方法。在下面的测试方法中也会出现。
public class StreamUtils {
public static String inputStreamToString(InputStreamis, String charset) throws IOException {
byte[] bytes = new byte[1024];
int byteLength = 0;
StringBuffer sb = new StringBuffer();
while((byteLength = is.read(bytes)) != -1) {
sb.append(new String(bytes, 0, byteLength, charset));
}
return sb.toString();
}
}
2.Controller
@ResponseBody
@RequestMapping("string")
public String strParam(String id, String name){
System.out.println("params = id:"+ id + ", name: "+ name);
TestVovo = new TestVo();
vo.setId(id);
vo.setName(name);
return vo.toString();
}
3.测试通过、响应数据
需要注意一点的是”@ResponseBody”的作用是将java对象转成json字符串,以response.write()形式产生响应。需要导入jackson.jar,或者也可以使用fastjson来序列化json。
使用fastjson的配置
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 配置Fastjson支持 -->
<bean
class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/