ssm框架+Layui整合案例

业余写得整合案例 想学习的可以来参考 初来乍到

准备工作

Layui+tomcat+mysql

目录

1 实现的效果图

 2 实现代码

2.0 前端代码

 2.1 登录页面login.jsp

2.2 登录后跳转的主页面 main.jap

web.xml 这里面主要是加载tomcat的时候被加载的配置文件

4 pom.xml jar包和依赖

2.3 后端代码 

2.3.1 resources中的代码

2.3.1.1 接口的映射文件 mapper文件里的

2.3.1.2 spring 和springmvc 映射文件

2.3.2 java代码

1 controller层代码

2 dao层

3 entity 实现类层

​ 

4service 业务层 (业务层是一个接口 所有有一个实现类)

5 util (这里面主要是用来渲染页面的时候一些规范)

6 interceptor 拦截器


1 实现的效果图

 

 

 

 

 

 

 

 

 2 实现代码

2.0 前端代码

 2.1 登录页面login.jsp

<%--
  Created by IntelliJ IDEA.
  User: 旧巷的常青藤
  Date: 2021/12/10
  Time: 14:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
    <%-- 引入外部jar包--%>
    <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css"/>
    <script type="text/javascript" src="${pageContext.request.contextPath}/layui/layui.js"></script>
    <style>
        #top{
            background: url("img/4.png") no-repeat;
            background-size: cover;
        }
    </style>
</head>

<body id="top">
<div style="width: 400px;height: 300px ;margin: auto;margin-top: 15%;">
<form class="layui-form" action="">
    <div class="layui-form-item">
        <label class="layui-form-label"><strong>账号</strong></label>
        <div class="layui-input-block">
            <input type="text" name="username" lay-verify="required" autocomplete="off" placeholder="请输入账号" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label"><strong>密码</strong></label>
        <div class="layui-input-block">
            <input type="password" name="password" lay-verify="pass" placeholder="请输入密码" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button type="button" class="layui-btn" lay-submit="" lay-filter="demo1">登录</button>
            <button type="button" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>
</div>
</body>
<script>
    layui.use(['form'], function(){
        var form = layui.form
            ,layer = layui.layer
            ,$=layui.jquery;
        //自定义验证规则
        form.verify({
            pass: [
                /^[\S]{6,12}$/
                ,'密码必须6到12位,且不能出现空格'
            ]
        });
        //监听提交
        form.on('submit(demo1)', function(data){
            $.ajax({
                url:"${pageContext.request.contextPath}/login/login"
                ,type:"post"
                ,data:data.field
                ,success:function (result) {
                    if(result.code===2000){
                        layer.msg(result.msg,{icon:1})
                        location.href="${pageContext.request.contextPath}/main/main"
                    }else {
                        layer.msg(result.msg,{icon:5})
                    }
                }
                ,dataType:"json"
            })
            return false;
        });
    });
</script>
</html>

2.2 登录后跳转的主页面 main.jap

<%--
  Created by IntelliJ IDEA.
  User: 旧巷的常青藤
  Date: 2021/12/10
  Time: 15:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css"/>
    <script type="text/javascript" src="${pageContext.request.contextPath}/layui/layui.js"></script>
</head>
<form class="layui-form" action="">
    <div class="layui-form-item">
        <div class="layui-inline">
            <div class="layui-input-inline">
                <input type="text" name="loginName" placeholder="请输入员工姓名"  autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <input type="text" name="longinPass"   placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <button type="button" class="layui-btn" lay-submit="" lay-filter="search">搜索</button>
            </div>
        </div>
    </div>
</form>
<body>
<table class="layui-hide" id="test" lay-filter="test"></table>

<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="add">添加</button>
        <button class="layui-btn layui-btn-sm" lay-event="deleteAll">批量删除</button>
        <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
    </div>
</script>

<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<form class="layui-form" style="display: none" action="" id="uid" lay-filter="userform">
    <input type="text" style="display: none" name="userid"/>
    <div class="layui-form-item">
        <label class="layui-form-label">账号</label>
        <div class="layui-input-block">
            <input type="text" name="loginname" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">密码</label>
        <div class="layui-input-block">
            <input type="text" name="longinpass" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">手机号</label>
        <div class="layui-input-block">
            <input type="text" name="phone" lay-verify="required"  placeholder="请输入" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">职位</label>
        <div class="layui-input-block">
            <input type="text" name="realname" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button type="button" class="layui-btn" lay-submit="" lay-filter="demo1">提交修改</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>
