开启掘金成长之旅!这是我参与「掘金日新计划 · 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) 的全部内容了。
今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^
如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!