struts hibernate spring

web.xml
<?xml version="1.0" encoding="GBK"?>

<web-app 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">

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</web-app>

application-Context.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "spring" "../../../lib/spring-beans.dtd" >
<beans default-autowire="no" default-dependency-check="none"
default-lazy-init="false">

<!--
配置数据源
注意: 用org.apache.commons.dbcp.BasicDataSource, 要引入 apache commons
的commons-collections-3.1.jar, commons-dbcp-1.2.1.jar, commons-pool-1.2.jar三个包
-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<!--<value>oracle.jdbc.OracleDriver</value>-->
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.1.88:1521:sinitek</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>

<!-- 配置sessionFactory, 注意这里引入的包的不同 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>test/struts/Regiest.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.OracleDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<!-- 设置c3p0连接池 -->
<!-- <prop key="hibernate.c3p0.minPoolSize">0</prop>
<prop key="hibernate.c3p0.maxPoolSize">5</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">200</prop>-->
</props>
</property>
</bean>

<!-- 配置transactionManager, 注意这里引入的包的不同 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>

<!--Regiest事务代理配置 -->
<bean id="RegiestDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
singleton="true">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="regiestDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

<!--Login事务代理配置 -->
<bean id="LoginDaoProx"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
singleton="true">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="loginDao"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

<!-- Hibernate 模板 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>


<!-- 配置注册类的会话工厂 -->
<bean id="regiestDAO" class="test.dao.RegiestDao">
<!--singleton="true">-->
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<!-- <property name="sessionFactory">
<ref local="sessionFactory"/>
</property>-->
</bean>

<!-- struts context-->
<bean name="/regiestaction"
class="test.struts.RegiestAction"
singleton="false">
<property name="regiestdao">
<ref local="RegiestDaoProxy"/>
</property>
</bean>

<bean id="loginDao" class="test.dao.LoginDaoImp">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>

<bean name="/loginaction" class="test.struts.LoginAction"
singleton="false">
<property name="logindao">
<ref local="LoginDaoProx"/>
</property>
</bean>

</beans>

struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>

<form-beans>
<form-bean name="loginForm" type="test.struts.LoginForm"/>
<form-bean name="regiestForm" type="test.struts.RegiestForm"/>
</form-beans>

<!-- <global-forwards>
<forward name="regiest" path="/regiest.jsp"/>
</global-forwards>-->
<!-- type="org.springframework.web.struts.DelegatingActionProxy"-->
<!--type="org.springframework.web.struts.DelegatingActionProxy"-->

<action-mappings>
<action path="/loginaction"
type="test.struts.LoginAction"
name="loginForm"
scope="request"
validate="false"
input="/login.jsp">
<forward name="failure" path="/messageFailure.jsp"/>
<forward name="success" path="/messageSuccess.jsp"/>
</action>

<action path="/regiestaction"
type="test.struts.RegiestAction"
name="regiestForm"
scope="request"
validate="false"
input="/regiest.jsp">
<forward name="regiestFailure" path="/regiest.jsp"/>
<forward name="regiestSuccess" path="/regiestMessageSuccess.jsp"/>
</action>

</action-mappings>

<message-resources parameter="test.struts.application"/>

<!-- <controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationsContext.xml"/>
</plug-in>-->

</struts-config>

hibernate.cfg.xml
<?xml version='1.0' encoding='GBK'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<hibernate-configuration>

<session-factory>
<!-- properties -->
<property name="connection.username">test</property>
<property name="connection.url">jdbc:oracle:thin:@192.168.1.88:1521:sinitek</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="connection.password">test</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!-- mapping files -->
<mapping resource="test/struts/Regiest.hbm.xml"/>

</session-factory>

</hibernate-configuration>


Regiest.hbm.xml
<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<!-- Created Thu Apr 14 21:57:25 CST 2005 -->
<hibernate-mapping package="test.struts">

<class name="Regiest" table="REGIEST_TABLE">
<id name="id" column="ID" type="java.lang.Integer">
<generator class="sequence">
<param name="sequence">seq_wf_entry</param>
</generator>
</id>
<!-- <id name="docId" type="string">
<column name="DOC_ID" length="10"/>
<generator class="test.struts.MySequenceGenerator">
<param name="sequence">DOCUMENT_SEQUENCE</param>
</generator>
</id>-->
<!-- <id name="ID" type="java.lang.Long">
<generator class="native"/>
</id>-->
<!--<property name="emails" column="EMAIL" type="UserType.EMailList"/>-->
<!--<property name="age" column="AGE" type="java.lang.String"/>-->
<property name="name" column="NAME" type="java.lang.String"/>
<property name="password" column="PASSWORD" type="java.lang.String"/>
<property name="sex" column="SEX" type="java.lang.String"/>
<property name="email" column="EMAIL" type="java.lang.String"/>
<property name="age" column="AGE" type="UserType.IntType"/>
</class>

