SSM项目-OA报销单管理系统(二)

创建包,配置文件,自定义字符编码过滤器

dao层java下创建包
在这里插入图片描述

dao(接口),entity(pojo实体类),global(工具类)
在这里插入图片描述

spring-dao.xml dao配置文件

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       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
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--spring-dao.xml dao配置文件-->

    <!--1.底层Model层配置-->
    <!--注解扫描-->
    <!--描注解注入bean @commpent @repository @service @controller @autowi red @resource -->
    <context:component-scan base-package="cn.com.*"></context:component-scan>

    <!--数据源,数据库连接,id数据源名,class引用的类-->
    <!--<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:database.properties"></property>
    </bean>-->

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/workordermanager?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf-8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

    <!--sqlSessionFactoryBean工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--获得数据源-->
        <property name="dataSource" ref="myDataSource"></property>
        <property name="mapperLocations">
            <list>
                <value>classpath:cn/com/dao/ProjectMapper.xml</value>  <!--SQL映射文件路径-->
            </list>
        </property>
        <!--路径别名pojo,entity-->
        <property name="typeAliasesPackage" value="cn.com.entity"></property>
        <!--引入mybatis-config.xml(有些只能在Mybatis配置的),如分页查询-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <!--Mapper映射器扫描-->
    <!--扫描dao接口包,内部自动建立MapperFactoryBean映射器实例-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.com.dao"></property>
        <!--匹配工厂(数据源),多个工厂需要手动指定工厂名字-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
    <!--底层Model层配置结束!-->

</beans>

2.biz层(service层)
在这里插入图片描述

spring-biz.xml biz配置文件(service层)

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       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
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--spring-biz.xml biz配置文件(service层)-->

    <!--1.底层Model层配置-->
    <!--导入spring-dao.xml dao配置文件-->
    <import resource="spring-dao.xml"></import>

    <!--注解扫描-->
    <!--描注解注入bean @commpent @repository @service @controller @autowi red @resource -->
    <context:component-scan base-package="cn.com.*"></context:component-scan>
    <!--开启事务注解驱动,及事务管理-->
    <!--@transaction (pxopagation="")-->
    <tx:annotation-driven proxy-target-class="true" transaction-manager="txManage"></tx:annotation-driven>
    <!--AOP自动代理,Aspectj注解SpringAOP需求-->
    <aop:aspectj-autoproxy proxy-target-class="true"/>


    <!--2.biz层,(Service层)配置-->
    <!--事务管理器-->
    <bean id="txManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="myDataSource"/>
    </bean>
    <!--事务增强规则-->
    <tx:advice transaction-manager="txManage" id="txAdvice">
        <tx:attributes>  <!--通配方法名-->
            <tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!--切面1-->
    <aop:config>  <!--biz层,(service层)所有的包所有的类监控-->
        <aop:pointcut id="pointcut1" expression="execution(* cn.com.biz..*.*(..))"/>
        <!--引入切面规则-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
    </aop:config>

</beans>

3.web层(Controller层)
java下创建包
controller(控制类),dto(pojo实体类),global(工具类)
在这里插入图片描述
spring-web.xml web配置文件(Controller层)

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       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
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--spring-web.xml web配置文件(Controller层)-->

    <!--1.底层Model层配置-->
    <!--2.Service层配置-->
    <import resource="spring-biz.xml"></import>

    <!--3.Controller层配置-->
    <!--静态资源访问,启用默认的Service-->
    <mvc:default-servlet-handler />
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"></property>  <!--页面路径-->
        <property name="suffix" value=".jsp"></property>
        <!--<property name="order" value="10"/>-->
        <!--页面后缀-->
    </bean>



   &lt;!&ndash;注解扫描,bean,包名加*通配符&ndash;&gt;

    &lt;!&ndash;拦截器注册&ndash;&gt;
    <mvc:interceptors>
        &lt;!&ndash;用户登录拦截器&ndash;&gt;
        <mvc:interceptor>
            <mvc:mapping path="/user/*"></mvc:mapping>
            <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
            <bean class="cn.com.inteceptor.LoginInteceptor"></bean>
        </mvc:interceptor>
        &lt;!&ndash;日志拦截器&ndash;&gt;
    </mvc:interceptors>

    &lt;!&ndash;pageHelp分页&ndash;&gt;
    &lt;!&ndash; 配置pageHelp的拦截器 &ndash;&gt;
    <bean id="plugin" class="com.github.pagehelper.PageInterceptor">
        <property name="properties">
            <value>helperDialect=mysql</value>
        </property>
    </bean>