<script>
    layui.use('table', function(){
        var form = layui.form;
        var table = layui.table;
        var $ =layui.jquery;

        //添加表单的搜索监听事件
        form.on('submit(search)',function(data){
            //表格数据重新渲染。
            table.reload('test',{
                page: {
                    curr: 1 //重新从第 1 页开始
                },
                where: { //按照什么进行查找
                    "loginName": data.field.loginName,
                    "longinPass": data.field.longinPass
                }
            })
        });
        table.render({
            elem: '#test'
            ,url:'${pageContext.request.contextPath}/userInfo/list'
            ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
            ,title: '书籍数据表'
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}
                ,{field:'userid', title:'用户编号', sort: true}
                ,{field:'loginname', title:'用户名', edit: 'text'}
                ,{field:'longinpass', title:'密码',edit: 'text', sort: true}
                ,{field:'phone', title:'手机号', width:100}
                ,{field:'realname', title:'职位'}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
            ]]
            ,page: true
            ,limit:5
            ,limits:[2,5,10,15]
        });
        //监听行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
            //console.log(obj)
            if(obj.event === 'del'){
                layer.confirm('真的删除行么', function(index){
                  $.ajax({
                      url:"${pageContext.request.contextPath}/userInfo/delete",
                      data:{"userid":data.userid},
                      type: "post",
                      success:function (rel) {
                          if (rel.code===2000){
                              layer.closeAll()
                              layer.msg(rel.msg,{icon:1})
                              table.reload("test")
                          }
                      },
                      dataType:"json"
                  })
                });
            } else if(obj.event === 'edit') {
                layer.open({
                    type: 1
                    , id: 'layerDemo'//防止重复弹出
                    , content: $("#uid")
                    , shade: 0 //不显示遮罩
                });
            }
            form.val("userform",data)
        });
        //监听提交
        form.on('submit(demo1)', function(data){
           $.ajax({
               url:"${pageContext.request.contextPath}/userInfo/update",
               data:data.field,
               type:"post",
               success:function (rel) {
                   layer.closeAll()
                   layer.msg(rel.msg,{icon: 1})
                   table.reload("test")
               },
               dataType: "json"
           })
        });
        //头工具栏事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);
            var  event  = obj.event;
            $("#uid")[0].reset();
            if (event==="add"){
                layer.open({
                    type: 1
                    ,content:$("#uid")
                    ,shade: 0 //不显示遮罩
                });
            }else if (event==="deleteAll"){
                var data = checkStatus.data;
                if (data.length<=0){
                    layer.msg("请选择你要删除的行")
                }else {
                     var  str =""
                    for (var i=0;i<data.length;i++){
                        str=str+","+data[i].userid
                    }
                    str=str.substring(1,str.length)
                    let strings = str.split(",");
                    console.log(strings)
                    $.ajax({
                        url:"${pageContext.request.contextPath}/userInfo/deleteAll"
                        ,data:{"userid":str}
                        ,success:function (rel) {
                            if (rel.code===2000){
                                layer.closeAll()
                                layer.msg(rel.msg,{icon:1})
                                table.reload("test")
                            }
                        },
                        dataType: "json"
                    })
                }

            }
        });
    })
</script>
</body>
</html>

web.xml 这里面主要是加载tomcat的时候被加载的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
</web-app>

4 pom.xml jar包和依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lc</groupId>
  <artifactId>12-10ssm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <dependencies>
    <!--分页-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.11</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <!--spring和mybatis整合的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
    <!--druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.4</version>
    </dependency>
    <!--springmvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <!--mybatis的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <!--mysql的依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>
    <!--lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.22</version>
    </dependency>
    <!--jackson-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.4</version>
    </dependency>
    <!--servlet和jsp-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <!--log4j-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.30</version>
    </dependency>

  </dependencies>
</project>

 

2.3 后端代码 

这里我主要用的是ssm框架  不会的 可以去看一下我的博客 里面详细的介绍的有

2.3.1 resources中的代码

这里面主要是接口方法的映射文件

2.3.1.1 接口的映射文件 mapper文件里的

这个可以自动生成 不懂得 可以去看我之前的博客  这里我就不多说了 

2.3.1.2 spring 和springmvc 映射文件

 spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <!--包扫描:业务层service:-->
    <context:component-scan base-package="com.lc.service"/>
    <!--定义数据源:
   https://blog.csdn.net/qq_35038153/article/details/77353689
          DBCP:
          C3P0:
          Proxool:
          BoneCP:
          DRUID: 现在企业用的比较多
               driverClassName = com.mysql.cj.jdbc.Driver
               driver=com.mysql.cj.jdbc.Driver
               url=jdbc:mysql:///student?serverTimezone=GMT&useSSL=false
               username=root
               password=密码
               #初始化连接数量#
               initialSize = 5
               #最大连接数量
               maxACtive = 10
               #等待时间 3秒
               maxWait = 3000
    -->
    <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/jdbc?serverTimezone=Asia/Shanghai"/>
        <property name="username" value="root"/>
        <property name="password" value="2001"/>
        <!--初始化链接数量 根据你的项目评估-->
        <property name="initialSize" value="5"/>
        <!--  最大连接数-->
        <property name="maxActive" value="10"/>
        <!-- 等待时间  毫秒数-->
        <property name="maxWait" value="5000"/>
    </bean>
    <!--spring把mybatis配置文件的内容封装到SqlSessionFactorybean类中。-->
    <bean id="session" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="ds"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置参数,一行配置一个 -->
                        <value>
                            params=value1
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
    <!--为指定dao接口生成代理实现类。交于spring容器来管理dao接口的代理实现类对象。-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--basePackage:为那些包下的dao接口生成代理实现类。-->
        <property name="basePackage" value="com.lc.dao"/>
    </bean>