</hibernate-mapping>

RegiestForm
package test.struts;

import javax.servlet.http.*;
import org.apache.struts.action.*;

public class RegiestForm extends ActionForm
{
private String regiestname;
private String regiestpassword;
private String tworegiestpassword;
private String sex;
private String email;
private String age;

public String getRegiestname()
{
return regiestname;
}

public void setRegiestname( String regiestname )
{
this.regiestname = regiestname;
}

public String getRegiestpassword()
{
return regiestpassword;
}

public void setRegiestpassword( String regiestpassword )
{
this.regiestpassword = regiestpassword;
}

public String getTworegiestpassword()
{
return tworegiestpassword;
}

public void setTworegiestpassword( String tworegiestpassword )
{
this.tworegiestpassword = tworegiestpassword;
}

public String getSex()
{
return sex;
}

public void setSex( String sex )
{
this.sex = sex;
}

public String getEmail()
{
return email;
}

public void setEmail( String email )
{
this.email = email;
}

public String getAge()
{
return age;
}

public void setAge( String age )
{
this.age = age;
}

public void reset( ActionMapping mapping, HttpServletRequest request )
{
regiestname = null;
regiestpassword = null;
tworegiestpassword = null;
age = null;
email = null;
}
}

RegiestAction
package test.struts;

import test.struts.Jlongin;
import test.dao.*;


import java.lang.reflect.*;
import java.util.*;
import java.sql.*;
import java.rmi.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.sql.*;
import org.apache.struts.action.*;


import oracle.jdbc.driver.*;

public class RegiestAction extends Action
{
/*RegiestDaoInterface regiestdao;

public RegiestDaoInterface getRegiestdao()
{
return regiestdao;
}

public void setRegiestdao( RegiestDaoInterface regiestdao )
{
this.regiestdao = regiestdao;
}
*/
private String foo;
private String bar;

public ActionForward execute( ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse httpServletResponse )
{
RegiestForm uaf = ( RegiestForm ) actionForm;
String username = uaf.getRegiestname(); //获得用户名
String password = uaf.getRegiestpassword(); //获得密码
String sex = uaf.getSex(); //获得性别
String email = uaf.getEmail(); //获得email
String age = uaf.getAge(); //获得年龄
System.out.println( username + " " + password + " " + sex + " " + email + " " + age );

ActionErrors errors = new ActionErrors();

Jlongin jlogin = new Jlongin();

//严整用户名重复
//System.out.println("用户名重复 benig");
//运用hibernate验证户名重复
if ( !jlogin.jregiestf( username ) )
{
//用以显示用户名重复
errors.add( "usernameregiest", new ActionMessage( "regiest.name", username ) );
saveErrors( request, errors );
//System.out.println("用户名重复 midder");
//失败,跳回到原页面regiest.jsp
return actionMapping.getInputForward();
//return actionMapping.findForward( "regiestFailure" );
}

//插入注册信息
Regiest regiest = new Regiest( username, password, sex, email, age );
//Regiest regiest=new Regiest();
/* regiest.setName( username);
regiest.setPassword( password);
regiest.setSex( sex);
regiest.setEmail( email);
regiest.setAge( age);*/
//hibernate方法
if(jlogin.hbminsertRegiestmessage(regiest)){
/* //spring方法
if ( regiestdao.insertRegiestinfo( regiest ) )
{*/
errors.add( "usernameregiestfail", new ActionMessage( "regiest.fail", username ) );
saveErrors( request, errors );
//注册失败,跳回到原页面regiest.jsp
return actionMapping.getInputForward();
//return actionMapping.findForward( "regiestFailure" );
}
//jlogin.insertRegiestmessage( username, password, sex, email, age );

/* org.hibernate.Session s = HibernateUtil.currentSession();
String hql = "from REGIEST_TABLE";
try
{
org.hibernate.Query query = s.createQuery( hql );
java.util.List msgList = query.list();
test.struts.Regiest msg = ( test.struts.Regiest ) msgList.get( 0 );
//System.out.println( msg.getId() );
System.out.println( msg.getName() );
System.out.println( msg.getPassword() );
}
catch ( org.hibernate.HibernateException e )
{
e.printStackTrace();
}
HibernateUtil.closeSession();*/

//注册成功,显示注册成功页面
return ( actionMapping.findForward( "regiestSuccess" ) );

}
}

RegiestDao
package test.dao;

import java.util.Map;

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


import test.struts.*;

public class RegiestDao extends HibernateDaoSupport
implements RegiestDaoInterface
{
public boolean insertRegiestinfo( Regiest regiest )
{
getHibernateTemplate().saveOrUpdate(regiest);
return false; //表示返回成功
}
}

