L130301X1 实现用户增加操作
1、将素材中的dao、pojo、service目录下的java类替换掉
2、在UserController.java中增加以下代码
@RequestMapping(value="/useradd.html",method=RequestMethod.GET)
public String addUser(@ModelAttribute("user")User user){
return "useradd";}
@RequestMapping(value="/addsave.html",method=RequestMethod.POST)
public String addUserSave(User user,HttpSession session){
user.setCreatedBy(((User)(session.getAttribute(Constants.USER_SESSION))).getId());
user.setCreationDate(new Date());
if(userService.add(user)){
return "redirect:/user/userlist.html";}
return "useradd";}}
说明:
上面的public String addUser(@ModelAttribute("user")User user)与一下代码一样
public String addUser(User user,Model model){
Model.addAttribute("user",user);}
3、将useradd.jsp文件拷贝进入项目修改里面的额访问路径,同时修改userlist.jsp里面的相关访问路径
4、用户角色由自动映射代码改成写死代码 ,注释掉useradd.js中的相应代码
<!-- <select name="userRole" id="userRole"></select> -->
<select name="userRole" id="userRole">
<option value="1">系统管理员</option>
<option value="2">经理</option>
<option value="3" selected="selected">普通用户</option>
</select>
5、在user类中private Date birthday; //出生日期前面加上
@DateTimeFormat(pattern="yyyy-MM-dd")
L130301X2 spring表单标签
1、在jsp下面新建user文件夹,将userlist.jsp拷贝进去,然后新建jsp文件名字为useradd.jsp
2、将<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>标签拷贝到useradd.jsp中,并在里面配置如下代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>
<!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>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/statics/calendar/WdatePicker.js"></script>
</head>
<body>
<fm:form method="post" modelAttribute="user">
用户编码:<fm:input path="userCode"/><br/>
用户名称:<fm:input path="userName"/><br/>
用户密码:<fm:password path="userPassword"/><br/>
用户生日:<fm:input path="birthday" Class="Wdate" id="birthday" name="birthday"
readonly="readonly" onclick="WdatePicker();"/><br/>
用户地址:<fm:input path="address"/><br/>
联系电话:<fm:input path="phone"/><br/>
用户角色:
<fm:radiobutton path="userRole" value="1"/>系统管理员
<fm:radiobutton path="userRole" value="2"/>经理
<fm:radiobutton path="userRole" value="3" checked="checked"/>普通用户
<br/>
<input type="submit" value="保存"/>
</fm:form>
</body>
</html>
3、进入UserController.java,配置一下代码
@RequestMapping(value="/add.html",method=RequestMethod.GET)
public String add(@ModelAttribute("user") User user){
return "user/useradd";}
@RequestMapping(value="/add.html",method=RequestMethod.POST)
public String addSave(User user,HttpSession session){
user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
user.setCreationDate(new Date());
if(userService.add(user)){
return "redirect:/user/userlist.html";}
return "user/useradd";}
4、在浏览器中输入http://localhost:8080/L130101X1SpringMVC/进行登陆后在将其网址改为http://localhost:8080/L130101X1SpringMVC/user/add.html进行测试
L130401X1 在页面上数据验证提示错误信息
1、将相应的jar包拷贝进入项目
hibernate-validator-4.3.2.Final.jar、jboss-logging-3.1.0.CR2.jar、validation-api-1.0.0.GA.jar
2、在User.java类中加上以下注释
@NotEmpty(message="用户编码不能为空")
private String userCode; //用户编码
@NotEmpty(message="用户名称不能为空")
private String userName; //用户名称
@NotNull(message="用户密码不能为空")
@Length(min=6,max=10,message="用户密码长度为6-10")
private String userPassword; //用户密码
@Past(message="必须是一个过去的时间")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday; //出生日期
3、将UserController.java中的addSave()方法改成如下
@RequestMapping(value="/add.html",method=RequestMethod.POST)
public String addSave(@Valid User user,BindingResult bindingResult,HttpSession session){
if(bindingResult.hasErrors()){
logger.debug("add user validated has error===============");
return "user/useradd"; }
user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
user.setCreationDate(new Date());
if(userService.add(user)){
return "redirect:/user/userlist.html"; }
return "user/useradd";}
4、在useradd.jsp的以下代码钱加上以下标签
<fm:errors path="userCode"/><br/>
用户编码:<fm:input path="userCode"/><br/>
<fm:errors path="userName"/><br/>
用户名称:<fm:input path="userName"/><br/>
<fm:errors path="userPassword"/><br/>
用户密码:<fm:password path="userPassword"/><br/>
<fm:errors path="birthday"/><br/>
用户生日:<fm:input path="birthday" Class="Wdate" id="birthday" name="birthday"
readonly="readonly" onclick="WdatePicker();"/><br/>
5、测试结果
L130501X1 修改用户信息
1、将dao和service的相关功能代码从素材中拷贝过来
2、在UserController.java中配置以下代码
// 根据用户ID获取用户信息
@RequestMapping(value="/usermodify.html",method=RequestMethod.GET)
public String getUserById(@RequestParam String uid,Model model){
User user=userService.getUserById(uid);
model.addAttribute(user);
return "usermodify";}
@RequestMapping(value="/usermodifysave.html",method=RequestMethod.POST)
public String modifyUserSave(User user,HttpSession session){
user.setModifyBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
user.setModifyDate(new Date());
if(userService.modify(user)){
return "redirect:/user/userlist.html";}
3、进入userlist.jsp,逐步修改userlist.js、拷贝usermodify.jsp等操作
4、在usermodify.jsp中修改异步操作等,部署项目测试
L130601X1 使用REST查看用户信息
1、在UserController.java中配置以下代码
@RequestMapping(value="/view/{id}",method=RequestMethod.GET)
public String view(@PathVariable String id,Model model){
User user=userService.getUserById(id);
model.addAttribute(user);
return "userview";}
2、从素材中拷贝相关页面修改
3、部署项目测试,测试结果
L130701X1 实现单文件上传
1、执行素材中的smbms_db.sql脚本
2、导入commons-fileupload-1.2.2.jar、commons-io-2.4.jar、commons-lang-2.6.jar文件
3、User.java中加入private String idPicPath;及get和set方法,并修改dao下的相关代码
4、在springmvc-servlet.xml中配置以下代码
<!-- 配置MultipartResolver,用于文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
5、在用户增加的useradd.jsp页面中的form表单中增加
(1)form标签中加enctype="multipart/form-data"
(2)用户角色label标签下面加上一下div
<div>
<input type="hidden" id="errorinfo" value="${uploadFileError} ">
<label for="a_idPicPath">证件照:</label>
<input type="file" name="a_idPicPath" id="a_idPicPath" value="">
<font color="red"></font>
</div>
6、在UserController.java中将addUserSave方法改成以下代码
@RequestMapping(value="/addsave.html",method=RequestMethod.POST)
public String addUserSave(User user,
HttpSession session,
HttpServletRequest request,
@RequestParam(value="a_idPicPath",required=false) MultipartFile attach){
String idPicPath="";
//判断文件是否为空
if(!attach.isEmpty()){
// 定义上传目标路径
String path=request.getSession().getServletContext().getRealPath("static"+File.separator+"uploadfiles");
String oldFileName=attach.getOriginalFilename();
String prefix=FilenameUtils.getExtension(oldFileName);
int filesize=500000;
if(attach.getSize()>filesize){
request.setAttribute("uploadFileError", "*上传大小不得超过500k");
return "useradd";
}else if(prefix.equalsIgnoreCase("jpg")
|| prefix.equalsIgnoreCase("jpeg")
|| prefix.equalsIgnoreCase("png")
|| prefix.equalsIgnoreCase("pneg")){
//当前系统时间+随机数+"_Personal.jpg"
String fileName=System.currentTimeMillis()
+RandomUtils.nextInt(1000000)+"Personal.jpg";
File targetFile=new File(path,fileName);
if(!targetFile.exists()){
targetFile.mkdirs(); }
try {
attach.transferTo(targetFile);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
request.setAttribute("uploadFileError", "*上传失败");
return "useradd";}
idPicPath=path+File.separator+fileName;
}else{
request.setAttribute("uploadFileError", "*上传图片格式不正确");
return "useradd";}}
user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
user.setCreationDate(new Date());
user.setIdPicPath(idPicPath);
if(userService.add(user)){
return "redirect:/user/userlist.html";}
return "useradd";}
7、在useradd.js里面加上以下代码
(1)在声明变量处加入
var a_idPicPath=null;
var errorinfo=null;
(2)founction函数中加入
a_idPicPath= $("#a_idPicPath");
errorinfo= $("#errorinfo");
if(errorinfo.val() == null || errorinfo.val() == ""){
a_idPicPath.next().html("* 上传大小不能超过500K * 上传文件类型必须为:jpg、jpeg、png、pneg");
}else{
a_idPicPath.next().html(errorinfo.val());}
8、在useradd.jsp中加入以下代码
<div>
<input type="hidden" id="errorinfo" value="${uploadFileError}"/>
<label for="a_idPicPath">证件照:</label>
<input type="file" name="attachs" id="a_idPicPath"/>
<font color="red"></font>
</div>
9、部署项目测试
L130801X1 实现多文件上传
1、将smbms_db.sql脚本导入数据库
2、useradd.jsp代码为
<div>
<input type="hidden" id="errorinfo" value="${uploadFileError}"/>
<label for="a_idPicPath">证件照:</label>
<input type="file" name="attachs" id="a_idPicPath"/>
<font color="red"></font>
</div>
<div>
<input type="hidden" id="errorinfo_wp" value="${uploadWpError}"/>
<label for="a_workPicPath">工作证照片:</label>
<input type="file" name="attachs" id="a_workPicPath"/>
<font color="red"></font>
</div>
3、useradd.js代码
(1)在声明变量处加入
var a_idPicPath=null;
var errorinfo=null;
var a_workPicPath=null;
var errorinfo_wp=null;
(2)founction函数中加入
a_idPicPath= $("#a_idPicPath");
errorinfo= $("#errorinfo");
a_workPicPath= $("#a_workPicPath");errorinfo_wp= $("#errorinfo_wp");
if(errorinfo.val() == null || errorinfo.val() == ""){
a_idPicPath.next().html("* 上传大小不能超过500K * 上传文件类型必须为:jpg、jpeg、png、pneg");
}else{a_idPicPath.next().html(errorinfo.val());}
if(errorinfo_wp.val() == null || errorinfo_wp.val() == ""){
a_workPicPath.next().html("* 上传大小不能超过500K * 上传文件类型必须为:jpg、jpeg、png、pneg");
}else{a_workPicPath.next().html(errorinfo_wp.val());}
4、UserController.java代码
@RequestMapping(value="/addsave.html",method=RequestMethod.POST)
public String addUserSave(User user,
HttpSession session,
HttpServletRequest request,
@RequestParam(value="attachs",required=false) MultipartFile[] attachs){String idPicPath=null;String workPicPath=null;String errorInfo=null;
boolean flag=true;
String path=request.getSession().getServletContext()
.getRealPath("static"+File.separator+"uploadfiles");
for(int i=0;i<attachs.length;i++){
MultipartFile attach=attachs[i];
//判断文件是否为空
if(!attach.isEmpty()){
if(i==0){errorInfo="uploadFileError";
}else if(i==1){errorInfo="uploadwpError";}
// 定义上传目标路径
String oldFileName=attach.getOriginalFilename();
String prefix=FilenameUtils.getExtension(oldFileName);
int filesize=500000;
if(attach.getSize()>filesize){
request.setAttribute("errorInfo", "*上传大小不得超过500k");
flag=false;
}else if(prefix.equalsIgnoreCase("jpg")|| prefix.equalsIgnoreCase("jpeg")
|| prefix.equalsIgnoreCase("png")|| prefix.equalsIgnoreCase("pneg")){
//当前系统时间+随机数+"_Personal.jpg"
String fileName=System.currentTimeMillis()
+RandomUtils.nextInt(1000000)+"Personal.jpg";
File targetFile=new File(path,fileName);
if(!targetFile.exists()){
targetFile.mkdirs();}
try {attach.transferTo(targetFile);
} catch (Exception e) {e.printStackTrace();
request.setAttribute(errorInfo, "*上传失败");
flag=false;}
if(i==0){
idPicPath=path+File.separator+fileName;
}else if(i==1){
workPicPath=path+File.separator+fileName;}
}else{
request.setAttribute("errorInfor", "*上传图片格式不正确");
flag=false;}}}
if(flag){
user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
user.setCreationDate(new Date());
user.setIdPicPath(idPicPath);
user.setWorkPicPath(workPicPath);
if(userService.add(user)){
return "redirect:/user/userlist.html";}}
return "useradd";}