SpringMVC从入门到精通第七章【转】

过年期间太忙了没来得及更新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 。


作者: HansonQ 
链接:http://www.imooc.com/article/4799
来源:慕课网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值