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"/>
网友评论