SpringMVC学习之旅-应用掌握篇(5)

81 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第35天,点击查看活动详情


写在前面

当我们学习了spring框架之后,基本上来说,已经是打好了一个良好得基础了。

但是距离一个企业的基本开发需要掌握的框架,还是得经过不断得学习,才行。

这不,我们继续学习下一个框架SpringMVC

SpringMVC这个框架,一般来说,用来作为我们项目得Controller层,用来接收用户得输入,然后选择相应得视图回显展示给用户。

MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC。

对于以前得项目来说,还有出现Struts得,但现在基本都很少了。

Struts1(现在一般不用),Struts2(一般老项目使用)等等。

这不,接下来就是spring mvc框架的学习之旅了,希望可以帮助到大家。

一、参数绑定处理

1.1 参数绑定示例

1.1.1 JSP代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>参数绑定演示demo</title>
    </head>

    <body>
        <!-- request请求的内容类型主要分为:K/V类型、Multipart类型、JSON类型 -->
        <!-- 将request请求参数,绑定到简单类型(基本类型和String类型)方法参数 -->
        <!-- 直接绑定 -->
        <a href="${pageContext.request.contextPath}/user/findUserById?id=1&name=bingbing">查询用户1</a>

        <!-- @RequestParam注解绑定 -->
        <a href="${pageContext.request.contextPath}/user/findUserById2?uid=1">查询用户2</a>

        <!-- 将request请求参数,绑定到POJO类型(简单POJO和包装POJO的)方法参数 -->
        <form action="${pageContext.request.contextPath}/user/saveUser" method="post">
            用户名称:<input type="text" name="username"><br />
            用户性别:<input type="text" name="sex"><br />
            所属省份:<input type="text" name="address.provinceName"><br />
            所属城市:<input type="text" name="address.cityName"><br />
            <input type="submit" value="保存">
        </form>

        <!-- 将request请求参数,绑定到[元素是简单类型的集合或数组]参数 -->
        <!-- 使用数组接收 -->
        <a href="${pageContext.request.contextPath}/user/findUserByIds?id=1&id=2&id=3">根据ID批量删除用户</a>

        <!-- 使用List接收(错误示例) -->
        <a href="${pageContext.request.contextPath}/user/findUserByIds2?id=1&id=2&id=3">根据ID批量删除用户</a>

        <!-- 使用Bean的List属性接收 -->
        <a href="${pageContext.request.contextPath}/user/findUserByIds3?uid=1&uid=2&uid=3">根据ID批量删除用户</a>Controller代码

        <!-- 将request请求参数,绑定到[元素是POJO类型的List集合或Map集合]参数 -->
        <form action="${pageContext.request.contextPath}/user/updateUser" method="post">
            用户名称:<input type="text" name="username"><br />
            用户性别:<input type="text" name="sex"><br />
            <!-- itemList[集合下标]:集合下标必须从0开始 -->
            <!-- 辅助理解:先将name属性封装到一个Item对象中,再将该Item对象放入itemList集合的指定下标处 -->
            购买商品1名称:<input type="text" name="itemList[0].name"><br />
            购买商品1价格:<input type="text" name="itemList[0].price"><br />
            购买商品2名称:<input type="text" name="itemList[1].name"><br />
            购买商品2价格:<input type="text" name="itemList[1].price"><br />

            <!-- itemMap['item3']:其中的item3、item4就是Map集合的key -->
            <!-- 辅助理解:先将name属性封装到一个Item对象中,再将该Item对象作为value放入itemMap集合的指定key处 -->
            购买商品3名称:<input type="text" name="itemMap['item3'].name"><br />
            购买商品3价格:<input type="text" name="itemMap['item3'].price"><br />
            购买商品4名称:<input type="text" name="itemMap['item4'].name"><br />
            购买商品4价格:<input type="text" name="itemMap['item4'].price"><br />
            <input type="submit" value="保存">
        </form>

        <!-- 将request请求参数,绑定到Date类型方法参数 -->
        <!-- 请求参数是:【年月日】 格式 -->
        <a href="${pageContext.request.contextPath}/user/deleteUser?birthday=2018-01-01">根据日期删除用户(String)</a>

        <!-- 请求参数是:【年月日 时分秒】 格式 -->
        <a href="${pageContext.request.contextPath}/user/deleteUser2?birthday=2018-01-01 12:10:33">根据日期删除用户(Date)</a>

        <!-- 文件类型参数绑定 -->
        <form action="${pageContext.request.contextPath}/fileupload" method="post" enctype="multipart/form-data">
            图片:<input type="file" name="uploadFile" /><br />
            <input type="submit" value="上传" />
        </form>
    </body>
</html>

1.1.2 Controller代码

@RequestMapping("user")
@Controller
public class UserController {

    @RequestMapping("findUserById")
    public String findUserById(Integer id,Model model,HttpServletRequest request) {
        model.addAttribute("msg", "直接参数绑定接收到的参数:"+id);
        model.addAttribute("msg", "通过Request getParameter参数接收到的参数:"+request.getParameter("id"));
        return "success";
    }

    // @RequestParam:可以理解为request.getParameter("参数key")
    @RequestMapping("findUserById2")
    public String findUserById2(@RequestParam("uid") Integer id,Model model) {
        model.addAttribute("msg", "接收到的参数:"+id);
        return "success";
    }

    @RequestMapping("saveUser")
    public String saveUser(User user,Model model) {
        model.addAttribute("msg", "接收到的参数:"+user.toString());
        return "success";
    }

    @RequestMapping("deleteUser")
    public String deleteUser(String birthday,Model model) {
        model.addAttribute("msg", "接收到的参数:"+birthday);
        return "success";
    }

    @RequestMapping("deleteUser2")
    public String deleteUser2(Date birthday,Model model) {
        model.addAttribute("msg", "接收到的参数:"+birthday);
        return "success";
    }

    @RequestMapping("findUserByIds")
    public String findUserByIds(Integer[] id,Model model) {
        model.addAttribute("msg", "接收到的参数:"+id);
        return "success";
    }

    @RequestMapping("findUserByIds2")
    public String findUserByIds2(List<Integer> id,Model model) {
        model.addAttribute("msg", "接收到的参数:"+id);
        return "success";
    }

    @RequestMapping("findUserByIds3")
    public String findUserByIds3(User user,Model model) {
        model.addAttribute("msg", "接收到的参数:"+user.getUid());
        return "success";
    }

    @RequestMapping("updateUser")
    public String updateUser(User user,Model model) {
        model.addAttribute("msg", "接收到的参数:"+user.getUid());
        return "success";
    }
}

1.1.3 PO代码

@Data
public class User {
    private int id;
    private String username;
    private Date birthday;
    private String sex;自定义日期参数绑定

    // 演示包装POJO参数绑定
    private Address address;

    // 演示批量简单类型参数接收
    private List<Integer> uid = new ArrayList<>();

    // 将request请求参数,绑定到[元素是POJO类型的List集合]参数
    private List<Item> itemList = new ArrayList<>();

    // 将request请求参数,绑定到[元素是POJO类型的Map集合]参数
    private Map<String, Item> itemMap = new HashMap<>();
}

好了,以上就是SpringMVC学习之旅-应用掌握篇(5) 的全部内容了。

今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^

如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!

image.png