使用Struts2框架开发租房系统(1)
Hibernate和Struts2配置:
Hibernate方面:
反向工程
单项1对多的配置:
* 1.编写多方实体类
* 2.编写一方实体类 (在一方实体类中 增加一个多方的集合对象)
* 3.编写多方的实体映射文件
* 4.编写一方的实体映射文件(在文件中增加 一个标签set)
* 5.将2个实体映射文件注册到hibernate.cfg.xml
* @author Administrator
* ps:如果想想把set 换成List
* a.将实体类中的set换成List
* b.将配置文件中的set标签换成bag标签
PS:
District.java:
private List<Street> streets;
District.hbm.xml:
<!-- name:对应的属性名
table:集合中的行类型 所属的表名
key-column:依然是2表中的外键 列名
class:集合中的行类型 所对应的类的全路径
cascade:none save-update delete all
inverse:默认取值 false :不反转 由一方主动维护关联关系
一旦设置为true 一方将不主动维护
-->
<bag name="streets" table="street" cascade="all" inverse="true" order-by="streetname desc" lazy="extra">
<key>
<column name="disid"></column>
</key>
<one-to-many class="com.zb.entity.Street"/>
</bag>
单项多对一关联:
* 1.编写1方的实体类
* 2.编写多方的实体类 (将多方实体类中原有的外键属性 更改成1方的对象类型)
* 3.编写1方的实体映射文件
* 4.编写多方的实体映射文件(将原来的外键的配置属性 更改成many-to-one)
* 5.将两个实体映射文件注册到hibernate.cfg.xml
PS:
Street.java:
private District district;
Street.hbm.xml:
<!-- name:对应实体类中的属性名
class:对应属性类型的全路径
column:依然是原先的外键 列名
-->
<many-to-one name="district" class="com.zb.entity.District" lazy="no-proxy">
<column name="disid"></column>
</many-to-one>
Student.hbm.xml:
<!-- name:对应的属性名
table:关联关系表
key-column:本类对象在关联关系表中对应的外键字段
class:关联的集合对象中的行类型 所对应的实体类
manyTomany-column:关联对象在关联关系表中对应的外键字段
-->
<bag name="teachers" table="student_teacher_rel">
<key>
<column name="stuid"></column>
</key>
<many-to-many class="com.zb.entity.Teacher" column="teaid"></many-to-many>
</bag>
Teacher.hbm.xml:
<!-- name:对应的属性名
table:关联关系表
key-column:本类对象在关联关系表中对应的外键字段
class:关联的集合对象中的行类型 所对应的实体类
manyTomany-column:关联对象在关联关系表中对应的外键字段
-->
<bag name="students" table="student_teacher_rel">
<key>
<column name="teaid"></column>
</key>
<many-to-many class="com.zb.entity.Student" column="stuid"></many-to-many>
</bag>
Struts2方面:
1.action类继承ActionSupport
2.重写validate方法
3.通过addFieldError向页面打入错误信息
4.必须添加struts标签库
5.在页面通过<s:fieldError>显示错误
6.必须配置input的结果映射
xml称为可扩展标记语言
a.配置
b.通信 (异构平台的通信标准)
dom解析原理:通过根节点定位
<servlet>
<servlet-name>
<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
<url-pattern>
web.xml只出现一个控制器的配置
尽可能不用原生态的servlet对象
自定义MVC框架的核心
filter
需要用一个能够处理所有请求的控制器 解决请求问题
自定义框架的执行流程
(1)项目启动时:程序初始化通知configurationManager对象解析struts.xml,将解析的所有内容 存放至一个Map对象中
(2)ActionMapper客户端发起请求,框架判定 该请求地址是否在上述Map对象中存在一个ActionMapping对象
(3)如果存在ActionMapping 将通过ActionInvocation对象 执行相应的请求处理,如果不存在 直接返回
(4)ActionInvocation执行完毕后 通过Action的返回标示符 寻找对应的视图 进行跳转