• 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)


    概述

    此项目基于SSM框架技术的Java Web项目,是全栈项目,涉及前端、后端、插件、上线部署等各个板块,项目所有的代码都是自己编码所得,每一步、部分都有清晰的注释,完全不用担心代码混乱,可以轻松、简单、放心全面学习(也不需要版本控制配置)。下载后遇到任何问题,我将全力进行解答。 此项目:快编(kuaib)是一款方便快速全能的编辑系统,竭尽全力地将编写、查找、比对、修改、文件下载、上传、查重等所有功能整合于单个页面操作综合操作系统。--另外,此项目已部署:http://yws233.cn:8080/kuaib/,可直接访问体验--。

    详细

    注:由于项目直接下载后,只要符合部署环境,保证可运行,并且已经上线部署运行测试(无需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.配置文件部分

    1. MySQL数据库配置 -----> database.properties

    2. LOG4J配置文件-----------> log4j.properties

    3. Mybatis----------------------> mybatis-config.xml

    4. SpringMVC配置文件-----> springmvc-servlet.xml

    5. Spring配置文件------------> applicationContext-mybatis.xml

    database.png

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

    选区_012.png

    Dao层,Service层等

    选区_016.png

    4.前端部分

    其中pdf和xhEditer为插件,可在官网了解。

    选区_013.png

    jsp及lib包

    选区_015.png

    二、代码实现过程

    1.整体项目下载后,解压后导入IDEA:

    all.png

    2.数据库及SSM配置文件(修改你自己的用户名密码)

    database.png

    3.核心控制层

    controller.png

    4.前端web层

    web.png

    三、演示效果

    1.登录页

    login.png

    2.主页(各区域文件上传显示图)

    选区_004.png

    3.交换系统

    class.png

    4.注册页

    register.png

    5.密码找回

    backpass.png

    注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

  • 相关阅读:
    shell 中"${b2}" and "${b:2}"
    关于 libpcap的安装
    ubuntu adsl 上网
    2011.1.18 运算符优先级
    Tail Queues
    fd_set struct
    读取和修改操作array 配置文件的方法
    smarty调试方法
    一个CURL例子
    cakephp数据库事务transactions
  • 原文地址:https://www.cnblogs.com/demodashi/p/9452930.html
Copyright © 2020-2023  润新知