<!--实例化课程类&ndash;&gt;-->
    <bean id="course1" class="cn.com.pojo.Course">
        <property name="name" value="新课1"></property>
        <property name="price" value="666.00"></property>
    </bean>
    <bean id="course2" class="cn.com.pojo.Course"
          p:name="新课2" p:price="777.00"></bean>
    <bean id="course3" class="cn.com.pojo.Course"
          p:id="6" p:name="改课3" p:price="888.00"></bean>


    <!--实例化workorder对象,用于添加-->
    <!--(#{projectId},#{executor},#{description},#{orderLevel},#{createDate});-->
    <!--(1,"李小明","完成在线答疑任务",2,new Date());-->
    <!--<bean id="workorder1" class="cn.com.pojo.Workorder"
          p:projectId="1" p:executor="刘明" p:description="完成在线答疑任务" p:orderLevel="2" p:createDate="2020-03-04"></bean>-->


</beans>

web.xml 配置文件
在这里插入图片描述

<?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">

  <display-name>Archetype Created Web Application</display-name>
  <!--隐藏的方法过滤器-->
  <filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <!--中文乱码过滤器-->
  <filter>
    <filter-name>EncodeFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodeFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--隐藏的方法过滤器-->
  <filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--前端控制器上-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--通过前端控制器来读取springmvc-config容器配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-web.xml</param-value>
    </init-param>
    <!--设置启动优先级-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!--前端控制器下-->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!--默认的读取静态资源文件的servlet-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/assets/*</url-pattern>
    <url-pattern>/js/*</url-pattern>
    <url-pattern>/vendor/*</url-pattern>
    <url-pattern>*.css</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.jpg</url-pattern>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.gif</url-pattern>
  </servlet-mapping>

</web-app>

*自定义编码过滤器
web.xml 配置文件
在这里插入图片描述
global包下创建过滤器类
在这里插入图片描述
在这里插入图片描述

dao下entity创建实体类(toString,构造方法,get/set)
在这里插入图片描述
员工表类

//员工表类
public class Employee {
    private String sn;  //编号
    private String password;  //密码
    private String name;  //姓名
    private String department_sn;  //所属部门
    private String post;  //职务

dao下dao包创建Mapper接口

//员工表接口
public interface EmployeeMapper {
    //查全部
    public List<Employee> getAll();
    //根据sn查询
    public Employee getById(String sn);
    //增加员工
    public void add(Employee employee);
    //修改员工
    public void update(Employee employee);
    //删除员工(根据sn)
    public void delete(String sn);

}

同时dao下resources创建cn.com.dao同名包
创建Mapper.xml映射文件
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.com.dao.EmployeeMapper">  <!--本映射器文件路径-->
    <!--员工SQL映射文件-->

    <!--查全部-->
    <select id="getAll" resultType="Employee">
        SELECT * FROM `employee`;
    </select>

    <!--根据sn查询-->
    <select id="getById" parameterType="String" resultType="Employee">
        SELECT * FROM `employee` WHERE sn=#{sn};
    </select>

    <!--添加员工-->
    <insert id="add" parameterType="Employee">
        INSERT INTO `employee` (sn,password,name,department_sn,post) VALUES (#{sn},#{password},#{name},#{department_sn},#{post});
    </insert>

    <!--修改员工-->
    <update id="update" parameterType="Employee">
        UPDATE `employee` SET sn=#{sn},password=#{password},name=#{name},department_sn=#{department_sn},post=#{post} WHERE sn = #{sn};
    </update>

    <!--删除员工-->
    <delete id="delete" parameterType="String">
        DELETE FROM `employee` WHERE sn = #{sn};
    </delete>

</mapper>

biz(Service)下的biz包创建Service接口dao实现类
在这里插入图片描述

//员工接口实现类
@Service
public class EmployeeService implements EmployeeMapper {

    //注入dao层接口
    @Autowired
    private EmployeeMapper employeeMapper;

    //查全部
    public List<Employee> getAll() {
        return employeeMapper.getAll();
    }

    //根据sn查询
    public Employee getById(String sn) {
        return employeeMapper.getById(sn);
    }

    //添加
    public void add(Employee employee) {
        employeeMapper.add(employee);
    }

    //修改
    public void update(Employee employee) {
        employeeMapper.update(employee);
    }

    //删除
    public void delete(String sn) {
        employeeMapper.delete(sn);
    }
}

web下的test包创建Service层测试类
在这里插入图片描述

//Service层测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-web.xml")
public class TestService {

    private Logger logger = Logger.getLogger(TestService.class);

    //注入部门表Service层接口实现类
    @Resource(name = "departmentService")
    private DepartmentService departmentService;

    //查询部门表
    @Test
    public void getAllDepartment(){
        List<Department> departments = departmentService.getAll();
        logger.info("部门信息查询如下:");
        for(Department d:departments){
            logger.info(d.toString());
        }
    }


    //注入员工表Service层接口实现类
    @Resource(name = "employeeService")
    private EmployeeService employeeService;

    //查询员工表
    @Test
    public void getAllEmployee(){
        List<Employee> employees = employeeService.getAll();
        logger.info("员工信息查询如下:");
        for(Employee e:employees){
            logger.info(e.toString());
        }
    }

    //根据sn查询员工
    @Test
    public void getById(){
        Employee employee = employeeService.getById("10004");
        logger.info("全部员工信息查询如下:");
            logger.info(employee.toString());
        }


    //添加员工信息
    //导入Spring容器实例
    @Resource(name = "employee1")
    private Employee employee1;

    @Resource(name = "employee2")
    private Employee employee2;

    @Test
    public void add(){
        employeeService.add(employee1);
        getAllDepartment();
        logger.info("添加一条员工信息成功!");
        getAllEmployee();
    }

    //修改员工信息

    @Test
    public void update(){
        Employee employee02 = new Employee("10005","123123","万茜","10003","员工");
        employee02.setSn("10005");
        employeeService.update(employee02);
        logger.info("修改员工信息成功!");
        getAllEmployee();
    }

    //删除一条员工信息
    @Test
    public void delete(){
        employeeService.delete("10005");
        logger.info("删除一条员工信息成功!");
        getAllEmployee();
    }
}

spring-web.xml 实例化对象用于添加数据(依赖实体类无参构造方法)

<!--实例化第一个员工对象-->
<bean id="employee1" class="cn.com.entity.Employee" p:sn="10005" p:password="123123" p:name="孙红雷" p:department_sn="10003" p:post="员工"></bean>
<!--实例化第二个个员工对象-->
<bean id="employee2" class="cn.com.entity.Employee" p:sn="10005" p:password="123123" p:name="张鲁一" p:department_sn="10003" p:post="员工"></bean>

web下创建Controller控制类
进入添加修改页面方法,增删改查方法

在这里插入图片描述

项目控制类

//员工表控制类
@Controller
@RequestMapping("/employee")
public class EmployeeController {

    //注入Service层接口实现类
    @Resource(name = "employeeService")
    private EmployeeService employeeService;

    //注入Service层部门接口实现类
    @Resource(name = "departmentService")
    private DepartmentService departmentService;


/*    @RequestMapping(value = "/show")
    public String show() {
        System.out.println("进入Controller,show访问页面的映射,浏览器访问方法!");
        return "redirect:/employee/getAllModel";  //JSP页面
    }*/


    //1.查询员工信息
    //普通表单
    //使用ModelAndView的,JSP
    @RequestMapping(value = "/getAllModel")
    public ModelAndView getAllModel(){
        System.out.println("进入Controller,ModelAndView查询查询员工信息方法!");
        //查询集合,调用Service层方法
        List<Employee> employees = employeeService.getAll();
        ModelAndView modelAndView = new ModelAndView();
        //添加model数据
        modelAndView.addObject("employees",employees);
        //添加逻辑视图名,自动找页面
        modelAndView.setViewName("employee_list");
        System.out.println("封装完成! return modelAndView");
        return modelAndView;
        //进入JSP前端页面
    }


    //2.添加员工信息
    //SpringMVC的form表单
    //进入添加页面
    @RequestMapping(value = "/to_add")
    public String to_add(Map<String,Object> map){
        System.out.println("进入Controller,to_add访问页面的映射,浏览器访问方法!");
        map.put("employee",new Employee());
        //封装部门信息
        map.put("department",departmentService.getAll());
        //添加静态常量类的数据
        map.put("post", Contant.getPosts());
        return "employee_add";  //JSP页面
    }

    //添加员工
    @RequestMapping(value = "/insert")
    public String add(Employee employee) {
        System.out.println("进入Controller控制器,add方法,添加员工方法!");
        //执行添加工单
        employeeService.insert(employee);
        //返回到下面输出页面方法
        return "redirect:/employee/getAllModel";
    }


    //修改员工信息
    //SpringMVC的form表单
    //进入修改页面
    @RequestMapping(value = "/to_update")
    public String to_update(Map<String,Object> map, @RequestParam("sn") String sn){
        System.out.println("进入Controller,to_update访问页面的映射,浏览器访问方法!");
        map.put("employee",employeeService.getById(sn));
        //添加部门信息
        map.put("department",departmentService.getAll());
        //添加静态常量类的数据
        map.put("post", Contant.getPosts());
        return "employee_update";  //JSP页面
    }

    //修改员工
    @RequestMapping(value = "/update",params = "sn")
    public String update(Employee employee) {
        System.out.println("进入Controller控制器,update方法,编辑员工方法!");
        //执行添加工单
        employeeService.update(employee);
        //返回到下面输出页面方法
        return "redirect:/employee/getAllModel";
    }

    //删除员工信息
    @RequestMapping(value = "/delete/{sn}")
    public String delete(@PathVariable("sn") String sn) {
        System.out.println("进入Controller控制器,delete方法,删除员工方法!");
        //执行添加工单
        employeeService.delete(sn);
        //返回到下面输出页面方法
        return "redirect:/employee/getAllModel";
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OA办公系统的九大设计原则: 1.整体性 系统整体设计能有效的实现后台一体化管理,前端满足用户个性化需求,系统标准化程度高。 2.先进性 软件采用的技术,将在相当长的时间内保证技术的发展能力,应具有良好便捷的升级能力,选用的硬件设备及操作系统、数据库产品、应用软件均具有先进性及成熟的技术与产品。 3.规范性 遵循统一的国家规范公文格式和交换接口标准。 4.高效性 系统提供对各类事务处理的高效性。使对大容量数据的查询和更新等操作也在较短的时间内迅速完成。对于大数据量的处理,也能高效地完成。 5.安全可靠性 采用最成熟和应用最广泛的技术平台,支持身份认证技术、安全加密技术;数据在传输过程和数据库中采用高加密技术,保证数据的安全性。分不同的角色控制信息数据,采用横向和纵向结合的矩阵权限控制模式,保证企业的各种信息安全。 6.扩展性 由于计算机和网络等领域技术发展十分迅速,应用环境,系统硬件及系统软件都会不可避免将被更新,系统的可扩充性及版本的兼容性,直接影响着应用系统和用户需求的发展和功能的提升。因此,OA系统十分重视扩展性,能很容易地适应调整,扩充和删减;另一方面,它还具有与其它系统的接口能力,利用各系统功能之长,进行优势互补。 7.适应性和灵活性 在日常工作中,不可避免地需要进行机构及人员的调整,OA系统能提供充分的变更与扩展能力,适用机构及人员的调整。OA系统还具有图形化工作流定义工具,系统管理员可在浏览器环境下任意调整或定义工作流程。系统具有灵活的信息发布系统,用户可根据需要定制发布需要的新闻、通知。 8.易用性 系统的设计尤其重视用户界面的友好性。简洁大方、功能齐备、美观实用、提示准确。 9.健壮性 OA办公系统的开发设计应该支持应用和数据库等多重负载均衡能力,支持附件服务器和数据库服务器分离技术,从而支持数万用户同时在线和同时操作的能力,不会因为用户数的增长或者信息量的增长,而导致系统响应能力下降。 如何分辨OA办公系统的优劣?设计原则是一个重要的评判标准。优秀的设计原则能让OA办公系统脱颖而出,实现系统整体的高性能、高可用、可扩展,发挥出更强的协同办公能力。而OA办公系统设计的九大原则,基本上包括了OA办公系统的性能指标,给项目开发和用户选型提供了有益的借鉴,对于中国OA办公系统的整体水平也能起到提升作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值