1、itemsEasyui.jsp
应用到的插件及知识点:日期控件My97 ,图片本地预览函数PreviewImage()
(1)easy ui 的模态窗口使用时,要指定DIV的属性 data-options="modal:true,closed:true,iconCls:'icon-save'" 主要是modal:true,需要展示时使用 jQuery("#itemsDiv").window('open'); 打开指定的div
(2) 利用FormData对象
,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,.比起普通的ajax,使用FormData
的最大优点就是我们可以异步上传一个二进制文件. <form id="itemsForm" enctype="multipart/form-data" style="padding:10px 20px 10px 40px;">本例中因为要上传一个图片,序列化语句不能传递。$("#itemsForm").serializeArray()在有上传文件的格式时不能用;采用了ajax方法异步上传
var formData = new FormData($( "#itemsForm" )[0]); 79 $.ajax({ 80 url: 'addOrUpdate' , 81 type: 'POST', 82 data: formData, 83 async: false, 84 cache: false, 85 contentType: false, 86 processData: false, 87 success: function (returndata) { 88 $('#itemsDiv').window('close'); 89 $('#itemsTable').datagrid('reload'); 90 $.messager.alert('提示',returndata.mes,'info'); 91 } 92 });
1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <%@include file="/taglibs.jsp" %> 3 4 5 165 166 167 168169171 172 173170
174 188189 190 191 192
2、itemsController.java
1 package com.lr.controller; 2 3 import java.io.File; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.UUID; 8 9 import javax.servlet.http.HttpServletRequest; 10 11 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.stereotype.Controller; 13 import org.springframework.ui.Model; 14 import org.springframework.validation.BindingResult; 15 import org.springframework.validation.ObjectError; 16 import org.springframework.validation.annotation.Validated; 17 import org.springframework.web.bind.annotation.ModelAttribute; 18 import org.springframework.web.bind.annotation.PathVariable; 19 import org.springframework.web.bind.annotation.RequestMapping; 20 import org.springframework.web.bind.annotation.RequestMethod; 21 import org.springframework.web.bind.annotation.RequestParam; 22 import org.springframework.web.bind.annotation.ResponseBody; 23 import org.springframework.web.multipart.MultipartFile; 24 import org.springframework.web.servlet.ModelAndView; 25 26 import com.lr.controller.validation.ValidGroup1; 27 import com.lr.po.ItemsCustom; 28 import com.lr.po.ItemsQueryVo; 29 import com.lr.service.ItemsService; 30 31 /** 32 * 33 *34 * Title: ItemsController
35 *Description:商品的controller
36 * @date 2015-4-13下午4:03:35 37 * @version 1.0 38 */ 39 @Controller 40 //为了对url进行分类管理 ,可以在这里定义根路径,最终访问url是根路径+子路径 41 //比如:商品列表:/items/queryItems.action 42 @RequestMapping("/items") 43 public class ItemsController { 44 45 @Autowired 46 private ItemsService itemsService; 47 48 49 //商品分类 50 //itemtypes 表示最终将方法返回值放在request中的key ; 51 @ModelAttribute("itemtypes") 52 public MapgetItemTypes(){ 53 Map itemTypes= new HashMap (); 54 itemTypes.put("101","数码"); 55 itemTypes.put("102","食品"); 56 return itemTypes; 57 } 58 // 商品查询 59 @RequestMapping("/queryItems") 60 public ModelAndView queryItems(HttpServletRequest request,Integer id ,ItemsQueryVo itemsQueryVo) throws Exception { 61 //测试forward后request是否可以共享 62 63 // 调用service查找 数据库,查询商品列表 64 List itemsList = itemsService.findItemsList(itemsQueryVo); 65 66 // 返回ModelAndView 67 ModelAndView modelAndView = new ModelAndView(); 68 // 相当 于request的setAttribut,在jsp页面中通过itemsList取数据 69 modelAndView.addObject("itemsList", itemsList); 70 71 // 指定视图 72 // 下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为 73 // modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); 74 // 上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀 75 modelAndView.setViewName("items/itemsList"); 76 77 return modelAndView; 78 79 } 80 81 //添加商品,ID用当前时间的 82 @RequestMapping(value="/addItems") 83 public String addItems( ) throws Exception { 84 return "items/addItems"; 85 } 86 //添加商品 通过 EASYUI框架 87 @RequestMapping(value="/addOrUpdate",method=RequestMethod.POST) 88 @ResponseBody 89 public Map addOrUpdate(ItemsCustom itemsCustom,MultipartFile items_pic ) throws Exception{ 90 //spring会利用jackson自动将返回值封装成JSON对象,比struts2方便了很多 91 Map map = new HashMap (); 92 int randNumber = (int)(1+Math.random()*(10000000-56785+1)); 93 itemsCustom.setId(randNumber); 94 //itemsCustom.setPic("abc.jpg"); 95 String orgPicName = items_pic.getOriginalFilename(); 96 //存在图片路径 97 String picPath= "h:\\web_upload\\"; 98 if (orgPicName!=null && picPath!=null && orgPicName.length()>0) { 99 //新文件名100 String newFileName = UUID.randomUUID() + orgPicName.substring(orgPicName.lastIndexOf("."));101 File newFile = new File(picPath+newFileName);102 //将内存中的数据写入磁盘103 items_pic.transferTo(newFile);104 itemsCustom.setPic(newFileName);105 }106 107 try {108 itemsService.addItems(itemsCustom);109 map.put("mes", "操作成功");110 } catch (Exception e) {111 e.printStackTrace();112 map.put("mes", "操作失败");113 throw e;114 }115 return map; 116 }117 118 119 @RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})120 //@RequestParam里边指定request传入参数名称和形参进行绑定。121 //通过required属性指定参数是否必须要传入122 //通过defaultValue可以设置默认值,如果id参数没有传入,将默认值和形参绑定。123 public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {124 125 //调用service根据商品id查询商品信息126 ItemsCustom itemsCustom = itemsService.findItemsById(items_id);127 /* if (itemsCustom==null) {128 throw new CustomException("修改的商品信息不存在!");129 }*/130 131 //通过形参中的model将model数据传到页面132 //相当于modelAndView.addObject方法133 model.addAttribute("items", itemsCustom);134 135 return "items/editItems";136 }137 138 //商品信息修改提交,及校验139 //在需要校验的POJO前面加@Validated,后面添加BindingResult接收校验输出的错误信息140 //注意:@Validated和BindingResult bindingResult 是配对出现,并且形参顺序是固定的(一前一后)141 //value= {ValidGroup1.class})指定使用分组1的校验142 //143 @RequestMapping("/editItemsSubmit")144 public String editItemsSubmit(Model model,145 HttpServletRequest request,146 String pic,147 Integer id,148 @Validated(value= {ValidGroup1.class}) ItemsCustom itemsCustom,149 BindingResult bindingResult,150 MultipartFile items_pic //接收商品图片151 )throws Exception {152 153 //获取校验错误信息154 if (bindingResult.hasErrors()) {155 // 输出错误信息156 List allErrors = bindingResult.getAllErrors();157 158 for (ObjectError objectError : allErrors) {159 // 输出错误信息160 System.out.println(objectError.getDefaultMessage());161 162 }163 // 将错误信息传到页面164 model.addAttribute("allErrors", allErrors);165 166 167 //可以直接使用model将提交pojo回显到页面168 model.addAttribute("items", itemsCustom);169 170 // 出错重新到商品修改页面171 return "items/editItems";172 }else {173 //上传图片174 String originalFilename = items_pic.getOriginalFilename();175 //存储图片的物理路径176 String pic_path = "h:\\web_upload\\";177 //原文件名称 178 179 System.out.println("==================================================");180 System.out.println(pic);181 String oldFileName = pic;182 if (items_pic!=null && originalFilename!=null && originalFilename.length()>0 ) {183 184 185 //新的图片名称186 String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));187 //新图片188 File newFile = new File(pic_path+newFileName);189 190 //将内存中的数据写入磁盘191 items_pic.transferTo(newFile);192 oldFileName = newFileName;193 194 }195 //将新图片名称写到itemsCustom中196 itemsCustom.setPic(oldFileName);197 //如果正确,执行更新操作。198 itemsService.updateItems(id, itemsCustom);199 200 return "forward:queryItems.action";201 202 }203 }204 //商品批量删除205 @RequestMapping("deleteItems")206 public String deleteItems(Integer[] items_id) throws Exception{207 208 for (int i:items_id) {209 itemsService.deleteItems(i);210 211 }212 return "success";213 214 }215 216 //商品批量修改217 @RequestMapping("editItemsQuery")218 public ModelAndView editItemsQuery(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception{219 220 221 // 调用service查找 数据库,查询商品列表222 List itemsList = itemsService.findItemsList(itemsQueryVo);223 224 // 返回ModelAndView225 ModelAndView modelAndView = new ModelAndView();226 // 相当 于request的setAttribut,在jsp页面中通过itemsList取数据227 modelAndView.addObject("itemsList", itemsList);228 229 // 指定视图230 // 下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为231 // modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");232 // 上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀233 modelAndView.setViewName("items/editItemsQuery");234 235 return modelAndView;236 }237 238 //批量商品修改提交239 //通过ItemsQueryVo接收批量提交的信息,将商品信息存储到itemsQueryVo中itemsList属性中240 @RequestMapping("/editItemsAllSubmit")241 public String editItemsAllSubmit(ItemsQueryVo itemsQueryVo) throws Exception{242 243 return "success";244 }245 246 //查询商品信息,输出json247 ///itemsView/{id}中的 {id},表示将这个位置的参数传到@PathVariable指定的名称变量中;248 @RequestMapping("/itemsView/{id}")249 250 public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception{251 ItemsCustom itemsCustom = itemsService.findItemsById(id);252 return itemsCustom;253 }254 255 256 // 商品查询输入到easy ui 257 @RequestMapping("/queryItemsMap")258 @ResponseBody259 //@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口260 //将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。 261 public Map queryItemsMap(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception {262 //测试forward后request是否可以共享 263 // 调用service查找 数据库,查询商品列表264 List itemsList = itemsService.findItemsList(itemsQueryVo);265 266 Map itemsMap = new HashMap ();267 itemsMap.put("total",13);268 itemsMap.put("rows",itemsList);269 270 return itemsMap;271 272 }273 274 275 @RequestMapping("list") 276 public String list() throws Exception {277 278 return "items/itemsEasyUi";279 } 280 }
3、main.jsp
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@include file="/taglibs.jsp" %> 3 4 5 6lr信息综合管理平台 7 38 39 63 6465686667当前用户:${username} 退出
69 96 769798 99106100104 105101103欢迎使用lr综合管理平台102107 Copyright © 2018-2020 lr股份有限公司 版权所有 108109 110 111 112
4 index.jsp 登录页
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 5 6 7 8 9 1054 55 56系统登录 11 12 13 27 28 29 30 31
5 LoginController.java
1 package com.lr.controller; 2 3 import javax.servlet.http.HttpSession; 4 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 9 import com.lr.common.StringUtil;10 import com.lr.po.LrUser;11 import com.lr.service.LoginService;12 13 /**14 * Filename:LoginController.java15 * Descript:登录退出16 * Parm:17 * Author:zhangsh18 * CreateDate:2018年3月5日 下午4:40:3919 * 20 */21 @Controller22 public class LoginController {23 24 @Autowired25 private LoginService loginService;26 27 //登录28 @RequestMapping("/login")29 public String login(HttpSession session,String username,String password) throws Exception{30 31 //调用service 进行用户身份验证32 //.....33 34 LrUser user = null;35 user = loginService.findUserByName(username);36 if (user==null ) {37 //不存在的用户;用户名或密码错误,设置session标记flag为false38 session.setAttribute("flag","false"); 39 return "redirect:index.jsp";40 }41 String orgPassword ;42 orgPassword = user.getPassword();43 String userPwd = StringUtil.getSign(username) ;44 System.out.println(userPwd);45 if (orgPassword.equals(userPwd)) {46 //验证通过,转主页面47 session.setAttribute("username",username);48 return "pub/main";49 }else {50 //登录失败,返回重新登录,在缓存中加入false为了在登录页提醒;51 session.setAttribute("flag","false");52 return "redirect:index.jsp";53 }54 }55 56 //退出57 @RequestMapping("/logout")58 public String logout(HttpSession session) throws Exception{59 //清除session60 session.invalidate();61 return "redirect:index.jsp";62 }63 }
附:项目结构