</beans>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
        <!--包扫描-->
        <context:component-scan base-package="com.lc.controller"/>
    <!--特殊注解-->
        <mvc:annotation-driven/>
    <!--静态资源放行-->
        <mvc:default-servlet-handler/>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--声明拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/login/login"/>
            <mvc:exclude-mapping path="/img/4.png"/>
            <bean class="com.lc.interceptor.Myinterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

日志文件 

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =F://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

2.3.2 java代码

1 controller层代码

 pagecontroller

package com.lc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 15:52
 **/
@Controller
@RequestMapping("main")
public class PageController {
    @RequestMapping("main")
    public String main(){
        return "mian";
    }
}

UserController

package com.lc.controller;

import com.lc.service.UserService;
import com.lc.util.CommonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 15:46
 **/
@Controller
@RequestMapping("login")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("login")
    @ResponseBody
    public CommonResult login(String username,String password){
        CommonResult nameAndPass = userService.findNameAndPass(username, password);
        return nameAndPass;
    }

}

UserinfoController

package com.lc.controller;

import com.lc.entity.User;
import com.lc.entity.Userinfo;
import com.lc.service.UserInfoService;
import com.lc.util.CommonResult;
import com.lc.util.TableYaui;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 18:45
 **/
@Controller
@RequestMapping("userInfo")
public class UserInfoController {
    @Autowired
    private UserInfoService userInfoService;

    @RequestMapping("list")
    @ResponseBody
    public TableYaui list(int page,int limit,String loginName,String longinPass){
        TableYaui byName = userInfoService.findByName(page, limit, loginName, longinPass);
        return byName;
    }
    @RequestMapping("delete")
    @ResponseBody
    public CommonResult delete(int userid){
        CommonResult delete = userInfoService.delete(userid);
        return delete;
    }
    @RequestMapping("update")
    @ResponseBody
    public CommonResult update(Userinfo userinfo){
        if (userinfo.getUserid()!=null){
            CommonResult update = userInfoService.update(userinfo);
            return update;
        }else {
            CommonResult insert = userInfoService.insert(userinfo);
            return insert;
        }
    }

    @RequestMapping("deleteAll")
    @ResponseBody
    public CommonResult delete(String userid){
        CommonResult commonResult = userInfoService.deleteByPrimaryKey(userid);
        return commonResult;

    }
}

2 dao层

这里面自动生成出来的  但是我在里面新添加了方法注意看

userdao

package com.lc.dao;

import com.lc.entity.User;
import org.apache.ibatis.annotations.Param;

public interface UserDao {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    User findNameAndPass(@Param("username") String username, @Param("password") String password);

}

 userinfodao

​
package com.lc.dao;

import com.lc.entity.Userinfo;
import com.lc.util.CommonResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserinfoDao {
    int deleteByPrimaryKey(Integer userid);

    int insert(Userinfo record);

    int insertSelective(Userinfo record);

    Userinfo selectByPrimaryKey(Integer userid);

    int updateByPrimaryKeySelective(Userinfo record);

    int updateByPrimaryKey(Userinfo record);


    List<Userinfo> findByName(@Param("loginName") String loginName, @Param("longinPass") String longinPass);
}

​

3 entity 实现类层

 

user

package com.lc.entity;

import lombok.Data;

import java.io.Serializable;

/**
 * user
 * @author 
 */
@Data
public class User implements Serializable {
    /**
     * 鐢ㄦ埛id
     */
    private Integer id;

    /**
     * 鐧诲綍鍚?
     */
    private String username;

    private String password;

    /**
     * 真实姓名
     */
    private String realname;

    private Integer status;

    private static final long serialVersionUID = 1L;
}

 userinfo

package com.lc.entity;

import lombok.Data;

import java.io.Serializable;

/**
 * userinfo
 * @author 
 */
@Data
public class Userinfo implements Serializable {
    /**
     * 用户id
     */
    private Integer userid;

    /**
     * 登录名
     */
    private String loginname;

