熟悉项目在ssm框架下的编程流程,了解mysql html spring springmvc mybatis技术、了解过springboot编程。

在上个寒假跟着培训机构用springboot框架编写过一个基础的信息管理系统,包括部门和员工表的增删改查及登录、

最近的一个项目是用IDEA的maven集成ssm框架做的一个报销单处理项目。功能包括员工表部门表的增删改查,登录登出,以及报销单的处理功能。

————————————————————————————

项目流程:

报销单处理:

1 数据库设计 :五张表

部门表 员工表 报销单 报销单明细 处理记录

报销单包括:编号 事由 创建人 创建时间 待处理人 总金额 报销单状态

报销单明细:编号 所属报销单 费用的类型(CONTANT表里) 金额 以及 描述(后面的框)

处理记录: 编号 报销单编号 处理人 处理的时间 处理结果 备注(下面的框)

2 项目的搭建和配置

在IDEA的编程环境下创建了一个maven项目,将项目的三层架构创建好业务层biz、持久层dao、表现层web

然后进行相应的配置,在各自的pom文件中导入需要的jar包,对各自的spring文件进行配置:

持久层 首先开启自动扫描持久化操作的包 配置bean :

数据源DataSource 选择的是spring jdbc提供的数据源 四个属性的配置driverClassName url username password

session工厂 可以对类名配置别名

映射器接口 对sessionFactory进行 扫描dao的接口并配置别名

业务层是对声明式事务进行配置 业务层的一个个方法就是体现一个个功能

表现层的控制器dto过滤器方法执行的时候把方法封装成一个事务

/**

过滤器的编写:在表现层创建过滤类encodingFilter继承Filter

作用是接收和响应用户请求的时候以utf-8的编码方式进行编码

在web.xml中配置过滤器

**/

自己写的过滤器没有用,重新在web.xml中对encoding的默认值重新进行了定义

创建常量类(数据字典):职务、费用类别、报销单状态、处理方式

————————————————————————

代码编写:

部门信息管理:

先写实体类

dao接口和映射文件dao.xml

biz接口和实现类

控制器

jsp页面

业务层注入持久层对象 控制器(表现层)注入业务层对象

员工管理:

先写实体类

dao接口和映射文件dao.xml

biz接口和实现类

控制器

jsp页面

要注意的是:员工和部门之间的关系 默认登录密码(biz中赋值)

通过外键取出部门信息的时候记住里面的数据名千万不要重名

登录功能:

先写业务层biz的接口和实现类

控制器 注意登陆成功时将employee对象用session对象的setAttribute发送到下一个页面

SpringMVC 登陆拦截器:判断url有无login字段,判断当前页面session传来的employee为不为空 还要在spring-web文件中配置拦截器


Spring: spring-ioc控制反转 AOP面向切面编程

项目结构:

三层架构:业务层:进行业务功能处理

持久层:持久化操作的处理

表现层:跟用户进行交互

oa项目是用三层的独立module来进行划分的

业务层里面的代码是比较灵活的 ,他会根据制定的一些规则来书写代码

表现层可能会有一些好用的框架按照他的模式写

持久层基本没什么变动

MVC设计模式

:让界面和model(实际的业务功能)进行分离

V是用jsp承担的

C是控制器Controller

M是biz和dao,说白了就是业务功能

文档处理流程:

不同角色的安排:员工 经理 总经理 财务

操作安排: 信息提交 审核 有权限最高的人进行确认

技术点: 声明式事务:配置 格式 为什么放在业务层 细密度问题

ssm的整合 spring 和 mybatis整合

基本的注意力都在不同的代码上 :不同的sql写不同的代码,而具体的融合(整合)不需要你去考虑

不定项表单:web前端的处理(没写) 着重强调的是我怎么去写这些值、接这些值的问题 服务器端接收是用一个集合来接受(因为不定向)

dto?ClaimVoucherInfo里面封装了报销单的条目集合

HttpSession session对象的setAttribute方法是把传入的key value用map封装起来 在下个页面中的sessionScope对象进行直接访问

---------------------------------------项目中遇到的bug----------------------------------------

插入中文信息乱码问题:



<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.7</maven.compiler.source>

<maven.compiler.target>1.7</maven.compiler.target>



在表现层的pom.xml文件中添加了这段配置就可以了

报销单无法进行提交无法审核:

在spring-dao文件里添加:

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>

------------------------------------------信息传递------------------------------------------------

以department表为例:

1.department_list.jsp中迭代的列出了department表的所有信息,forEach标签的item列表赋值"list"

2.这个list是从控制器departmentController中用map封装的业务层departmentBiz对象的方法getAll获取的所有部门表的信息

3.查看departmentBiz的具体实现代码 发现该类自动注入了持久层departmentDao的一个实体类,调用了departmentDao的selectAll方法

4.最后代码的具体操作就是在dao层的departmentDao.xml文件中编写了sql语句实现了对数据库的查询

------------------------------------------已解决-----------------------------------------------------