RegiestDaoInterface
package test.dao;

import test.struts.*;

public interface RegiestDaoInterface
{
public abstract boolean insertRegiestinfo( Regiest regiest);

}

Jlongin
package test.struts;

import java.sql.*;
import java.util.*;
import javax.sql.*;
import javax.naming.*;
import org.hibernate.*;
import org.hibernate.criterion.*;


import test.struts.test.*;

public class Jlongin
{

DataSource ds = null; //声明数据源

//获得数据源
public DataSource getDataSource()
{
try
{
Context ctx = new InitialContext();
ds = ( DataSource ) ctx.lookup( "java:/comp/env/Sinitek" );
}
catch ( NamingException e )
{
e.printStackTrace();
//return actionMapping.findForward( "globlError" );
}
return ds;
}

//验证用户名和密码是否正确
/* public boolean jlongintest( String name, String password )
{
boolean flag = false; //用以判断用户名和密码是否正确
ds = getDataSource();
if ( ds != null )
{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
conn = ds.getConnection();
String sql = "select * from regiest_table where name=? and password=?";
ps = conn.prepareStatement( sql );
ps.setString( 1, name );
ps.setString( 2, password );
//查询用户名是否存在

rs = ps.executeQuery( sql );
//如果rs.next()返回有值,代表该用户名存在,
if ( rs.next() )
{
flag = true;
}
}
catch ( SQLException e )
{
if ( conn != null )
{
try
{
conn.rollback();
}
catch ( SQLException ex )
{
ex.printStackTrace();
}
}
System.err.println( "链接数据库失败!" );
e.printStackTrace();
}
//释放资源
finally
{
if ( conn != null )
{
try
{
conn.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
}
}
}

return flag;

}*/

//验证用户名重复
/*public boolean jregiestf( String name )
{
boolean flag = true; //用以判断用户名是否重复
String username = name;
ds = getDataSource();
if ( ds != null )
{
Connection conn = null;
Statement ps = null;
ResultSet rs = null;
try
{
conn = ds.getConnection();
ps = conn.createStatement();
System.out.println( "yanzheng name=" + name );
//查询用户名
//String sql = "select name from regiest_table where name=" + name;
//rs = ps.executeQuery( "select name from regiest_table where name= 55");
//+ name );
rs = ps.executeQuery( "select name,password from regiest_table where name='" + username + "'" );
//如果rs.next()返回有值,代表该用户名已经被注册过
// rs.next();
// System.out.println("rs rs.getString"+rs.getString( 1));
if ( rs.next() )
{
flag = false;
}
}
catch ( SQLException e )
{
if ( conn != null )
{
try
{
conn.rollback();
}
catch ( SQLException ex )
{
ex.printStackTrace();
}
}
System.out.println( "Caught: " + e );
System.err.println( "链接数据库失败!" );
}
//释放资源
finally
{
if ( conn != null )
{
try
{
conn.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
}
}
}
return flag;
}*/

//插入注册信息
public void insertRegiestmessage
( String username, String password, String sex, String email, String age )
{
System.out.println( "insert Regiestmessage begin>>1" );
ds = getDataSource();
if ( ds != null )
{
System.out.println( "insert Regiestmessage begin>>2" );
Connection conn = null;
PreparedStatement ps = null;
try
{
System.out.println( "insert Regiestmessage begin>>3" );
conn = ds.getConnection();
conn.setAutoCommit( false );
ps = conn.prepareStatement( "insert into regiest_table(" +
"name,password,sex,email,age) values (?,?,?,?,?)" );
ps.setString( 1, username );
ps.setString( 2, password );
ps.setString( 3, sex );
ps.setString( 4, email );
ps.setString( 5, age );
ps.execute();
conn.commit();
}
catch ( SQLException e )
{
if ( conn != null )
{
try
{
conn.rollback();
}
catch ( SQLException ex )
{
ex.printStackTrace();
}
}
System.out.println( "Caught: " + e );
System.err.println( "链接数据库失败!" );
}
finally
{
if ( ps != null )
{
try
{
ps.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
}
if ( conn != null )
{
try
{
conn.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
}
}
}
}

//运用hibernate验证用户名重复
public boolean jregiestf( String name )
{
org.hibernate.Session session = HibernateUtil.currentSession();
boolean flag = true;
try
{
Iterator iterator = session.createQuery( "select " +
"distinct name from Regiest where" +
" name='" + name + "'" ).list().iterator();
if ( iterator.hasNext() )
flag = false; /*如果为false,表示此用户名已被使用*/
/*List listcriteria = ( List ) session.createCriteria( Regiest.class );
listcriteria.add( Expression.eq( "name", name ) );
if ( !listcriteria.isEmpty() )
{
flag = false;
}*/
}
catch ( org.hibernate.HibernateException e )
{
e.printStackTrace();
throw new UserLoginException( "用户名已存在!", e, "001" );
}
finally
{
HibernateUtil.closeSession();
}
return flag;
}

//运用hibernate验证用户名和密码是否正确
public boolean jlongintest( String name, String password )
{
org.hibernate.Session session = HibernateUtil.currentSession();
boolean flag = true;
try
{
Iterator iterator = session.createQuery( "select " +
"distinct name from Regiest where" +
" name='" + name + "' and password='" + password + "'" )
.list().iterator();
if ( iterator.hasNext() )
{
flag = false;
}
/* Query query=session.createQuery( "from Regiest as re" +
" where re.name=:name and re.password=:password ");
query.setString( "name",name);
query.setString( "password",password);*/

/* query.setParameter( 1,name);
query.setParameter( 2,password);*/
/* List list=query.list();
if(!list.isEmpty()){
flag=false;
}*/
/* List listcriteria = session.createCriteria( Regiest.class ).
add( Expression.eq( "name", name ) ).
add( Expression.eq( "password", password ) ).list();
if ( !listcriteria.isEmpty() )
{
flag = false;
}*/
}
catch ( org.hibernate.HibernateException e )
{
e.printStackTrace();
throw new UserLoginException( "登陆失败!", e, "001" );
}
finally
{
HibernateUtil.closeSession();
}
return flag;
}

//运用hibernate插入注册信息
public boolean hbminsertRegiestmessage( Regiest regiest ) throws UserLoginException
{
org.hibernate.Session session = HibernateUtil.currentSession();
Transaction tx = null;
boolean flag = true;
try
{
tx = session.beginTransaction();
//session.createSQLQuery( )createQuery( )
//session.
session.save( regiest );
tx.commit();
flag = false;
}
catch ( org.hibernate.HibernateException e )
{
if ( tx != null )
{
tx.rollback();
}
e.printStackTrace();
throw new UserLoginException( "注册失败!", e, "001" );
}
finally
{
HibernateUtil.closeSession();
}
return flag;
}


}

HibernateUtil
package test.struts;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

private static Log log = LogFactory.getLog(HibernateUtil.class);

private static final SessionFactory sessionFactory;

static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
log.error("Initial SessionFactory creation failed.", ex);
throw new ExceptionInInitializerError(ex);
}
}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession() {
Session s = (Session) session.get();
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

public static void closeSession() {
Session s = (Session) session.get();
if (s != null)
s.close();
session.set(null);
}
}

