EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建

数据库设计

创建数据库 字符集 utf8 排序规则 utf8_bin

创建数据库

表名 eoa_user 描述:用户基本信息表
序号 字段名 字段类型 备注
1 id int(11) id 主 无意义
2 username varchar(30) 用户名
3 password varchar(80) 用户密码
4 regtime timestamp 注册时间
5 email varchar(50) 邮箱地址
6 address varchar(255) 地址
7 headImg varchar(255) 用户头像
CREATE TABLE `eoa_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id,主键,无意义',
  `username` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '用户名',
  `password` varchar(80) COLLATE utf8_bin NOT NULL COMMENT '用户密码',
  `regtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '注册时间',
  `email` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '邮箱地址',
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
  `headImg` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户头像',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_role 描述: 用户角色表
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 roleName varchar(30) role角色名称
3 roleDesc varchar(50) role角色描述
CREATE TABLE `eoa_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `roleName` varchar(30) COLLATE utf8_bin NOT NULL COMMENT 'role角色名称',
  `roleDesc` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'role角色描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_user_role 描述: 用户和角色关联表
序号 字段名 字段类型 备注
1 userId int(11) 用户id
2 roleId int(11) 角色id
CREATE TABLE `eoa_user_role` (
  `userId` int(11) DEFAULT NULL COMMENT '用户id',
  `roleId` int(11) DEFAULT NULL COMMENT '角色id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_usersendemail 描述:用户发送的邮件表
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 userSendMessage text 需要发送的内容
3 sendTime timestamp 需要发送的时间
4 isSended int(11) 是否已经发送(0[N] 1[Y])
CREATE TABLE `eoa_usersendemail` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `userSendMessage` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',
  `sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '需要发送的时间',
  `isSended` int(11) NOT NULL COMMENT '是否已经发送 0[N] 1[Y]',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
