一.项目结构(MVC)
直接上图
前者是整个项目结构,webcontent包含的是前端的一些jsp文件和css样式,java resourse包含后台的一些业务逻辑处理及接口;
后者是hibernate框架涉及的部分(红线)model层下的.hbm.xml是持久化层的ORM映射文件,可以通过Eclipse直接生成: 右击持久化层的包(model)--->new-->other-->hibernate-->选择第四个.hbm.xml,根据自己需要更改选项。
hibernate.cfg.xml是总配置文件,包含数据库的一些配置,及一些策略,如图:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property><!-- 账号 -->
<property name="connection.password">12315</property><!-- 密码 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///web?useUnicode=true&characterEncoding=UTF-8</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 方言-->
<property name="show_sql">true</property><!-- 是否打印sql语句在控制台 -->
<property name="format_sql">true</property><!-- sql语句对齐 -->
<property name="hbm2ddl.auto">update</property><!-- creat:创建表 update:更新表 -->
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="model/students.hbm.xml"/>
<mapping resource="model/Users.hbm.xml"/>
<mapping resource="model/courses.hbm.xml"/> <!-- 这四行都是注册持久化层的映射文件 -->
<mapping resource="model/teachers.hbm.xml"/>
</session-factory>
</hibernate-configuration>
而struts2主要是包含Action动作的控制和结果的返回,这里不一一例举了,直接上成果图,已经挂载在云端服务器了:
网址:www.bo-study.com/web
登录:
管理页面:
下面说下过程遇到的一些奇葩问题:
1.查询一个表时,某一个字段全部一样,如上图学号一栏全是s00001????
后来一步步排查,发现配置文件和后台数据处理没问题,是数据库的问题-----------该表没有主键,加了主键之后就好了。
2.当后台接受前端的request.getParameter();数据时候,返回的是String,必须转回相应的数据类型,涉及一些简单转换:
转化为int :int i=XX.intValue();
转化为integer:integer in=Integer.valueOf(String),integer in=new Integer(int)
转化为String:String str=XX.toString();当然还有其他方法...
3.写hql语句出错???
原因是直接把hql语句当做sql语句了,hql语句from后面的“表"是hibernate的持久化层的名字,而不是数据库中的表的名称。
总结:遇到的困难当然不止这些,不过其它都是很初级的错误,英文大小写,拼错那些。。