springMVC+spring+hibernate集成----2018-09-26

1. 先按照“spring MVC+Spring集成”方法执行
2. 导入Apache Commons几个jar包
commons-dbcp-1.4.jar 
commons-pool-1.5.6.jar 

把以上jar 都拷贝到/WEB-INF/lib/目录下。

3. 导入日志系统门面几个jar包
slf4j-api-1.6.1.jar :核心API 
slf4j-log4j12-1.6.1.jar :log4j实现
log4j-1.2.15.jar

把以上jar 都拷贝到/WEB-INF/lib/目录下。

4. 导入支持注解的几个jar包
persistence.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar包 

把以上jar 都拷贝到/WEB-INF/lib/目录下。

5. 导入Hibernate几个jar包

Hibernate3的jar包
/lib/目录下所有jar包(不包括log4j-1.2.11.jar)
把以上jar 都拷贝到/WEB-INF/lib/目录下。

6. 数据库的JDBC驱动

根据使用的数据库下载相应的JDBC 驱动的jar包,并拷贝到/WEB-INF/lib/目录下。
本例为:mysql-connector-java-5.0.4-bin.jar

7. 在hib-config.xml中加入如下的配置
让Spring通过自动扫描来查询和管理Bean
<context:component-scan  base-package="com.zte"/>  
配置数据源

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/myhib">
</property>
<property name="username" value="root"></property>
<property name="password" value="mysql"></property>
</bean>

配置sessionFactory
<bean id="sessionFactory"       class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
 <property name="dataSource">  
   <ref bean="dataSource" /><!--指定数据源 -->  
 </property>
<!—hibernate的配置托管给spring完成--> 
<property name="hibernateProperties"><!--指定Hibernate属性 -->
         <props> 
            <prop key="hibernate.dialect">  
                    org.hibernate.dialect.MySQLDialect  
            </prop>  
            <prop key="hibernate.show_sql">true</prop>
       <prop key="hibernate.hbm2ddl.auto">update</prop>
       </props>
</property>


扫描Model文件,通过解析Model文件的注解完成该文件与数据库表的映射
<property name="packagesToScan">
<value>com.zte.model</value>
</property>
   </bean>


配置事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>


配置事务的传播特性
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
    <tx:method name="*"  read-only="true"/>
</tx:attributes>
</tx:advice>
配置类参与事务的方法
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.zte.*.*.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>

3. 在hib-config.xml中配置DAO Bean
<bean id="userDao" class="com.zte.dao.UserDao">
</bean>
4.配置一个hibernateTemplate实例
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>




8. 编写Model类
package com.zte.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity//注释声明该类为持久类
@Table(name = "t_user1")//指定数据库表名默认为POJO的简单名称
public class User {
@Id//指定主键映射名
@GeneratedValue(strategy=GenerationType.AUTO)//主键生成方式序列
@Column(name = "t_id")
private int id;
@Column(name = "t_username")//指定数据库列映射名
private String username;
@Column(name = "t_password")//指定数据库列映射名
private String password;
......
}
注:这里省略了对应属性的get和set 方法
9. 编写DAO实现类程序
package com.zte.dao;
import javax.annotation.Resource;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.zte.model.User;
public class UserDao {
   @Resource(name ="hibernateTemplate")
  private HibernateTemplate hibernateTemplate;
 public void add(User u){ 
 System.out.println("UserDao.add()");
 hibernateTemplate.save(u);
 }
}
10. 在WebRoot下编写index.jsp页面该页面部署在项目的根下
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <base href="<%=basePath%>">
  </head>
  <body>
    <a href=“<%=request.getContextPath()%>/reg.jsp”>注册
    </a><br>
   </body>
 </html>
11. 在WebRoot下编写表单页面reg.jsp该页面部署在项目的根下
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<body>
<form action="<%=request.getContextPath()%>/login.do" method="get">
户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="注册">
</form>
</body>
12. 在WebRoot/WEB-INF/page下编写表单页面success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <base href="<%=basePath%>">
  </head>
<body>
恭喜你! ${user.username} 注册成功<br>  
</body>
</html>
解决乱码问题

1.JSP页面中输入的值传入数据库,数据库中显示乱码。
解决:在jsp页面中用:<%@ page language="java" contentType="text/html; charset=utf-8"%>
2.JSP页面中从数据库查询数据显示在文本框中的是乱码。
解决:配置tomcat(E:\webWorkspace7.0\apache-tomcat-6.0.18\conf\server.xml)中加入

URIEncoding="UTF-8"
<Connector port="80" protocol="HTTP/1.1"   connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,888评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,677评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,386评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,726评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,729评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,337评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,902评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,807评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,349评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,439评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,567评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,242评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,933评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,420评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,531评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,995评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,585评论 2 359

推荐阅读更多精彩内容