表名 eoa_user_usersendemail描述:用户id和用户发送的邮件表id关联表
序号 字段名 字段类型 备注
1 userId int(11) 需要发送的用户id
2 userSendEmailId int(11) 需要发送的邮件id
CREATE TABLE `eoa_user_usersendemail` (
  `userId` int(11) NOT NULL COMMENT '需要发送的用户id',
  `userSendEmailId` int(11) NOT NULL COMMENT '需要发送的邮件id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_adminsendemail 描述:管理员发送邮件 adminId 就是用户 id 可以根据角色表查询是哪个权限和具体的操作者
序号 字段名 字段类型 备注
1 id int(11) id 主键 无意义
2 userId int(11) 给指定用户发送邮件 为[0] 就是群发
3 adminSendEmail text 需要发送的内容
4 adminId int(11) 哪位管理员发的
5 sendTime timestamp 发送的时间
CREATE TABLE `eoa_adminsendemail` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `userId` int(11) DEFAULT NULL COMMENT '给指定用户发送邮件 为[0] 就是群发',
  `adminSendEmail` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',
  `adminId` int(11) NOT NULL COMMENT '哪位管理员发的',
  `sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '发送的时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_maintenance_record 描述: 报障平台的数据导入导出
序号 字段名 字段类型 备注
1 id int(11) 主键 唯一 无意义
2 userId int(11) 维护人员id
3 recordTime timestamp 维护的时间
4 recordArea varchar(255) 维护信息
5 recordInfo varchar(255) 维护信息
6 replaceEquipment varchar(255) 更换器材
7 remarks varchar(255) 备注
CREATE TABLE `eoa_maintenance_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 唯一 无意义',
  `userId` int(11) DEFAULT NULL COMMENT '维护人员id',
  `recordTime` timestamp NULL DEFAULT NULL COMMENT '维护的时间',
  `recordArea` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护地点',
  `recordInfo` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护信息',
  `replaceEquipment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '更换器材',
  `remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_user_leave_message 描述: 用户留言信息
序号 字段名 字段类型 备注
1 id int(11) 主键 唯一 无意义
2 theme varchar(255) 留言主题
3 userId int(11) '留言人
4 messageContent varchar(255) 留言内容
CREATE TABLE `eoa_user_leave_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',
  `theme` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '留言主题',
  `userId` int(11) NOT NULL COMMENT '留言人',
  `messageContent` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '留言内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表名 eoa_log 描述: 用户浏览界面的日志记录
序号 字段名 字段类型 备注
1 id int(11) 无意义,主键id
2 visitTime timestamp 访问时间
3 userId int(11)) 操作者id
4 ip varchar(50) 操作者访问的 ip 地址
5 url varchar(500) 访问资源 url
6 executionTime int(11) 执行时长 毫秒
7 method varchar(500) 访问的方法
CREATE TABLE `eoa_log` (
  `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '无意义,主键id',
  `visitTime` timestamp NULL DEFAULT NULL COMMENT '访问时间',
  `userId` int(11) DEFAULT NULL COMMENT '操作者id',
  `ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '操作者访问的 ip 地址',
  `url` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问资源 url',
  `executionTime` int(11) DEFAULT NULL COMMENT '执行时长 毫秒',
  `method` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问的方法',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

暂时的数据表就以上述的九张表为基础

九张表

SSM配置搭建

因为需要进行POI导入导出,以及文件上传 所以此处再次在父工程导入新的依赖

        <!--文件上传组件 开始-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
        <!--文件上传组件 结束-->
        <!--读取excel文件 开始-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <!--读取excel文件 结束-->
书写 domain 模块 JavaBean

PS:因为之前的模块依赖是

我的依赖规则  
dao 模块 依赖 domain 模块
service 模块 依赖 dao 模块 依赖 utils 模块 依赖 exception 模块
web 模块依赖 service

但是因为JavaBean的格式转换需要使用到 utils 模块 所以需要更改依赖 现在修改之后的依赖是

domain 模块 依赖 utils 模块 
dao 模块 依赖 domain 模块
service 模块 依赖 dao 模块 依赖 exception 模块
web 模块依赖 service
utils模块中的时间格式转换代码
package cn.icanci.easyoa.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.utils
 * @Date: Created in 2020/2/9 17:00
 * @ClassAction: 时间转换 由String转换到Date
 */
public class String2Date {
    public static Date string2Date(String timeStr,String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        try {
            return sdf.parse(timeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
package cn.icanci.easyoa.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.utils
 * @Date: Created in 2020/2/9 16:58
 * @ClassAction: 时间转换 由时间转换到String
 */
public class Date2String {
    public static String data2String(Date data, String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(data);
    }
}

单元测试

package cn.icnaci.easyoa.test;

import cn.icanci.easyoa.utils.Date2String;
import cn.icanci.easyoa.utils.String2Date;
import org.junit.Test;

import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icnaci.easyoa.test
 * @Date: Created in 2020/2/9 17:18
 * @ClassAction: 测试时间和字符串的转换
 */
public class DateAndStringFormatTest {
    @Test
    public void testDateAndStringFormat(){
        String string = Date2String.data2String(new Date(), "yyyy-MM-dd HH:mm:ss");
        System.out.println(string);
        Date date = String2Date.string2Date(string, "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
    }

}

测试通过

2020-02-09 17:20:42
Sun Feb 09 17:20:42 CST 2020
修改之后继续 User的JavaBean Lombok插件不了解的可以看一下 @简单粗暴节省JavaBean代码Lombok插件
package cn.icanci.easyoa.domain;

import cn.icanci.easyoa.utils.Date2String;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.domain
 * @Date: Created in 2020/2/9 16:51
 * @ClassAction: 数据表 eoa_user 对应的javaBean
 */

@Data
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id 主键 无意义
     */
    private Integer id;
    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 注册时间
     */
    private Date regtime;

    /**
     * 时间转化 为字符串
     */
    private String regtimeDesc;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 地址
     */
    private String address;
    /**
     * 头像地址
     */
    private String headImg;

    public String getRegtimeDesc() {
        return Date2String.data2String(this.regtime,"yyyy-MM-dd HH:mm:ss");
    }
}

因为JavaBean的代码比较简单 其他的不再书写 全部JavaBean如下 关联表不需要创建

JavaBean

编写好JavaBean之后,开始编写Dao 和 Service 模块 现在以 IUserDao 为例 其他的 Dao 以及Service很类似 这里使用注解的方式实现增删改查
package cn.icanci.esayoa.dao;

import cn.icanci.easyoa.domain.User;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.esayoa.dao
 * @Date: Created in 2020/2/9 17:54
 * @ClassAction: User 的CRUD
 */
public interface IUserDao {
    /**
     * 保存一个用户
     * @param user 需要保存的用户对象
     */
    void save(User user);

    /**
     * 根据用户id删除id,或者是拉黑
     * @param userId 需要删除的 用户id
     */
    void delete(Integer userId);

    /**
     * 根据用户修改信息
     * @param user 需要修改的用户对象信息
     */
    void update(User user);

    /**
     * 根据用户id查询用户的信息
     * @param userId 需要查询的用户id
     * @return 如果查到了 返回一个 User 对象
     */
    User findOne(Integer userId);
}
package cn.icanci.easyoa.service;

import cn.icanci.easyoa.domain.User;
import org.apache.ibatis.annotations.Insert;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.service
 * @Date: Created in 2020/2/9 18:18
 * @ClassAction: IUserService User的业务层接口
 */
public interface IUserService {
    /**
     * 保存一个用户
     * @param user 需要保存的用户对象
     */
    @Insert("insert into ")
    void save(User user);

    /**
     * 根据用户id删除id,或者是拉黑
     * @param userId 需要删除的 用户id
     */
    void delete(Integer userId);

    /**
     * 根据用户修改信息
     * @param user 需要修改的用户对象信息
     */
    void update(User user);

    /**
     * 根据用户id查询用户的信息
     * @param userId 需要查询的用户id
     * @return 如果查到了 返回一个 User 对象
     */
    User findOne(Integer userId);
}
package cn.icanci.easyoa.service.impl;

import cn.icanci.easyoa.domain.User;
import cn.icanci.easyoa.service.IUserService;

/**
 * @Author: icanci
 * @ProjectName: easyoa
 * @PackageName: cn.icanci.easyoa.service.impl
 * @Date: Created in 2020/2/9 18:19
 * @ClassAction:  User 的业务层实现
 */
public class UserServiceImpl implements IUserService {
    @Override
    public void save(User user) {

    }

    @Override
    public void delete(Integer userId) {

    }

    @Override
    public void update(User user) {

    }

    @Override
    public User findOne(Integer userId) {
        return null;
    }
}

具体逻辑代码还没有书写 现在先写一下配置文件
配置log4j.properties的信息

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=E:/AllLogs/idea2019/maven/oasyoa/log.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

在web模块中创建applicationContext.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 开启注解扫描 要扫描的是service层和dao层的注解 因为web层需要让SpringMVC去管理-->
    <!-- 扫描dao -->
    <context:component-scan base-package="cn.icanci.easyoa.dao"></context:component-scan>
    <!-- 扫描domain -->
    <context:component-scan base-package="cn.icanci.easyoa.domain"></context:component-scan>
    <!-- 扫描service-->
    <context:component-scan base-package="cn.icanci.easyoa.service"></context:component-scan>

    <!-- spring整合Mybatis -->
    <!-- 加载配置文件 -->
    <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
    <!-- 配置druid 连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <!-- 把 SqlSessionFactory 交给IOC管理 -->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- 传入 PageHelper 的插件 -->
        <property name="plugins">
            <array>
                <!-- 传入插件的对象 -->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">mysql</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
    <!-- 配置扫描dao接口 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.icanci.easyoa.dao"></property>
    </bean>
    <!-- 配置Spring的声明式事务管理 -->
    <!-- 配置事务管理 -->
    <!-- id 必须为 transactionManager 否则会报错  -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>

这里有个坑 也就是配置dao接口的时候,如果只配置了注解扫描而没有配置扫描注解驱动 dao模块的接口就扫描不出来

配置db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/easyoa
jdbc.username=root
jdbc.password=ok
配置spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 配置 controller 扫描 其他的不扫描 -->
    <context:component-scan base-package="cn.icanci.easyoa.controller"></context:component-scan>

    <!-- 配置视图解析器 -->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- JSP 所在的目录 -->
        <property name="prefix" value="/pages/"></property>
        <!-- 配置需要解析的文件的后缀名 -->
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!-- 配置静态资源不过滤 -->
    <mvc:resources location="/css/" mapping="/css/**" />
    <mvc:resources location="/img/" mapping="/img/**" />
    <mvc:resources location="/js/" mapping="/js/**" />
    <!-- 开启对 SpringMVC注解的支持 -->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--
        配置AOP的注解支持 AOP 底层使用代理技术
        JDK动态代理,要求必须有接口
        cglib 代理 ,生成子类对象,proxy-target-class="true" 默认使用cglib的方式
     -->
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
</beans>
配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- 配置加载类路径的配置文件 开始 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml,classpath*:spring-mvc.xml</param-value>
    </context-param>
    <!-- 配置加载类路径的配置文件 结束-->
    <!-- 配置监听器 开始 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 配置监听器 监听request域对象的创建和销毁的-->
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <!-- 配置监听器 结束-->
    <!-- 配置前端控制器 加载 classpath:spring-mvc.xml 服务器启动创建 servlet -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化参数 ,创建和完成 DispatcherServlet对象,加载spring-mvc.xml配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 服务器启动的时候,让DispatcherServlet对象创建-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!-- 配置前端控制器 结束 -->
    <!-- 配置编码过滤器  解决中文乱码 开始-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 配置编码过滤器  解决中文乱码 结束-->

    <!-- 配置权限过滤器 开始-->
    <!-- 配置权限过滤器 结束-->
    <!--配置 error 的界面 开始-->
    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>403</error-code>
        <location>/error/403.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>
    <!--配置 error 的界面 结束-->
    <!-- 启动首先加载页顺序 开始-->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <!-- 启动首先加载页顺序 开始-->
</web-app>
配置好之后开始书写 dao 模块 service 模块 此处比较基础 就不上代码 然后提交到SVN
dao模块和service模块
确认提交之后,到本地SVN仓库检查 或者浏览器登陆SVN查询
确认提交之后检查

浏览器查询

今天跳坑很多 明天完成基本操作 crud的操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容

  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 15,679评论 0 16
  • 文/Bruce.Liu1 1.建模简介 范式:英文名称是 Normal Form,它是英国人 E.F.Codd(埃...
    BruceLiu1阅读 5,580评论 0 9
  • 一. Java基础部分.................................................
    wy_sure阅读 3,807评论 0 11
  • 一个想得太多的人 把心事都交给了香烟 在袅袅云雾中 焚了一切的爱恨情仇 一个心地善良的男子 若一缕缕浓情的炊烟 欲...
    苍穹一君阅读 188评论 15 15
  • 二十一世纪旧体诗词风骚榜 佛缘渡尽君臣孽,太祖千刀烈。江山留与好儿孙,相杀何如相守、十三坟。 当年志士何曾悔,共曳...
    张成昱阅读 1,472评论 12 76