- 浏览: 144061 次
- 来自: ...
最新评论
-
安铁辉:
亲,问题解决了吗,我也遇到类似的问题,我是想cygwin+ma ...
nutch1.0 cygwin eclipse问题 -
bk41:
不明白···
Spring中的destroy-method="close"- - -
蓝月儿:
嗯 如果把得到的数据再放到一个列表显示在界面上呢,该怎么放置呢 ...
用SAX API解析XML文档为Java对象 -
zhaotao_king:
没看明白
Spring中的destroy-method="close"- - -
coffeesweet:
java.beans确实应该好好看看,了解一下,楼主的例子很好 ...
关于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
由于不断地加代码,代码乱了点,希望加以整理。
<?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
由于不断地加代码,代码乱了点,希望加以整理。
相关推荐
struts hibernate spring 框架运用struts hibernate spring 框架运用struts hibernate spring 框架运用struts hibernate spring 框架运用
Struts Hibernate Spring Ajax Struts Hibernate Spring Ajax
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
struts hibernate spring集成开发宝典光盘源码(一).rar
struts hibernate spring集成开发宝典光盘源码(二).rar
《Struts Hibernate Spring集成开发宝典》中文pdf版 计算机电子书下载,《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列...
开发基于Struts Spring Hibernate Ajax的网上信息发布平台(Struts Hibernate Spring Ajax)--Chapter1
java jsp servlet struts hibernate spring 实用技术
ssh整合 struts hibernate spring ssh整合 struts hibernate spring ssh整合 struts hibernate spring
struts hibernate spring 整合,的例子有增删查改
Struts HIbernate Spring 增删改的实例
SSH中 struts hibernate spring 各起什么作用`介绍的非常详细~
Struts Hibernate Spring Ajax Struts Hibernate Spring Ajax
Struts Hibernate Spring AjaxStruts Hibernate Spring Ajax
struts hibernate spring 面试题大全 struts hibernate spring 面试题大全
struts struts hibernate spring 整合 PUBhibernstruts hibernate spring 整合 PUBate spring 整合 PUB
Struts Hibernate Spring 简单综合教程ppt
精通eclipse整合web开发struts hibernate spring jbpm 第18章源代码(source )
SSH整合 Struts Hibernate Spring
struts hibernate spring 三个框架开发的jar包