Spring MVC核心应用2

戏子无情 提交于 2019-12-04 06:28:12

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、测试结果

wps836D.tmp

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、部署项目测试,测试结果

wps83BC.tmp

wps83CD.tmp

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";}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!