`

struts2+spring2.5+hibernate3.2+MySQL5完整整合

阅读更多

struts2+spring2.5+hibernate3.2+MySQL5.1

学习尚学堂教程,根据自己的理解,通过一个简单的用户登陆检测功能的实现来完成三种框架的搭建,所有文件和包全部详细列出,以供参考和查询,具体流程图如下(由于新浪博文限制发布字数,所以分几篇进行发布):


项目总体结构如下:


(其中text.java用为测试,此类可无)


一、使用框架版本及所必须导入的包:

struts- 2.0.14

spring-framework-2.5

hibernate-3.2

MySQL5.1驱动包

总体架构如下:

导入的所有包如下:



以下为分别对应框架包介绍

1.struts-2.0.14包介绍:



struts2-spring-plugin-2.0.14.jar:用于与spring框架的整合

freemarker-2.3.8.jar:支持freemarker

commons-logging-1.0.4.jar::Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的java.util.logging,如果也找不到就用Simple Logger。

ognl-2.6.11.jar:对Object-Graph Navigation Language的支持

struts2-core-2.0.14.jar和xwork-2.0.7.jar:为struts2核心包


2.spring-framework-2.5包介绍:



spring.jar:spring核心包

log4j-1.2.14.jar:日志包

aspectjrt.jar和aspectjweaver.jar:支持AspectJ表达式,集成AspectJ AspectJ LTW织入器


3.hibernate-3.2包介绍:



hibernate.jar :hibernate核心包。
antlr.jar :Hibernate使用ANTLR来产生查询分析器
cglib.jar :CGLIB库,Hibernate用它来实现PO字节码的动态生成

asm.jar :ASM字节码库,cglib.jar包依赖的包
asm-attrs.jar :ASM字节码库,cglib.jar包依赖的包
commons-collections.jar :Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。

ehcache.jar :Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。
jta.jar :JTA规范,当Hibernate使用JTA的时候需要。
dom4j.jar :dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。Hibernate使用dom4j解析XML配置文件和XML映射元文件。

二、所有文件

各个页面和配置文件详细列出:

JSP页面:

1.新建login.jsp,关键代码如下:

<body>

        <center>

    <s:form action="login" method="post">

            <s:textfield label="用户名" name="username"/>

            <s:password label="  " name="password"/>

            <s:submit value="登陆"/>

    </s:form>

    </center>

  </body>

2. 新建success.jsp,关键代码如下:

<body>

    <s:property value="username"/>

    <s:property value="password"/>

  </body>

JAVA类:

1. Users.java

package com.ssh.text;

 

public class Users {

       private String id;

       private String password;

       private String name;

       private int age;

    public String getId() {

       return id;

    }

    public void setId(String id) {

       this.id = id;

    }

    public String getPassword() {

       return password;

    }

    public void setPassword(String password) {

       this.password = password;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

}

 

2. LoginAciton.java

 

package com.ssh.text;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAciton extends ActionSupport {

    private String username;

    private String password;

    private UsersDAO dao;

    public UsersDAO getDao() {

       return dao;

    }

    public void setDao(UsersDAO dao) {

       this.dao = dao;

    }

    public String getUsername() {

       return username;

    }

    public void setUsername(String username) {

       this.username = username;

    }

    public String getPassword() {

       return password;

    }

    public void setPassword(String password) {

       this.password = password;

    }

    public String login()throws Exception{

       Users user=this.dao.selectManager(this.username,this.password);

       if(user!=null){

           return this.SUCCESS;

       }else{

           return this.INPUT;

       }

 

    }

}

 

3. LoginAciton.java

package com.ssh.text;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UsersDAO extends HibernateDaoSupport {

   

    public Users selectManager(String username,String password){

       Users user=(Users) this.getHibernateTemplate().get(Users.class, username);

       if(user!=null && user.getPassword().equals(password)){

           return user;

       }else{

           return null;

       }

    }

}

 

配置文件:

1. web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 

    <display-name>Struts Blank</display-name>

    <!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔,此参数用于后面的Spring Context Loader -->

    <context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>classpath:applicationContext-*.xml</param-value>

    </context-param>

   

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

   

    <!-- Character Encoding filter -->

    <filter>

       <filter-name>encodingFilter</filter-name>

       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

       <init-param>

           <param-name>encoding</param-name>

           <param-value>UTF-8</param-value>

       </init-param>

    </filter>

   

    <!-- Hibernate Open Session In View filter-->

    <filter>

       <filter-name>hibernateFilter</filter-name>

        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

    </filter>

   

    <!-- struts2配置 -->

    <filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

   

    <!-- map配置 -->

    <filter-mapping>

       <filter-name>encodingFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

       <filter-name>hibernateFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

   

    <welcome-file-list>

        <welcome-file>login.jsp</welcome-file>

    </welcome-file-list>

</web-app>

 

2. log4j.properties

### direct log messages to stdout ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

 

### direct messages to file hibernate.log ###

#log4j.appender.file=org.apache.log4j.FileAppender

#log4j.appender.file.File=hibernate.log

#log4j.appender.file.layout=org.apache.log4j.PatternLayout

#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

 

### set log levels - for more verbose logging change 'info' to 'debug' ###

 

log4j.rootLogger=warn, stdout

 

#log4j.logger.org.hibernate=info

#log4j.logger.org.hibernate=debug

 

### log HQL query parser activity

#log4j.logger.org.hibernate.hql.ast.AST=debug

 

### log just the SQL

#log4j.logger.org.hibernate.SQL=debug

 

### log JDBC bind parameters ###

#log4j.logger.org.hibernate.type=info

#log4j.logger.org.hibernate.type=debug

 

### log schema export/update ###

#log4j.logger.org.hibernate.tool.hbm2ddl=debug

 

### log HQL parse trees

#log4j.logger.org.hibernate.hql=debug

 

### log cache activity ###

#log4j.logger.org.hibernate.cache=debug

 

### log transaction activity

#log4j.logger.org.hibernate.transaction=debug

 

### log JDBC resource acquisition

#log4j.logger.org.hibernate.jdbc=debug

 

### enable the following line if you want to track down connection ###

### leakages when using DriverManagerConnectionProvider ###

#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

 

3. struts.xml

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="users" extends="struts-default">

    <!-- 用户登陆.class为applicationContext.xml中配置的id,其类属性由spring注入 -->

    <action name="login" class="loginAction"  method="login">

        <result name="success">/success.jsp</result>

        <result name="input">/login.jsp</result>

    </action>

    </package>

</struts>

4.applicationContext-common.xml

<?xml version="1.0" encoding="UTF-8"?>

 

<beans xmlns="http://www.springframework.org/schema/beans"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xmlns:aop="http://www.springframework.org/schema/aop"

         xmlns:tx="http://www.springframework.org/schema/tx"

         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

   

    <!-- 1.配置sessionFactory,将hibernate.cfg.xml注入到LocalSessionFactoryBean中的

       configLocation属性中

     -->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

       <property name="configLocation">

           <value>classpath:hibernate.cfg.xml</value>

       </property>  

    </bean> 

   

    <!-- 2.配置事物管理器,注入sessionFactory到HibernateTransactionManage中的configLocation

       属性中

     -->

    <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_r_r_r="execution(* com.bjsxt.usermgr.manager.*.*(..))"/>

       <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>

    </aop:config>

</beans>

 

5.applicationContext-actions.xml

 

<?xml version="1.0" encoding="UTF-8"?>

 

<beans xmlns="http://www.springframework.org/schema/beans"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xmlns:aop="http://www.springframework.org/schema/aop"

         xmlns:tx="http://www.springframework.org/schema/tx"

         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

   

    <bean id="users" class="com.ssh.text.UsersDAO">

       <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

   

    <!-- scope设置为多例 -->

    <bean id="loginAction" class="com.ssh.text.LoginAciton" scope="prototype">

       <property name="dao">

           <ref local="users"/>

       </property>

    </bean>

</beans>

 

6.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.driver_class">org.gjt.mm.mysql.Driver</property>

       <property name="connection.url">

       jdbc:mysql://127.0.0.1:3306/mail?useUnicode=true&amp;characterEncoding=UTF-8

       </property>

       <property name="connection.username">root</property>

       <property name="connection.password">123456</property>

      

       <!-- 数据库使用SQL方言 -->

       <property name="dialect">

       org.hibernate.dialect.MySQLDialect

       </property>

      

       <!-- 调试语句,分别为:是否输出SQL语句,是否指定标准格式输出,是否输出

           注释信息。

        -->

       <property name="show_sql">true</property>

       <property name="format_sql">true</property>

       <property name="use_sql_comments">true</property>

       <property name="hibernate.hbm2ddl.auto">update</property>

      

       <!-- 持久化类印射文件 -->

       <mapping resource="com/ssh/text/Users.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

7.Users.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping>

    <class name="com.ssh.text.Users" table="users">

       <id name="id" column="id" type="string"/>

       <property name="password" column="password" type="string"/>

       <property name="name" column="name" type="string"/>

       <property name="age" column="age" type="int"/>

    </class>

</hibernate-mapping>

测试页面

 

登陆页面:

 struts2+spring2.5+hibernate3.2+MySQL5完整整合(3)

登陆成功:

struts2+spring2.5+hibernate3.2+MySQL5完整整合(3)

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics