---------(第一天)--------------
OA项目:(使用SSH架构搭建+maven)
maven主要是导入项目所需要的包,这些包是固定的。就像不用maven创建项目时,直接加所需的外部jar包导入到WebRoot目录下的lib中。创建web项目时,使用maven支持。
1、创建一个web project(删除src文件,自己建立src文件)
注意一点:add maven support
2、在pom.xml文件中,添加一个坐标,发布到tomcat下,看结构是否一致
3、把整个工程的编码和jsp的编码改成utf-8
右击项目->>properties->>Resource->>设置编码utf-8
jsp页面设置:window->preferences->MyEclipse->File and Editors->JSP
修改数据库的字符集mysql>use mydb
mysql>alter database mydb character set utf8;
创建数据库指定数据库的字符集
mysql>create database mydb character set utf8;
检查编码方式:
mysql> show variables like 'char%';
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
查看数据表的编码格式
mysql> show create table ;
修改数据表编码格式
mysql>alter talbe character set utf8;
修改字段编码格式
ysql>alter table change character set utf8;
【注:添加的作用是:指定字符的编码、解码格式。
例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
注意:在xml配置文件中配置数据库utl时,要使用&的转义字符也就是&】
(1)开发环境 比如:eclipse中的window -->> Preferences -->>General-->>……
(2)页面设置
(3)服务器的配置 比如:tomcat的编码设置
4)数据库乱码 比如:mySqL数据库中
-------------------------------
4、建立maven约束的内容
src/main/java
cn.itcast.shoa.domain
存放hibernate的实体类和映射文件
cn.itcast.shoa.dao
存放的是数据库操作时候的dao的接口
cn.itcast.shoa.dao.impl
存放的是数据库操作时候的dao的实现类
cn.itcast.shoa.dao.base
存放的是数据操作的基本的dao接口
cn.itcast.shoa.dao.base.impl
存放的是数据操作的基本的dao的实现类
cn.itcast.shoa.service
存放的是业务逻辑接口
cn.itcast.shoa.service.impl
存放的是业务逻辑实现类
cn.itcast.shoa.struts.action
存放的是struts2中的action类
cn.itcast.shoa.util
存放的是在做项目的时候的工具类
src/main/resources
struts2
存放struts2的配置文件
spring
spring的配置文件
hibernate
hibernate.cfg.xml
src/test/java
src/test/resources
target
pom.xml
5、编辑pom.xml文件,导入整个工程的jar包
6、在cn.itcast.shoa.domain中写持久化类和映射文件[谁先测试谁先写】框架搭建好后测试。
Person.java(继承了Serializable类,可以在网络中传输,一般持久化类都会继承该类)
Person.hbm.xml《与持久化类对应的映射文件》
7、写hibernate的配置文件,把映射文件引入进去
8、写spring的配置文件,引入sessionFactory
8、写spring的配置文件,引入sessionFactory【一般会建立多个spring配置文件,一个作为其他配置文件的出口,其他的配置文件根据功能来划分
。applicationContext-db.xml主要是数据库spring的配置(包含事务管理),applicationContext.xml是作为引入其他spring配置文件,applicationContext-person.xml,是配置关于Person类的一些spring配置】
8.1 在spring的包中建立这么一个结构的配置文件
applicationContext.xml
applicationContext-*.xml
8.2 在applicationContext-db.xml文件中引入sessionFactory
第一种导入方式
classpath:hiberante/hiberante.cfg.xml
9、对sessionFactory进行测试
注:在实际运行中,pom.xml文件需要不能将build标签删除;测试程序运行时,经常丢失xml配置文件,需要重新修改名字,在修改回来,才能将xml配置文件加载到Tomcat的classes文件中,否则不能运行。问题?
总结:项目单独使用Hibernate时:通过什么样的类引用配置hibernate.cfg.xml文件,获得会话工厂,进行对数据的操作。Configuration conf = new Configuration().configure("hibernate.cfg.xml");SessionFactory sf = conf.buildSessionFactory();sf.getCurrentSession();一般是在工具类中
项目使用Spring框架整合Hibernate时:在spring文件中引用hibernate配置文件,将会话对象放入IoC容器中,通过ApplicationContext context = new ClassPathXmlApplicationContext("spring/ApplicationContext.xml");获取文件,在通过context.getBean("sessionFactory")获取会话工厂,进行数据库操作。
上面搭建完成,做一个测试运行,看框架是否可行。
----------------第二天--------------
10、在spring的配置文件中,写spring的声明式事务管理(权限验证、安全性、日志功能与业务逻辑分离开,独立开发,重点学习)
依据的原理是aop:使各个通知和目标方法实现松耦合
11、在dao层和service层建立接口和类
PersonDao
PersonDaoImpl
PersonService
PersonServiceImpl
12、把dao层和service层的类放入到spring的配置文件中
13、测试personService,看产生的对象是否是代理对象
14、写action
15、把action放入到spring配置文件中
16、写action的配置文件(struts.xml配置文件一定是在源文件根目录下,当服务器启动时,会加载该配置文件)
17、写web.xml文件(在web.xml中部署spring、hibernate、struts2)
-------------------------------------------
2、实际的应用:重构dao(为什么要用泛型重构Dao)
1、cn/itcast/shoa/dao/base/BaseDao
public interface BaseDao{
/**
* 得到E代表的所有的实体对象
* @return
*/
public Collection getAllEntry();
/**
* Serializable该类型可以接受所有的基本类型和String类型
* @param id
* @return
*/Serializable可以接收所有主键类型,所有的基本数据类型的包装类都继承了Serializable类
public E getEntryById(Serializable id);
public void saveEntry(E e);
public void deleteEntry(Serializable id);
public void updateEntry(E e);
}
2、实现类:cn/itcast/shoa/dao/base/impl/BaseDaoImpl
BaseDao
BaseDaoImpl implements BaseDao
PersonDao extends BaseDao
PersonDaoImpl extends BaseDaoImpl
implements PersonDao
-------------------------
架构搭建好,分模块进行程序分析;【每一个模块都有对应的】)
系统管理模块:(用户管理,角色管理,部门管理)
1、需要分析
2、数据库表的设计
3、写持久化类和映射文件
cn/itcast/sh05oa/domain/system
User.java
User.hbm.xml
Department.java
Department.hbm.xml
Role.java
Role.hbm.xml
注:配置映射关系时,所有的属性都对,也可能出现异常,输入可能有中文符号等,不行只能重新输入一遍。在hibernate的映射配置文件中,无需先数据库对应字段名,系统会自动匹配,只要在hibernate配置文件设置相关属性即可。每个持久化类都对应的映射文件,独立方便修改。
领取专属 10元无门槛券
私享最新 技术干货