为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 SpringMVC从入门到精通第七章

SpringMVC从入门到精通第七章

2016.02.16 13:38 5065浏览

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

点击查看更多内容
22人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
334
获赞与收藏
3452

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消