emlpoyee中的department对象是怎么注入信息的?self.jsp中直接调用了sessionScope.employee.department.name √









上述映射



select e.*,d.sn dsn,d.name dname from employee e left join department d on d.sn=e.department_sn



使employee对象进行查询时将department相应的对象封装到了employee里面

------------------------------------------未解决-----------------------------------------------------

报销单控制器

两个拦截器等


oa项目面试准备的更多相关文章

  1. 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】

    OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...

  2. [deviceone开发]-企业OA项目开源分享

    一.简介 是一个真实的企业OA项目改造的开源项目,几乎涵盖了所有常用的组件,包括环信实现在线聊天等功能,类似微信的朋友圈功能,自定义的智能搜索等,而且这个是真实的通过Http链接后台web服务,里面很 ...

  3. 01传智_jbpm与OA项目_整体项目架构

    oA项目: 项目结构如下:

  4. 基于SSH2的OA项目1.0_20161206_需求分析与框架搭建

    1. SSH项目 OA项目,办公自动化,将公司的数据,文档,流程实现在系统中的管理. 降低人员交流过程中的成本.提高办公的效率. 2 .系统管理 主要实现系统权限的管理,不同的用户登陆后看到菜单项不一 ...

  5. JAVA必背面试题和项目面试通关要点

    一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选择重复项,然后去掉重复项:) 数据库里 ...

  6. OA项目实战(二) 开发准备

    上次的博文OA系统实践(一) 概述中,我们已经了解了OA的相关概念.从本次博文开始,我们做一个简单的OA实例. 在OA开发之前,有几个工作们需要提前做.一个是对需求进行分析,另一个是对开发环境进行选择 ...

  7. 2019年1月份A项目面试纪要

    2019年1月份A项目面试纪要 本周二(1月22号),笔者接到了A项目的电话面试.这个面试来自A项目的客户,客户的后勤模块的几个顾问组成阵容强大的面试官团队.参加这个面试,让笔者感触良多,自己虽然在S ...

  8. 第一周博客之二---OA项目环境搭建及开发包部署

    OA项目环境搭建 一个项目想要能够在开发人员打包好项目包之后进行测试,就必须进行项目测试环境的搭建,要根据开发工程师的开发环境采用不同的测试环境,以下只是浅谈下Java项目OA(办公自动化平台)的环境 ...

  9. [转载] JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

    JAVA面试题和项目面试核心要点精华总结(想进大公司必看) JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

随机推荐

  1. OpenVINO学习系列1

    OpenVINO介绍 OpenVINO是英特尔推出一套基于深度学习的计算机视觉加速优化框架,支持其它机器学习平台模型的压缩优化.加速计算等功能. 自发布以后就得到开发者的青睐,其强大的模型优化与压缩能 ...

  2. Rest接口加Https单向认证

    背景: 接到一个需求,客户要求某个模块的rest接口都得通过https访问,客户提供证书. 步骤: Server端证书生成 刚开始还没拿到客户的证书,所以通过jdk自带的keytools自己先生成了一 ...

  3. 【NOIP2015】斗地主 题解(DFS+贪心)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的AAA到KKK加上大小王的共545454张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下: ...

  4. pycharm2020专业版永久激活

    pycharm专业版激活 1. 下载pycharm(专业版) 注意:这里一定要去官网下载正版的专业版pycharm. pycharm官网 但是这是pycharm的最新版,目前激活教程仅适用以前的202 ...

  5. 高效c/c++日志工具zlog使用介绍

    1. zlog简介 zlog的资料网上很多,这里不在详细说明:zlog是用c写的一个日志工具,非常小,而且高效,可以同时向控制台和文件中输出,日志接口与printf使用基本一样,所以使用起来很简单. ...

  6. 补充的javascript 数据类型笔记

        <p> 变量名命名规范</p>     由字母,数字,下划线,$组成     严格区分大小写 var app和var App 是两个变量     变量名不能以数字开头 ...

  7. 程序员必须了解!IntelliJ IDEA 2020.2的新增功能

    IDEA 因为之前破解过,所以家里的电脑都是19版本的,用的也比较顺手,也就一直懒得去动他,但是,程序猿的好奇心可能真的挺重,猎奇心里,在网上也看到了很多关于2020版本的idea的各种好处,于是,闲 ...

  8. QT QJson与QByteArray的转化

    目录 QJsonObject转为QByteArray QByteArray转为QJsonObject 可以将QJsonObject与QByteArray互相转化,以便网络编程时客户端与服务器之间的通信 ...

  9. 2020-06-13:Redis底层数据结构?

    福哥答案2020-06-13: 福哥口诀法:简链字跳整 压快压 SDS simple synamic string:简单动态字符串.支持自动动态扩容的字节数组 .list :链表 .双端链表.dict ...

  10. Umlet和draw.io 使用心得

    文章目录 软件使用心得 1. Umlet 画图软件 1.1 前言 1.2 优点 1.3使用小trick 1.3.1 灵活改变箭头形式 1.3.2 整体复制 1.3.3 快速复制 2. draw.io ...