oa项目面试准备
熟悉项目在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里面
------------------------------------------未解决-----------------------------------------------------
报销单控制器
两个拦截器等
最新文章
- java面向对象---对象初始化
- 同时闪烁多个要素代码(ArcEngine)
- 9.3 js基础总结3
- 【Beta】第二次任务发布
- Jquery EasyUI DataGrid .net实例
- Maven使用常见问题整理
- lightoj 1019
- Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式
- linux的单用户模式
- 迷你MVVM框架 avalonjs 0.95发布
- Spring与Mybatis整合
- phpstorm注册码
- WMvare桥接模式固定IP
- Django复习之ORM
- Linux 下hosts文件详解
- 项目方说性能达到百万TPS,如何测试它的可信度?
- URAL 1963 Kite 计算几何
- preg_match 与 preg_match_all
- jQuery .attr()和.removeAttr()方法操作元素属性示例
- iOS开发UIApplication用法