注:因爲項目直接下載後,只要符合部署環境,保證可運行,而且已經上線部署運行測試(無需maven等版本控制)。此外,因爲項目代碼數量巨大,此處已對文件結構及詳細進行說明,故只貼登陸控制層(LoginController)爲例。下載後有任何問題都可與我聯繫(郵箱:yws_ssh@163.com),或者直接點擊http://yws233.cn:8080/kuaib/(項目部署網址進行體驗)查看系統功能詳細說明。html
此外,因爲該項目耗費做者半年左右時間、心血,是純粹的原創,版權徹底歸做者全部,僅供我的學習交流使用,如要用於其餘商業、分享、建議等行爲,請務必與做者聯繫。前端
1、代碼實現過程java
1.項目技術說明mysql
前端:HTML5 + CSS3 + JS + jQuery + ajax + fastjson + xhEditer + pdf.jsweb
後端:SpringMVC + Spring + Mybatis + POIXMLDocument + SimHashajax
數據庫:MySQL + Redis(緩存後期)spring
服務器:Tomcat9.02 + aliyun + jdk1.8sql
文件處理:POI + PDFBOX + JDOM + itextpdf數據庫
開發環境:ubuntu16.04 + IDEA17.2apache
2.配置文件部分
MySQL數據庫配置 -----> database.properties
LOG4J配置文件-----------> log4j.properties
Mybatis----------------------> mybatis-config.xml
SpringMVC配置文件-----> springmvc-servlet.xml
Spring配置文件------------> applicationContext-mybatis.xml
3.核心控制層
BaseController(基礎過濾層)
LoginController(登陸控制層)
UserController(主頁控制層)
下貼登陸層代碼爲例:
/* * 登陸控制層 * */ package cn.kuaib.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.mysql.jdbc.StringUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import cn.kuaib.pojo.User; import cn.kuaib.service.UserService; import cn.kuaib.tools.Constants; import org.springframework.web.bind.annotation.ResponseBody; import java.text.SimpleDateFormat; import java.util.Date; @Controller public class LoginController { private Logger logger = Logger.getLogger(LoginController.class); @Resource private UserService userService; @RequestMapping(value="/login.html") public String login(){ logger.debug("LoginController welcome Kuaib=================="); // 隨機顯示登陸頁文字 return "login"; } @RequestMapping(value="/dologin.html",method=RequestMethod.POST) public String doLogin(@RequestParam String userCode,@RequestParam String userPassword,HttpServletRequest request,HttpSession session) throws Exception{ logger.debug("doLogin===================================="); //調用service方法,進行用戶匹配 User user = userService.login(userCode,userPassword); String loginPic = request.getParameter("picconfirm"); //獲取驗證值 Boolean confirm = loginPic.equals("驗證成功!"); logger.info("######piccccccccccccccccccc:" + loginPic); logger.info("######piccccccccccccccccccc:" + confirm); if (null != user){ if(user.getUserCode() != "" && user.getUserCode() != null && user.getUserPassword() != null && user.getUserPassword() != "" && loginPic.equals("驗證成功!")){//登陸成功 //放入session session.setAttribute(Constants.USER_SESSION, user); //放入密碼,文件上傳使用 session.setAttribute(Constants.USER_PASS,user); return "redirect:/sys/main.html"; //進入攔截器進行驗證 } }else{ //頁面跳轉(login.jsp)帶出提示信息--轉發 request.setAttribute("error", "*用戶名或密碼不正確"); return "login"; } return "login"; } /* * 用戶註冊 * */ @RequestMapping(value = "adduser.html", method = RequestMethod.POST) public String addUser(User user, HttpSession session){ try { if (userService.addReg(user) == true){ session.setAttribute("regtrue", "註冊成功!"); //放置註冊成功提示 return "redirect:/login.html"; } } catch (Exception e) { e.printStackTrace(); } return "register"; } /* * 異步判斷註冊用戶是否重名 * */ @RequestMapping(value = "/userCodeExist.html") @ResponseBody //異步處理結果直接寫入HTTP ResponseBody中 public Object userCodeIsExist(@RequestParam String userCode){ logger.info("///////////*****************////////////進入異步判斷"); /*HashMap<String, String> resultMap = new HashMap<String, String>();*/ String cjson = null; logger.debug("userCodeIsExit userCode===================== "+userCode); if (StringUtils.isNullOrEmpty(userCode)){ /*resultMap.put("userCode", "exist");*/ //若是用戶已經存在 logger.info("//////************************進入null:"); return "nullcode"; }else { try { User user = userService.registerUser(userCode); if (null != user){ cjson = "exist"; //用戶不爲空則已存在 }else { // 註冊用戶長度不能長於10 int len = userCode.length(); if (len >= 10){ cjson = "toolen"; //用戶輸入的長度超過10則提示 }else { cjson = "noexist"; //用戶爲空,則能夠註冊 } } } catch (Exception e) { e.printStackTrace(); } } /*logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>" + JSONArray.toJSONString(resultMap)); return JSONArray.toJSONString(resultMap);*/ logger.info("//////************************cjson:" + cjson); return cjson; } /* * 異步判斷用戶郵箱是否存在 * */ @RequestMapping(value = "/userpwdexist.html") @ResponseBody public String userPasswordExist(@RequestParam String email){ logger.info("進入郵箱異步判斷>>>>>>>>>>>>>>>>>>>>>>>>>>>"); String ejson = null; if (StringUtils.isNullOrEmpty(email)){ return "nullpwd"; }else { User user = userService.backPassword(email); if (null != user){ ejson = "existpwd"; }else { ejson = "noexistpwd"; } } logger.info("//////************************cjson:" + ejson); return ejson; } /* * 跳轉至找回密碼頁面 * */ @RequestMapping(value = "back.html") public String back(){ return "forget"; } /* * 找回密碼 * */ @RequestMapping(value = "backpassword.html",method = RequestMethod.POST) public String backPass(@RequestParam String email, HttpSession session){ User user = userService.backPassword(email); if (user != null){ session.setAttribute(Constants.PASSWORD,user.getUserPassword()); return "backpwd"; } session.setAttribute(Constants.SYS_MESSAGE,"*您的郵箱不存在,請先註冊"); return "forget"; } /* * 跳轉到登陸頁面 * */ @RequestMapping(value = "backlogin.html") public String backLogin(){ return "login"; } @RequestMapping(value = "register.html") public String skipRegister(){ return "register"; } @RequestMapping(value="/sys/main.html") public String main(HttpSession session){ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//設置日期格式 session.setAttribute(Constants.DATA_NOW,df.format(new Date())); return "main"; } }
Dao層,Service層等
4.前端部分
其中pdf和xhEditer爲插件,可在官網瞭解。
jsp及lib包
2、代碼實現過程
1.總體項目下載後,解壓後導入IDEA:
2.數據庫及SSM配置文件(修改你本身的用戶名密碼)
3.核心控制層
4.前端web層
3、演示效果
1.登陸頁
2.主頁(各區域文件上傳顯示圖)
3.交換系統
4.註冊頁
5.密碼找回