IntType
package UserType;

import org.hibernate.usertype.*;
import java.io.Serializable;
import java.sql.Types;
import java.util.*;
import org.hibernate.type.*;
import org.hibernate.*;

import javax.sql.*;
import java.sql.*;


public class IntType implements UserType, Serializable
{
public static final int[] TYPES = new int[]{Types.VARCHAR};

public int[] sqlTypes()
{
return TYPES;
}

public Class returnedClass()
{
return Integer.class;
}

public boolean equals( Object object, Object object1 ) throws HibernateException
{
if ( object == object1 )
{
return true;
}
return false;
}

public int hashCode( Object object ) throws HibernateException
{
return 0;
}

public Object nullSafeGet( ResultSet resultSet, String[] strings, Object object )
throws HibernateException, SQLException
{
String value = ( String ) Hibernate.STRING.nullSafeGet( resultSet, strings[0] );
if ( value != null )
{
return strtointeger( value );
}
else
{
return Collections.EMPTY_LIST;
}
}

private Integer strtointeger( String value )
{
Integer i = Integer.valueOf( value );
return i;
}

public void nullSafeSet( PreparedStatement preparedStatement, Object object, int i )
throws HibernateException, SQLException
{
if ( object != null )
{
Object str = integertostr( object );
Hibernate.STRING.nullSafeSet( preparedStatement, str, i );
}
else
{
Hibernate.STRING.nullSafeSet( preparedStatement, object, i );
}

}

private Object integertostr( Object value )
{
return ( Object ) String.valueOf( value );
}

public Object deepCopy( Object object ) throws HibernateException
{
Integer integer=null;
//integer = new Integer();
if ( object == null )
{
return integer;
}
Integer sourceinteger = ( Integer ) object;
return sourceinteger;
}

public boolean isMutable()
{
return false;
}

public Serializable disassemble( Object object ) throws HibernateException
{
return null;
}

public Object assemble( Serializable serializable, Object object ) throws HibernateException
{
return null;
}

public Object replace( Object object, Object object1, Object object2 ) throws HibernateException
{
return null;
}
}

log4j.property
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.rootLogger=warn,stdout

由于不断地加代码,代码乱了点,希望加以整理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值