struts2 注入防止sql注入

访问action的时候报这个错误:
Unable to instantiate Action, com.zhaoshg.test.action.RegisterAction,
defined for 'register' in namespace '/'Error creating bean with name 'userService' defined in class path resource [spring/applicationContext.xml]: Cannot resolve reference to bean 'userDao' while setting bean property 'userDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in class path resource [spring/applicationContext.xml]: Instanti nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zhaoshg.test.dao.UserDaoImp]: Constru nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
root cause
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in class path resource [spring/applicationContext.xml]: Cannot resolve reference to bean 'userDao' while setting bean property 'userDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in class path resource [spring/applicationContext.xml]: Instanti nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zhaoshg.test.dao.UserDaoImp]: Constru nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByName(AbstractAutowireCapableBeanFactory.java:1029)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:977)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:329)
com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:182)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:162)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:133)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
说是找不到类SqlMapExecutor,但是ibatis-sqlmap包我也有了啊,这个类是存在的....我都快郁闷死了
项目是用maven管理的,大家可以看看pom如下
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.zhaoshg&/groupId&
&artifactId&test&/artifactId&
&packaging&war&/packaging&
&version&0.0.1-SNAPSHOT&/version&
&name&test JEE5 Webapp&/name&
&url&http://maven.apache.org&/url&
&dependencies&
&dependency&
&groupId&com.zhaoshg&/groupId&
&artifactId&dataservice-shared&/artifactId&
&version&1.0.1&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&servlet-api&/artifactId&
&version&2.5&/version&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&javax.servlet.jsp&/groupId&
&artifactId&jsp-api&/artifactId&
&version&2.1&/version&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&2.5.6.SEC01&/version&
&type&jar&/type&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-aop&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-tx&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&2.5.6.SEC01&/version&
&type&jar&/type&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-jdbc&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-beans&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-dao&/artifactId&
&version&2.0.8&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-ibatis&/artifactId&
&version&2.0.8&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context-support&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&!-- &dependency& &groupId&org.springframework&/groupId& &artifactId&spring-ibatis&/artifactId& &version&2.0.8&/version& &/dependency& --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-test&/artifactId&
&version&2.5.6.SEC01&/version&
&type&jar&/type&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-spring-plugin&/artifactId&
&version&${struts.version}&/version&
&exclusions&
&exclusion&
&artifactId&spring-beans&/artifactId&
&groupId&org.springframework&/groupId&
&/exclusion&
&exclusion&
&artifactId&spring-core&/artifactId&
&groupId&org.springframework&/groupId&
&/exclusion&
&exclusion&
&artifactId&spring-context&/artifactId&
&groupId&org.springframework&/groupId&
&/exclusion&
&exclusion&
&artifactId&spring-web&/artifactId&
&groupId&org.springframework&/groupId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&mons&/groupId&
&artifactId&commons-io&/artifactId&
&version&1.3.2&/version&
&/dependency&
&dependency&
&groupId&commons-lang&/groupId&
&artifactId&commons-lang&/artifactId&
&version&2.4&/version&
&/dependency&
&!-- &dependency& &groupId&org.springframework&/groupId& &artifactId&spring-orm&/artifactId& &version&3.0.3.RELEASE&/version& &type&jar&/type& &scope&compile&/scope& &/dependency& --&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-core&/artifactId&
&version&${struts.version}&/version&
&exclusions&
&exclusion&
&artifactId&commons-io&/artifactId&
&groupId&commons-io&/groupId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-json-plugin&/artifactId&
&version&${struts.version}&/version&
&/dependency&
&dependency&
&groupId&log4j&/groupId&
&artifactId&log4j&/artifactId&
&version&1.2.14&/version&
&type&jar&/type&
&/dependency&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&4.8.1&/version&
&type&jar&/type&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&type&jar&/type&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&taglibs&/groupId&
&artifactId&standard&/artifactId&
&version&1.1.2&/version&
&type&jar&/type&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&commons-fileupload&/groupId&
&artifactId&commons-fileupload&/artifactId&
&version&1.2.1&/version&
&type&jar&/type&
&/dependency&
&dependency&
&groupId&dom4j&/groupId&
&artifactId&dom4j&/artifactId&
&version&1.6.1&/version&
&type&jar&/type&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&net.sf.json-lib&/groupId&
&artifactId&json-lib&/artifactId&
&version&2.3&/version&
&/dependency&
&dependency&
&groupId&commons-httpclient&/groupId&
&artifactId&commons-httpclient&/artifactId&
&version&3.1&/version&
&type&jar&/type&
&/dependency&
&dependency&
&groupId&org.apache.ibatis&/groupId&
&artifactId&ibatis-sqlmap&/artifactId&
&version&2.3.4.726&/version&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&version&2.5.6.SEC01&/version&
&/dependency&
&dependency&
&groupId&proxool&/groupId&
&artifactId&proxool&/artifactId&
&version&0.9.1&/version&
&/dependency&
&dependency&
&groupId&proxool&/groupId&
&artifactId&proxool-cglib&/artifactId&
&version&0.9.1&/version&
&/dependency&
&dependency&
&groupId&com.microsoft&/groupId&
&artifactId&sqlserver&/artifactId&
&version&1.1&/version&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&org.json&/groupId&
&artifactId&json&/artifactId&
&version&&/version&
&/dependency&
&!-- 在maven repo里面,struts2-core 依赖于ognl, ognl运行时需要"javassist"但却不包含在tomcat里面,因此,需要自己加上 --&
&dependency&
&groupId&javassist&/groupId&
&artifactId&javassist&/artifactId&
&version&3.8.0.GA&/version&
&/dependency&
&/dependencies&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&2.0.2&/version&
&configuration&
&encoding&utf-8&/encoding&
&source&1.6&/source&
&target&1.6&/target&
&fork&false&/fork&
&verbose&true&/verbose&
&/configuration&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&maven-jetty-plugin&/artifactId&
&version&6.1.24&/version&
&/plugins&
&finalName&test&/finalName&
&properties&
&struts.version&2.2.1&/struts.version&
&/properties&
&/project&
我的包结构如下
jsp-api-2.1.jar
jstl-1.2.jar
servlet-api-2.5.jar
aopalliance-1.0.jar
commons-beanutils-1.8.0.jar
commons-codec-1.2.jar
commons-collections-3.2.1.jar
commons-fileupload-1.2.1.jar
commons-httpclient-3.1.jar
commons-io-1.3.2.jar
commons-lang-2.4.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
ezmorph-1.0.6.jar
freemarker-2.3.16.jar
ibatis-sqlmap-2.3.4.726.jar
json-lib-2.3.jar
junit-4.8.1.jar
log4j-1.2.14.jar
ognl-3.0.jar
proxool-0.9.1.jar
proxool-cglib-0.9.1.jar
spring-aop-2.5.6.SEC01.jar
spring-beans-2.5.6.SEC01.jar
spring-context-2.5.6.SEC01.jar
spring-context-support-2.5.6.SEC01.jar
spring-core-2.5.6.SEC01.jar
spring-dao-2.0.8.jar
spring-ibatis-2.0.8.jar
spring-jdbc-2.5.6.SEC01.jar
spring-test-2.5.6.SEC01.jar
spring-tx-2.5.6.SEC01.jar
spring-web-2.5.6.SEC01.jar
sqlserver-1.1.jar
standard-1.1.2.jar
struts2-core-2.2.1.jar
struts2-json-plugin-2.2.1.jar
struts2-spring-plugin-2.2.1.jar
xml-apis-1.0.b2.jar
xwork-core-2.2.1.jar
web.xml如下
&?xml version="1.0" encoding="UTF-8"?&
&web-app version="2.5" xmlns="/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"&
&display-name&test&/display-name&
&filter-name&struts2&/filter-name&
&filter-class&org.apache.struts2.dispatcher.FilterDispatcher&/filter-class&
&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&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&!-- &filter& &filter-name&securityFilter&/filter-name& &filter-class&org.springframework.web.filter.DelegatingFilterProxy&/filter-class& &init-param& &param-name&targetBeanName&/param-name&
&param-value&springSecurityFilterChain&/param-value& &/init-param& &/filter& &filter-mapping& &filter-name&securityFilter&/filter-name& &url-pattern&/*&/url-pattern& &/filter-mapping& --&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&
classpath:/spring/applicationContext.xml
classpath:/spring/applicationContext-resources.xml
&/param-value&
&/context-param&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&listener&
&listener-class&org.springframework.web.context.request.RequestContextListener&/listener-class&
&/listener&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&*.html&/url-pattern&
&dispatcher&REQUEST&/dispatcher&
&dispatcher&FORWARD&/dispatcher&
&/filter-mapping&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&*.jsp&/url-pattern&
&/filter-mapping&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&session-config&
&session-timeout&30&/session-timeout&
&/session-config&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&/web-app&
struts.xml如下
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"&
&bean type="com.opensymphony.xwork2.UnknownHandler" name="unknownHandler" class="com.zhaoshg.test.action.ActionUnknownHandler" /&
&!-- Constants --&
&constant name="struts.i18n.encoding" value="UTF-8" /&
&constant name="struts.action.extension" value="html" /&
&!-- Bean 的注入由spring自动装配 --&
&constant name="struts.objectFactory" value="spring" /&
&constant name="struts.custom.i18n.resources" value="i18n/ApplicationResources,i18n/errors" /&
&constant name="struts.serve.static" value="true" /&
&constant name="struts.serve.static.browserCache" value="false" /&
&constant name="struts.multipart.maxSize" value="" /&
&constant name="struts.ui.theme" value="simple" /&
&constant name="struts.enable.SlashesInActionNames" value="true" /&
&!-- *** Struts2优化参数 *** --&
&constant name="struts.freemarker.templatesCache" value="true" /&
&constant name="struts.devMode" value="false" /&
&!-- package提供了将多个Action组织为一个模块的方式 package的名字必须是唯一的 package可以扩展 当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的package 的配置 父package必须在子package前配置 name:package名称 extends:继承的父package名称
abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action --&
&package name="index" extends="struts-default" namespace="/"&
&global-results&
&result name="error"&/error.jsp&/result&
&/global-results&
&action name="index" class="com.zhaoshg.test.action.IndexAction" method="indexAction"&
&result name="success"&/welcome.jsp&/result&
&action name="register" class="com.zhaoshg.test.action.RegisterAction" method="register"&
&result name="success"&/user/userlist.jsp&/result&
&/package&
&include file="struts/struts-ajax.xml" /&
struts/struts-ajax.xml 代码如下
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"&
&package name="ajax" extends="json-default" namespace="/ajax"&
&!-- 这里class直接写完整类路径,可以被spring装配 --&
&action name="validateUserName" class="com.zhaoshg.test.action.UserAjaxAction" method="validateUserName"&
&result type="json" /&
&/package&
spring配置如下
applicationContext-resources.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:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-lazy-init="true"&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
&value&classpath:/database.properties&/value&
&/property&
&bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"&
&property name="driver"&
&value&${test_driver}&/value&
&/property&
&property name="driverUrl"&
&value&${test_url}&/value&
&/property&
&property name="user"&
&value&${test_username}&/value&
&/property&
&property name="password"&
&value&${test_password}&/value&
&/property&
&property name="minimumConnectionCount"&
&value&${proxool.minimumConnectionCount}&/value&
&/property&
&property name="maximumConnectionCount"&
&value&${proxool.maximumConnectionCount}&/value&
&/property&
&property name="maximumActiveTime"&
&value&${proxool.maximumActiveTime}&/value&
&/property&
&property name="simultaneousBuildThrottle"&
&value&${proxool.simultaneousBuildThrottle}&/value&
&/property&
&property name="prototypeCount"&
&value&${proxool.prototypeCount}&/value&
&/property&
&property name="trace"&
&value&${proxool.trace}&/value&
&/property&
&property name="verbose"&
&value&${proxool.verbose}&/value&
&/property&
&!-- 0.9.1对于这个属性的设置有bug,所以暂时注释掉 --&
&!-- &property name="houseKeepingSleepTime"& &value type="long"&${proxool.houseKeepingSleepTime}&/value& &/property& --&
&property name="houseKeepingTestSql"&
&value&${proxool.houseKeepingTestSql}&/value&
&/property&
&property name="delegateProperties"&
&value&user=${test_username},password=${test_password}&/value&
&/property&
&bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
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:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-lazy-init="true"&
&context:annotation-config /&
&tx:annotation-driven transaction-manager="transactionManager" /&
&context:component-scan base-package="com.zhaoshg.test.service.*" /&
&bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&
&property name="configLocation"&
&value&classpath:/sql-map-config.xml&/value&
&/property&
&property name="dataSource" ref="dataSource" /&
&bean id="userDao" class="com.zhaoshg.test.dao.UserDaoImp"&
&property name="dataSource" ref="dataSource" /&
&property name="sqlMapClient" ref="sqlMapClient" /&
&bean id="userService" class="com.zhaoshg.test.service.UserServiceImp"&
&property name="userDao" ref="userDao" /&
我的UserDao是接口,我只贴实现
UserDaoImp.java
package com.zhaoshg.test.
import org.springframework.orm.ibatis.support.SqlMapClientDaoS
import com.zhaoshg.test.model.U
* @author kaiming..cn
public class UserDaoImp extends SqlMapClientDaoSupport implements UserDao {
public User getUserByUsername(String username) {
return (User) getSqlMapClientTemplate().queryForObject("getUserByUsername", username);
UserServiceImp.java,也只贴实现
package com.zhaoshg.test.
import mons.lang.StringU
import com.zhaoshg.test.dao.UserD
import com.zhaoshg.test.model.U
public class UserServiceImp implements UserService {
private UserDao userD
* (non-Javadoc)
* com.zhaoshg.test.service.UserService#getUserByUsername(java.lang.String)
public User getUserByUsername(String username) {
if (username == null || StringUtils.isBlank(username))
return userDao.getUserByUsername(username);
public UserDao getUserDao() {
return userD
public void setUserDao(UserDao userDao) {
this.userDao = userD
在看看我的action
UserAjaxAction.java
package com.zhaoshg.test.
import java.util.HashM
import java.util.M
import com.zhaoshg.test.model.U
import com.zhaoshg.test.service.UserS
public class UserAjaxAction extends BaseAction {
private static final long serialVersionUID = 8036591L;
private static Map&String, Object& map = new HashMap&String, Object&();
private UserService userS
public String validateUserName() {
User user = userService.getUserByUsername(username);
if (user != null) {
map.put("success", false);
map.put("msg", "用户名已经存在!");
map.put("success", true);
return SUCCESS;
public static Map&String, Object& getMap() {
public static void setMap(Map&String, Object& map) {
UserAjaxAction.map =
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getEmail() {
public void setEmail(String email) {
this.email =
public UserService getUserService() {
return userS
public void setUserService(UserService userService) {
this.userService = userS
这里代码差不多了.
我启动是没错的.但是访问这个action的时候/ajax/userNameValidate就开始报上面的错了.
希望各位帮忙
问题补充:songfantasy 写道还有我感觉你的配置文件放的很乱。不清晰。最好就是统一管理配置文件。
songfantasy 写道发现个问题,web.xml很有问题。
#&&&& &context-param&&
#&&&&&&&& &param-name&contextConfigLocation&/param-name&&
#&&&&&&&& &param-value&&
#&&&&&&&& classpath:/spring/applicationContext.xml&
#&&&&&&&& classpath:/spring/applicationContext-resources.xml&
#&&&&&&&& &/param-value&&
#&&&& &/context-param&&
#&&&& &listener&&
#&&&&&&&& &listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&
#&&&& &/listener&
把这段放入web.xml最上面,不要把struts2的配置放在最上面。struts2已经由spring管理,不能放在Spring前面。
这个也试过了,不行...
问题补充:songfantasy 写道在src下加上log4j吧。
有log4j的配置文件
问题补充:songfantasy 写道实在不行,在Action中 ajax/userNameValidate而你配置文件中& 却是validateUserName
在Action中加上个断点,看是否进入了Action。单步调试。跟踪。
进不去action.我看了下,错误应该是包的依赖关系出了问题,或者包有冲突,我打算用直接在lib下面加jar包的方法,看看是哪些包有问题.
实在不行,在Action中 ajax/userNameValidate而你配置文件中& 却是validateUserName
在Action中加上个断点,看是否进入了Action。单步调试。跟踪。
在src下加上log4j吧。
还有我感觉你的配置文件放的很乱。不清晰。最好就是统一管理配置文件。
发现个问题,web.xml很有问题。
#&&&& &context-param&&
#&&&&&&&& &param-name&contextConfigLocation&/param-name&&
#&&&&&&&& &param-value&&
#&&&&&&&& classpath:/spring/applicationContext.xml&
#&&&&&&&& classpath:/spring/applicationContext-resources.xml&
#&&&&&&&& &/param-value&&
#&&&& &/context-param&&
#&&&& &listener&&
#&&&&&&&& &listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&
#&&&& &/listener&
把这段放入web.xml最上面,不要把struts2的配置放在最上面。struts2已经由spring管理,不能放在Spring前面。
已解决问题
未解决问题

我要回帖

更多关于 struts2 注入 的文章

 

随机推荐