    /**
     * 登录密码
     */
    private String longinpass;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 真实姓名
     */
    private String realname;

    private static final long serialVersionUID = 1L;
}

4service 业务层 (业务层是一个接口 所有有一个实现类)

UserService
package com.lc.service;

import com.lc.util.CommonResult;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 15:10
 **/
public interface UserService {
    public CommonResult findNameAndPass(String username, String password);

}
UserInfoService
package com.lc.service;

import com.lc.entity.Userinfo;
import com.lc.util.CommonResult;
import com.lc.util.TableYaui;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 18:40
 **/
public interface UserInfoService {
    public TableYaui findByName(int page, int limit, String loginName, String longinPass);
    public CommonResult delete(int userid);
    public CommonResult update(Userinfo userinfo);
    public CommonResult insert(Userinfo userinfo);
    public CommonResult deleteByPrimaryKey(String userid);
}
UserServiceImpl
package com.lc.service.userserviceimpl;

import com.lc.dao.UserDao;
import com.lc.entity.User;
import com.lc.service.UserService;
import com.lc.util.CommonResult;
import com.lc.util.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 15:28
 **/
@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public CommonResult findNameAndPass(String username, String password) {
        User user = userDao.findNameAndPass(username, password);
        if (user==null){
            return new CommonResult(5000,"账号或密码错误",null);
        }
        if (user.getStatus()==2){
            return new CommonResult(5000,"该账户已经被限制",null);
        }
        WebUtil.getSession().setAttribute("user",user);
        return new CommonResult(2000,"登录成功",null);
    }
}
UserInfoServiceImpl
package com.lc.service.userserviceimpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lc.dao.UserinfoDao;
import com.lc.entity.Userinfo;
import com.lc.service.UserInfoService;
import com.lc.util.CommonResult;
import com.lc.util.TableYaui;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 18:42
 **/
@Service("userInfoService")
public class UserInfoServiceImpl implements UserInfoService {
    @Autowired
    private UserinfoDao userinfoDao;
    public TableYaui findByName(int page, int limit, String loginName, String longinPass) {
        PageHelper.startPage(page,limit); // 开启分页
        List<Userinfo> byName = userinfoDao.findByName(loginName, longinPass);
        PageInfo<Userinfo> userinfoPageInfo = new PageInfo<Userinfo>(byName);
        return new TableYaui(0,"",userinfoPageInfo.getTotal(),userinfoPageInfo.getList());
    }

    public CommonResult delete(int id) {
        int delete = userinfoDao.deleteByPrimaryKey(id);
        if (delete>-2){
            return new CommonResult(2000,"删除成功",null);
        }else {
            return new CommonResult(5000,"删除失败",null);
        }
    }

    public CommonResult update(Userinfo userinfo) {
        int i = userinfoDao.updateByPrimaryKey(userinfo);
        if (i>-2){
            return new CommonResult(2000,"修改成功",null);
        }else {
            return new CommonResult(5000,"修改失败",null);
        }
    }

    public CommonResult insert(Userinfo userinfo) {
        int insert = userinfoDao.insert(userinfo);
        if (insert>-2){
            return new CommonResult(2000,"添加成功",null);
        }else {
            return new CommonResult(5000,"添加失败",null);
        }
    }

    public CommonResult deleteByPrimaryKey(String userid) {
        String[] split = userid.split(",");
        int i=0;
        for (String s : split) {
            i = userinfoDao.deleteByPrimaryKey(Integer.parseInt(s));

        }
        if (i>-2){
            return new CommonResult(2000,"批量删除成功",null);
        }else {
            return new CommonResult(5000,"批量删除失败",null);
        }
    }
}

5 util (这里面主要是用来渲染页面的时候一些规范)

WebUtil
package com.lc.util;

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * @program: 12-10ssm1
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-11 09:10
 **/
public class WebUtil {
    /***
     * 根据request获取session
     * @return
     */
    public static HttpSession getSession(){
        HttpSession session = getRequest().getSession();
        return session;
    }

    /***
     * 获取request
     * @return
     */
    public static HttpServletRequest getRequest(){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        return request;
    }
}
TableYaui
package com.lc.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 16:26
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableYaui {
    private int code;
    private String msg;
    private long count;
    private Object data;
}
CommonResult
package com.lc.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @program: 12-10ssm
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-10 15:35
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CommonResult {
    private int code;
    private String msg;
    private Object data;
}

6 interceptor 拦截器

package com.lc.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @program: 12-10ssm1
 * @description:
 * @author: IX亿少女的梦
 * @create: 2021-12-11 09:09
 * 定义一个拦截器  实现HandlerInterceptor 从写 preHandle方法
 * 
 **/
public class Myinterceptor  implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("user");
        if (user!=null){
            return true;
        }else {
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return false;
        }
    }
}

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值