配置文件图:至于包导入的问题网上搜下:
web.xml配置文件
**为自己的包名
applicationContext.xml
struts2 action
<action name="checkUser" class="***.RegisterAction" method="checkUserExecute">
<result name="check" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">inputStream</param>
</result>
</action>
hibernate mysql.hbm.xml
天苍苍,野茫茫,风吹草底见牛羊
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 >
< servlet >
< servlet-name > dwr </ servlet-name >
<!-- 指定Servlet的实现类 -->
< servlet-class > uk.ltd.getahead.dwr.DWRServlet </ servlet-class >
<!-- 指定处于开发阶段 -->
< init-param >
< param-name > debug </ param-name >
< param-value > true </ param-value >
</ init-param >
</ servlet >
<!-- 指定DWR的核心Servlet拦截的URL -->
< servlet-mapping >
< servlet-name > dwr </ servlet-name >
< url-pattern > /dwr/* </ url-pattern >
</ servlet-mapping >
<!-- 验证码 -->
< servlet >
< servlet-name > imagecodeservlet </ servlet-name >
< servlet-class > cn.com.enorth.util.imgcode.ImageCodeServlet </ servlet-class >
< init-param >
< param-name > type </ param-name >
< param-value > 1 </ param-value >
</ init-param >
< init-param >
< param-name > length </ param-name >
< param-value > 4 </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > imagecodeservlet </ servlet-name >
< url-pattern > /imgcode </ url-pattern >
</ servlet-mapping >
< filter >
< filter-name > struts2 </ filter-name >
< filter-class >
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/applicationContext.xml </ param-value >
</ context-param >
< listener >
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
</ listener >
< context-param >
< param-name > webAppRootKey </ param-name >
< param-value > trip.root </ param-value >
</ context-param >
< context-param >
< param-name > log4jConfigLocation </ param-name >
< param-value > /WEB-INF/classes/log4j.properties </ param-value >
</ context-param >
< listener >
< listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
</ listener >
< welcome-file-list >
< welcome-file > index.jsp </ welcome-file >
</ welcome-file-list >
</ web-app >
log4j.properties
< 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 >
< servlet >
< servlet-name > dwr </ servlet-name >
<!-- 指定Servlet的实现类 -->
< servlet-class > uk.ltd.getahead.dwr.DWRServlet </ servlet-class >
<!-- 指定处于开发阶段 -->
< init-param >
< param-name > debug </ param-name >
< param-value > true </ param-value >
</ init-param >
</ servlet >
<!-- 指定DWR的核心Servlet拦截的URL -->
< servlet-mapping >
< servlet-name > dwr </ servlet-name >
< url-pattern > /dwr/* </ url-pattern >
</ servlet-mapping >
<!-- 验证码 -->
< servlet >
< servlet-name > imagecodeservlet </ servlet-name >
< servlet-class > cn.com.enorth.util.imgcode.ImageCodeServlet </ servlet-class >
< init-param >
< param-name > type </ param-name >
< param-value > 1 </ param-value >
</ init-param >
< init-param >
< param-name > length </ param-name >
< param-value > 4 </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > imagecodeservlet </ servlet-name >
< url-pattern > /imgcode </ url-pattern >
</ servlet-mapping >
< filter >
< filter-name > struts2 </ filter-name >
< filter-class >
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/applicationContext.xml </ param-value >
</ context-param >
< listener >
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
</ listener >
< context-param >
< param-name > webAppRootKey </ param-name >
< param-value > trip.root </ param-value >
</ context-param >
< context-param >
< param-name > log4jConfigLocation </ param-name >
< param-value > /WEB-INF/classes/log4j.properties </ param-value >
</ context-param >
< listener >
< listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
</ listener >
< welcome-file-list >
< welcome-file > index.jsp </ welcome-file >
</ welcome-file-list >
</ web-app >
log4j.rootLogger
=
INFO, stdout, logfile
log4j.logger.com.albertsong = DEBUG
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =% d % p [ % c] - % m % n
log4j.appender.logfile = org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File = ${trip.root} / WEB - INF / log / trip.log
log4j.appender.logfile.MaxFileSize = 512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex = 3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] - % m % n
log4j.logger.com.albertsong = DEBUG
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =% d % p [ % c] - % m % n
log4j.appender.logfile = org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File = ${trip.root} / WEB - INF / log / trip.log
log4j.appender.logfile.MaxFileSize = 512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex = 3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] - % m % n
**为自己的包名
applicationContext.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:p ="http://www.springframework.org/schema/p"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="dataSource" class ="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method ="close" >
< property name ="driverClass" value ="com.mysql.jdbc.Driver" />
< property name ="jdbcUrl" value ="jdbc:mysql://localhost:3306/trip" />
< property name ="user" value ="root" />
< property name ="password" value ="asdtiang" />
</ bean >
< bean id ="sessionFactory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" ref ="dataSource" />
< property name ="mappingResources" >
< list >
<!-- **改为自己的路径-->
< value > **/User.hbm.xml
</ value >
< value > **/mysql.hbm.xml
</ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
</ prop >
< prop key ="show_sql" > true </ prop >
</ props >
</ property >
</ bean >
< bean id ="userServer" class ="**.UserServer" >
< property name ="sessionFactory" ref ="sessionFactory" />
</ bean >
< bean name ="registerAction" class ="**.RegisterAction" >
< property name ="userServer" ref ="userServer" >
</ property >
</ bean >
</ beans >
dwr.xml
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:p ="http://www.springframework.org/schema/p"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
< bean id ="dataSource" class ="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method ="close" >
< property name ="driverClass" value ="com.mysql.jdbc.Driver" />
< property name ="jdbcUrl" value ="jdbc:mysql://localhost:3306/trip" />
< property name ="user" value ="root" />
< property name ="password" value ="asdtiang" />
</ bean >
< bean id ="sessionFactory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" ref ="dataSource" />
< property name ="mappingResources" >
< list >
<!-- **改为自己的路径-->
< value > **/User.hbm.xml
</ value >
< value > **/mysql.hbm.xml
</ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
</ prop >
< prop key ="show_sql" > true </ prop >
</ props >
</ property >
</ bean >
< bean id ="userServer" class ="**.UserServer" >
< property name ="sessionFactory" ref ="sessionFactory" />
</ bean >
< bean name ="registerAction" class ="**.RegisterAction" >
< property name ="userServer" ref ="userServer" >
</ property >
</ bean >
</ beans >
<?
xml version="1.0" encoding="UTF-8"
?>
<!-- START SNIPPET: dwr -->
<! DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
< dwr >
< allow >
< create creator ="new" javascript ="validator" >
< param name ="class" value ="org.apache.struts2.validators.DWRValidator" />
</ create >
< convert converter ="bean" match ="com.opensymphony.xwork2.ValidationAwareSupport" />
</ allow >
< signatures >
<![CDATA[
import java.util.Map;
import org.apache.struts2.validators.DWRValidator;
DWRValidator.doPost(String, String, Map<String, String>);
]]>
</ signatures >
</ dwr >
<!-- END SNIPPET: dwr -->
<!-- START SNIPPET: dwr -->
<! DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
< dwr >
< allow >
< create creator ="new" javascript ="validator" >
< param name ="class" value ="org.apache.struts2.validators.DWRValidator" />
</ create >
< convert converter ="bean" match ="com.opensymphony.xwork2.ValidationAwareSupport" />
</ allow >
< signatures >
<![CDATA[
import java.util.Map;
import org.apache.struts2.validators.DWRValidator;
DWRValidator.doPost(String, String, Map<String, String>);
]]>
</ signatures >
</ dwr >
<!-- END SNIPPET: dwr -->
struts2 action
<action name="checkUser" class="***.RegisterAction" method="checkUserExecute">
<result name="check" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">inputStream</param>
</result>
</action>
public
class
RegisterAction
extends
ActionSupport {
private Log log = LogFactory.getLog(RegisterAction. class );
private InputStream inputStream;
private UserServerInter userServer;
private UserDAO dao = new UserDAO();
private String userName;
public String checkUserExecute() throws Exception {
try {
log.info(userName);
if (userServer.exist(userName)) {
this .setInputStream( new FileInputStream( new File(
ServletActionContext.getServletContext().getRealPath(
" /images/error.jpg " ))));
} else {
this .setInputStream( new FileInputStream( new File(
ServletActionContext.getServletContext().getRealPath(
" /images/ok.jpg " ))));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return " check " ;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this .inputStream = inputStream;
}
public UserServerInter getUserServer() {
return userServer;
}
public void setUserServer(UserServerInter userServer) {
this .userServer = userServer;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this .userName = userName;
}
}
private Log log = LogFactory.getLog(RegisterAction. class );
private InputStream inputStream;
private UserServerInter userServer;
private UserDAO dao = new UserDAO();
private String userName;
public String checkUserExecute() throws Exception {
try {
log.info(userName);
if (userServer.exist(userName)) {
this .setInputStream( new FileInputStream( new File(
ServletActionContext.getServletContext().getRealPath(
" /images/error.jpg " ))));
} else {
this .setInputStream( new FileInputStream( new File(
ServletActionContext.getServletContext().getRealPath(
" /images/ok.jpg " ))));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return " check " ;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this .inputStream = inputStream;
}
public UserServerInter getUserServer() {
return userServer;
}
public void setUserServer(UserServerInter userServer) {
this .userServer = userServer;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this .userName = userName;
}
}
public
interface
UserServerInter {
public boolean exist(String username);
}
public boolean exist(String username);
}
public
class
UserServer
extends
HibernateDaoSupport
implements
UserServerInter{
@SuppressWarnings( " unchecked " )
public boolean exist(String username) {
System.out.println(username);
List ls = getHibernateTemplate().findByNamedQuery( " userIsExist " , username);///这个地方使用mysql.hbm.xml中配置的HQL语句
return ls.size() == 1 ? true : false ;
}
}
@SuppressWarnings( " unchecked " )
public boolean exist(String username) {
System.out.println(username);
List ls = getHibernateTemplate().findByNamedQuery( " userIsExist " , username);///这个地方使用mysql.hbm.xml中配置的HQL语句
return ls.size() == 1 ? true : false ;
}
}
<%
@ page language
=
"
java
"
import
=
"
java.util.*;
"
pageEncoding
=
"
utf-8
"
%>
<% @ taglib prefix = " s " uri = " /struts-tags " %>
<% @ taglib prefix = " sx " uri = " /struts-dojo-tags " %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
< title > My JSP 'index.jsp' starting page </ title >
</ head >
< body >
< script type ="text/javascript" >
function changeValidateCode(obj) {
obj.src = " checkUser.action?userName= " + document.getElementById( " userName " ).value;
}
</ script >
<!-- 为异步提交定义需要的url -->
< s:url id ="userUrl" action ="checkUser" />
< s:textfield id ="userName" name ="userName" maxlength ="10" theme ="simple"
onblur ="changeValidateCode(img)" />
<!-- 这个是指示器,当请求未完成时显示这个图片 -->
< img id ="img" src ="images/ok.jpg" align ="center" />
<!-- 这个是显示信息的目标 -->
< span id ="idInfo" > 请输入你要注册的用户名 </ span >
</ body >
</ html >
<% @ taglib prefix = " s " uri = " /struts-tags " %>
<% @ taglib prefix = " sx " uri = " /struts-dojo-tags " %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
< title > My JSP 'index.jsp' starting page </ title >
</ head >
< body >
< script type ="text/javascript" >
function changeValidateCode(obj) {
obj.src = " checkUser.action?userName= " + document.getElementById( " userName " ).value;
}
</ script >
<!-- 为异步提交定义需要的url -->
< s:url id ="userUrl" action ="checkUser" />
< s:textfield id ="userName" name ="userName" maxlength ="10" theme ="simple"
onblur ="changeValidateCode(img)" />
<!-- 这个是指示器,当请求未完成时显示这个图片 -->
< img id ="img" src ="images/ok.jpg" align ="center" />
<!-- 这个是显示信息的目标 -->
< span id ="idInfo" > 请输入你要注册的用户名 </ span >
</ body >
</ html >
hibernate mysql.hbm.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<! DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping package ="com.albertsong.bitrac.dao.query" >
<!--
<sql-query name="userIsExist">
<return alias="userIsExist" class="org.jinjin.trip.User" />
select * from user u where u.username=?
</sql-query>
-->
< query name ="userIsExist" >
<![CDATA[
from User where username=?
]]>
</ query >
</ hibernate-mapping >
user.hbm.xml
<! DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping package ="com.albertsong.bitrac.dao.query" >
<!--
<sql-query name="userIsExist">
<return alias="userIsExist" class="org.jinjin.trip.User" />
select * from user u where u.username=?
</sql-query>
-->
< query name ="userIsExist" >
<![CDATA[
from User where username=?
]]>
</ query >
</ hibernate-mapping >
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
< hibernate-mapping >
< class name ="org.jinjin.trip.mysql.User" table ="user" catalog ="trip" >
< id name ="id" type ="java.lang.String" >
< column name ="id" />
< generator class ="uuid.hex" />
</ id >
< property name ="password" type ="java.lang.String" >
< column name ="password" length ="50" />
</ property >
< property name ="username" type ="java.lang.String" >
< column name ="username" length ="25" not-null ="true" unique ="true" />
</ property >
< property name ="email" type ="java.lang.String" >
< column name ="email" not-null ="true" unique ="true" />
</ property >
</ class >
</ hibernate-mapping >
spring和hibernate的另外一种整合方式:通过hibernate的配置文件来整合,这样要好的多:个人感觉
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
< hibernate-mapping >
< class name ="org.jinjin.trip.mysql.User" table ="user" catalog ="trip" >
< id name ="id" type ="java.lang.String" >
< column name ="id" />
< generator class ="uuid.hex" />
</ id >
< property name ="password" type ="java.lang.String" >
< column name ="password" length ="50" />
</ property >
< property name ="username" type ="java.lang.String" >
< column name ="username" length ="25" not-null ="true" unique ="true" />
</ property >
< property name ="email" type ="java.lang.String" >
< column name ="email" not-null ="true" unique ="true" />
</ property >
</ class >
</ hibernate-mapping >
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
>
< property name ="configLocation" value ="classpath:hibernate.cfg.xml" />
</ bean >
< property name ="configLocation" value ="classpath:hibernate.cfg.xml" />
</ bean >
配置文件和以前一样在,src目录下,其实最后也到web-inf/class下面去了。这样hibernate的配置文件就不用写到spring的配置文件里了。挺好。
天苍苍,野茫茫,风吹草底见牛羊