过年期间太忙了没来得及更新SpringMVC框架的知识点。
上一章主要讲述了@RequestParam这个注解,不知道大家有木有忘掉,这个注解的主要作用就是把请求参数映射到目标方法的形参上面。
其实这种做法也不好,试想一下对于表单参数就不是一个两个的了。这时候利用这个注解成本就消耗的特别大的了。
简单说一下场景:对于一个注册页面有很多信息譬如:用户名、密码、确认密码、邮箱、手机、兴趣等等
这时候就会想能不能将这些个参数包装在一个对象中(POJO),用这个POJO来做目标方法的形参上面。可以说的是springmvc是支持将pojo作为目标参数的。当然也是要遵循一些规则的,就是表单的name属性值要和POJO的属性值要一致。当然了,这样又会有一个新的疑问支不支持级联属性答案是支持的。
第一个知识点:使用POJO作为目标方法参数
public class Address{
private String city;
}
public class Person{
private String name;
.....
private Addrss address;//这个就是级联属性
}
示例代码:
POJO:
public class Address {
private String city;
private String province;
}
public class User {
private Integer id;
private String username;
private String password;
private Address address;
}
JSP:
<form action="${pageContext.request.contextPath}/springmvc/testUsePOJOAsParam">
用户:<input type="text" name="username"/>密码:<input type="password" name="password"/>编号:<input type="text" name="id"/><br>
省份:<input type="text" name="address.province"/>城市:<input type="text" name="address.city"/><br>
<input type="submit" value="使用pojo作为作为目标方法的参数,支持联级属性"/>
</form>
Java代码:
/**
* SpringMVC会按请求参数名和POJO属性名进行自动匹配,
* 自动为该对象填充属性值。支持级联属性
*
* @Title: testUsePOJOAsParam
* @Description: TODO (使用pojo作为作为参数传递给目标方法,支持联级属性)
* @Author: Hanson.Q
* @Create Date: 2016年2月16日 下午1:27:27
* @History: 2016年2月16日 下午1:27:27 Hanson Created.
* @param user
* @return
*
*/
@RequestMapping("/testUsePOJOAsParam")
public String testUsePOJOAsParam(User user) {
System.out.println("Use POJO as paramters : " + user);
return "success";
}
知识点二:使用servlet原生的API作为参数
springmvc支持使用原生的servletAPI作为目标方法的参数
jsp:
<a href="${pageContext.request.contextPath}/springmvc/testUseServletAPIAsParam">使用原生的API作为作为目标方法的参数</a>
JAVA代码:
/**
* 可以使用Servlet 原生的API作为目标方法的参数
* 具体支持以下类型: HttpServletRequest、
* HttpServletResponse、 HttpSession、 java.security.Principal、 Locale、
* InputStream、 OutputStream、 Reader、 Writer
*
* @Title: testUseServletAPIAsParam
* @Description: TODO (测试使用原生servletAPI作为目标参数)
* @Author: Hanson
* @Create Date: 2016年2月16日 下午1:34:36
* @History: 2016年2月16日 下午1:34:36 Hanson Created.
*
* @param request
* @param response
* @param out
* @return
* @throws IOException
*
*/
@RequestMapping("/testUseServletAPIAsParam")
public String testUseServletAPIAsParam(HttpServletRequest request,
HttpServletResponse response, Writer out) throws IOException {
System.out.println("Test servlet api ," + request + "," + response);
response.setContentType("text/html; charset=utf-8");
out.write("hello SpringMVC");
return "success";
}
运行结果页面显示:hello SpringMVC 。
这一章就讲这两个知识点。下一章我想将springmvc+spring+mybatis整合了。
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123