一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)
概述
详细
注:由于项目直接下载后,只要符合部署环境,保证可运行,并且已经上线部署运行测试(无需maven等版本控制)。此外,由于项目代码数量巨大,此处已对文件结构及详细进行说明,故只贴登录控制层(LoginController)为例。下载后有任何问题均可与我联系(邮箱:yws_ssh@163.com),或者直接点击http://yws233.cn:8080/kuaib/(项目部署网址进行体验)查看系统功能详细说明。
此外,由于该项目耗费作者半年左右时间、心血,是纯粹的原创,版权完全归作者所有,仅供个人学习交流使用,如要用于其他商业、分享、建议等行为,请务必与作者联系。
一、代码实现过程
1.项目技术说明
前端:HTML5 + CSS3 + JS + jQuery + ajax + fastjson + xhEditer + pdf.js
后端:SpringMVC + Spring + Mybatis + POIXMLDocument + SimHash
数据库:MySQL + Redis(缓存后期)
服务器:Tomcat9.02 + aliyun + jdk1.8
文件处理:POI + PDFBOX + JDOM + itextpdf
开发环境:ubuntu16.04 + IDEA17.2
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包
二、代码实现过程
1.整体项目下载后,解压后导入IDEA:
2.数据库及SSM配置文件(修改你自己的用户名密码)
3.核心控制层
4.前端web层
三、演示效果
1.登录页
2.主页(各区域文件上传显示图)
3.交换系统
4.注册页
5.密码找回
注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)的更多相关文章
- 《SSM框架搭建》一.构建maven web项目
一.创建maven工程File-New-other-Maven Project 二.设置项目工作空间,取消默认勾选,手动设置 三.选择internal,输入web,选择maven.archetypes ...
- 基于SSM框架的JavaWeb通用权限管理系统
- - ->关注博主公众号[C you again],获取更多IT资源(IT技术文章,毕业设计.课程设计系统源码,经典游戏源码,HTML网页模板,PPT.简历模板,!!还可以投稿赚钱!!,点击查 ...
- Java基于ssm框架的restful应用开发
Java基于ssm框架的restful应用开发 好几年都没写过java的应用了,这里记录下使用java ssm框架.jwt如何进行rest应用开发,文中会涉及到全局异常拦截处理.jwt校验.token ...
- 分享一款基于aui框架的图文发布界面
本文出自APICloud官方论坛, 感谢论坛版主 川哥哥 的分享. 分享一款基于aui框架的图文发布界面,可以添加多张图可以删除,类似qq空间发布说说,没做服务器后端,只演示前端操作.需要用到UIMe ...
- SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器
SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器 天幕如遮,唯我一刀可碎千里华盖,纵横四海而无阻,是谓碎遮 --取自<有匪> 写在前面 这段时间很多时间都在忙着编写该项目 ...
- rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台
rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ...
- 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层
作者:nnngu 项目源代码:https://github.com/nnngu/nguSeckill 这是一个整合IDEA+Maven+SSM框架的高并发的商品秒杀项目.我们将分为以下几篇文章来进行详 ...
- 带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)
微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服 ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
随机推荐
- asp.net mvc中DropDownList
asp.net mvc中DropDownList的使用. 下拉列表框 以分为两个部分组成:下拉列表和默认选项 DropDownList扩展方法的各个重载版本基本上都会传递到这个方法上: publi ...
- 无线遥控器方案 Si4010/Si4012
Si4010包含一个嵌入式兼容8051微控制器(MCU),内具4 kB的RAM.8 kB的一次性编程(OTP)非易失性内存.一个128位EEPROM以及用于函数库(library)功能的12 kB R ...
- MB506/MB510 ULTRA HIGH FREQUENCY PRESCALER
MB506 ULTRA HIGH FREQUENCY PRESCALER The Fujitsu MB506 is a high frequency, up to 2.4GHz, prescaler ...
- Google用不了解决方法(添加gmail用不了的方法)
1. 获取google最新的ip列表 能够使用工具1: http://ip.chinaz.com/? IP=www.google.com 也能够使用工具2: http://tool.17mon.cn ...
- Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行
Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行 Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执 ...
- EntityFramework:迁移工具入门
背景 刚毕业做项目的时候,没有用“迁移”这个概念,系统发布和更新的过程让人非常痛苦,在学习 Ruby On Rails 的过程解除了“迁移”,以后的所有项目都会先确定好“迁移”的方案,本文介绍一下En ...
- Git分支模型
转自:http://www.cnblogs.com/byeyear/archive/2012/11/28/2793374.html 本文介绍一种使用Git进行源代码管理的分支模型,着重于如何使用Git ...
- Mac配置PHP开发环境
安装环境如下: Mac OS 10.10.1 Apache 2.4.9 PHP 5.5.14 MySQL 5.6.22 Apache配置 在Mac OS 10.10.1中是自带Apache软件的,我们 ...
- 数学图形(2.14)Spherical helix曲线
从http://mathworld.wolfram.com/SphericalHelix.html上找到如下一些关于该曲线的说明,不过似乎他的公式和我的脚本完全是两个东西.. The tangent ...
- ActiveX 控件漏洞挖掘之方法
ActiveX是微软公司提出,并在1996年被正式命名的组件技术.该技术提供了一种通用的开放程序接口,使用这种技术开发的ActiveX控件可以直接集成到IE浏览器或第三方应用程序中,但由于第三方编程等 ...