Struts+Spring+Hibernate練習(xí)(完整)
Posted on 2005-11-06 11:04 oksonic 閱讀(203492) 評論(246) 編輯 收藏 所屬分類: java<formset>
<form name="loginForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
</formset>
</form-validation>
prompt.password=User Password
增加以下內(nèi)容
prompt.password=登錄密碼
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}
}
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
`ID` int(11) NOT NULL auto_increment,
`USERNAME` varchar(50) NOT NULL default '',
`PASSWORD` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
UserDAO.java
public interface UserDAO {
public abstract boolean isValidUser(String username, String password);
}
UserDAOImp.java
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.test.Hibernate.SessionFactory;
public class UserDAOImp extends HibernateDaoSupport implements UserDAO {
private SessionFactory sessionFactory;
private static String hql = "from User u where u.username=? ";
public boolean isValidUser(String username, String password) {
List userList = this.getHibernateTemplate().find(hql, username);
if (userList.size() > 0) {
return true;
}
return false;
}
}
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
public class LoginAction extends Action {
private UserDAO userDAO;
return userDAO;
}
this.userDAO = userDAO;
}
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
// TODO Auto-generated method stub
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
loginForm.set("password", null);
if (userDAO.isValidUser(username,password)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
綠色字體為修改部份
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/test/Hibernate/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
</beans>
Feedback
速。。。謝謝啊 呵呵~~
(本人struts較為熟悉,spring和hibernate基本不懂。)
難得有這么好的貼?。?!期待樓主有更多精品出現(xiàn)??!
你好!oksonic,我在按照你的例子做的時(shí)候,我現(xiàn)在用sqlserver數(shù)據(jù)庫
為什么總是出現(xiàn):
org.springframework.orm.hibernate3.HibernateQueryException:
testuser is not mapped. [from testuser u where u.username=?];
nested exception is org.hibernate.hql.ast.QuerySyntaxError: testuser is not mapped. [from testuser u where u.username=?]
可是我已經(jīng)首先映謝過呀,
請教各位大哥是什么原因造成的!
"
我也碰到類似問題,網(wǎng)上實(shí)在找不到答案,請教!
message Servlet action is not available的解決方法:
將validator-rule.xml拷貝到E:\apache-tomcat-5.5.15\webapps\login\WEB-INF下
將mysql-connector-java-3.1.12-bin.jar拷貝到E:\apache-tomcat-5.5.15\webapps\login\WEB-INF\lib下
說明:由于在eclipse使用的是tomcat的插件,所以一定要注意當(dāng)運(yùn)行tomcat的時(shí)候這些包在tomcat的目錄就找不到了,所以需要手動(dòng)將這些文件拷到tomcat下你的工程的目錄里.
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
的問題解決:
從www.hibernate.org上下載hibernate-3.1.2.zip,解壓后將etc文件夾中的log4j.properties放到
C:\eclipse\login\WebRoot\WEB-INF\classes中
有什么問題可以聯(lián)系我大家互相學(xué)習(xí):)
QQ:364576663
MSN:yangxudong_hotmail.com
blog:http://spaces.msn.com/bboyyang/
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-03-15 16:12 by lovethief101我在使用MyEclipse的數(shù)據(jù)Database Explorer工具創(chuàng)建User.hmb.xml、AbstractUser.java、User.java映射文件 的時(shí)候 總是報(bào)
An internal error occurred during "Genterating Artirfacts"這個(gè)錯(cuò)
哪位大俠能告訴我怎么解決啊 是不是我的myeclipse版本不對啊 ??
我用的是myeclipse enterprise workbench4.1 GA 數(shù)據(jù)庫是sql server
小弟很著急啊
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:454)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:281)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:217)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
$Proxy1.isValidUser(Unknown Source)
com.test.struts.action.LoginAction.execute(LoginAction.java:57)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.
但是oksonic最后給出的applicationContext.xml中卻包含了4個(gè)action,請將
<bean name="/add" class="com.test.struts.action.AddAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
<bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
<bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
在applicationContext.xml中注釋掉
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
就會(huì)出現(xiàn)驗(yàn)證錯(cuò)誤?
HTTP Status 404 - Servlet action is not available
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
而當(dāng)能驗(yàn)證了又出現(xiàn)了找不到類的錯(cuò)誤:
2006-4-10 7:00:56 org.apache.struts.action.RequestProcessor processActionCreate
嚴(yán)重: No action instance for path /login could be created
java.lang.ClassNotFoundException: org.springframework.web.struts.DelegatingActionProxy
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:280)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:218)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
請問這里在那里的配置出錯(cuò)了?
我改了login.jsp中的<%@ page language="java" contentType="text/html; charset=UTF-8" %>
,但是還是不能顯示中文,顯示的是亂碼。
中文的資源文件里寫上中文,保存之后再打開,就顯示亂碼了。
我實(shí)在不知道怎么解決。謝謝?。。。。。。。。?!
2006-4-20 15:34:31 org.apache.catalina.core.StandardContext start
嚴(yán)重: Context startup failed due to previous errors
請問一下:這是在Eclipse中啟動(dòng)Tomcat服務(wù)器時(shí)出現(xiàn)的問題,并且最后服務(wù)器也啟動(dòng)了。之后會(huì)出現(xiàn)如下問題
The requested resource (/office/) is not available.
我想知道這是什么錯(cuò)誤!打擾了,希望您能幫我解決!謝謝
買了spring in action后,大體看了一下,一直想找個(gè)簡單的例子練一下
這個(gè)例子很不錯(cuò),對于入門很有幫助
感覺總體思想跟用ibatis差不多
都是按接口編程
在dao上面,還可以在封裝一層service,用service調(diào)用dao中的方法
這樣以后換框架也比較方便
javax.servlet.ServletException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.id as id, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [S1000]; error code [156]; 在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。; nested exception is java.sql.SQLException: 在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。
怎么找也找不出來原因,我用樓主的方法做了好幾個(gè)工程,都是這個(gè)樣子。
請各位大俠賜教。
謝謝了。急啊!
javax.servlet.ServletException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.id as id, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [S1000]; error code [156]; 在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。; nested exception is java.sql.SQLException: 在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。
怎么找也找不出來,我的源碼都是拷的樓主的,我用的SQLSERVER數(shù)據(jù)庫。
有沒有人遇到過這種情況???急?。。?
檢查struts-config.XML中
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
org.apache.struts.validator.ValidatorPlugIn 這個(gè)類名是否正確
添加后,檢查
struts-config.XML的第二個(gè)plugin配置,和loginForm的驗(yàn)證class配置
applicationContext.xml中配置
驗(yàn)證不通過,不能顯示html:error標(biāo)簽,嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚
按照jurassic所說的
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
的問題解決:
從www.hibernate.org上下載hibernate-3.1.2.zip,解壓后將etc文件夾中的log4j.properties放到
C:\eclipse\login\WebRoot\WEB-INF\classes中
這樣就可以看到進(jìn)一步的錯(cuò)誤提示。
我的是Error creating bean with name 'sessionFactory' defined in ServletContext resource
解決:
http://forums.opensymphony.com/thread.jspa?threadID=29259
Is there a chance that you have several compass/lucene jar files from different versions? Maybe in common/lib or server/lib?
我把自己所有的WEB-INF\lib下所有清空,然后把sonic的原版lib拷貝了一遍就解決了。我覺得可能是因?yàn)樵谔砑痈鞣N框架的時(shí)候產(chǎn)生的冗余和沖突。
測試,結(jié)果
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
唯一不同的是
1。他那個(gè)rule.xml,他是手動(dòng)復(fù)制過去的,而我本來就有,所以不需要復(fù)制
2。他用的是struts1.2,我用的struts1.1
其他應(yīng)該都一樣了
之前用struts1.1就會(huì)出現(xiàn)剛才說的情況了
按照上面那個(gè)兄弟的說法,把lib清空,替換成作者的lib就可以了
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-05-11 15:49 by robert.wei使用這個(gè)也報(bào)用戶密碼錯(cuò), 怎么回事..?
感謝你的貢獻(xiàn), 你的無私.......
要是每個(gè)人都向你這么想就好了
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-05-13 16:46 by springbeginner1.按照sonic的動(dòng)畫教程,最后的幾步中,一個(gè)原因是mysql驅(qū)動(dòng)程序放在項(xiàng)目的/WEB-INF/lib 下,可以將之拷貝到此lib文件下,在進(jìn)入Eclipse按刷新.
2.你的applicationContext.xml文件中,所配置的各項(xiàng)信息,特別是文件名路徑,和所對應(yīng)的是否是一樣,注意大小寫以及符號 '/' ,和' . '。
3.配置structs-config.xml 插件時(shí),注意路徑問題,一定要對應(yīng)正確的路徑名,在此也反映Sonic 的認(rèn)真態(tài)度,以及深表感謝 ~..~
4.按照sonic的動(dòng)畫教程一步一步下來,應(yīng)該沒問題,希望很多和我一樣的新手一起進(jìn)步,在sonic 帶領(lǐng)下,,謝謝。 聯(lián)系qq: 49002149 共勉~~
是版本的問題嗎?如果是版本的問題,有沒有辦法解決????
我的那個(gè)validator-rules.xml是直接拷的Struts1.1工程中的那個(gè)。難道是這個(gè)validator-rules.xml的問題嗎??
大家有沒有遇到過Validator不能驗(yàn)證的問題?。空堉附蹋。?/div>
如果你的struts用的1.2版本的,一定要用oksonic提供的那個(gè)validator-rules.xml,不然就不會(huì)驗(yàn)證.
如果你的struts用的是1.1版本的,就用自動(dòng)生成的validator-rules.xml就可以了.
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.IllegalArgumentException: Resources cannot be null.
org.apache.commons.validator.Validator.<init>(Validator.java:188)
org.apache.struts.validator.Resources.initValidator(Resources.java:475)
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:104)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
我花了幾天的時(shí)間做,可是到最后他給我報(bào)此錯(cuò)誤
還請樓主給我解決一下,不勝感激呀,真的好頭痛?。。。。。。。?!
http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200644231255 Java反編譯的研究
http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=20064614542 Java實(shí)現(xiàn)ftp功能(源程序)
javax.servlet.ServletException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [HY000]; error code [156]; [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [HY000]; error code [156]; [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯(cuò)誤。
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:96)
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:257)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:371)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:844)
com.test.UserDAOImp.isValidUser(UserDAOImp.java:16)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
$Proxy1.isValidUser(Unknown Source)
com.test.struts.action.LoginAction.execute(LoginAction.java:52)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
原文少了一段,但作者的錄象中有這段. 補(bǔ)上:
把原來的
<form-beans >
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm" />
</form-beans>
改為
<form-beans >
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property type="password" name="java.lang.String"/>
<form-property type="username" name="java.lang.String"/>
</form-bean>
</form-beans>
就可以了。按樓主的錄象試了2遍,沒有問題
大家一起交流一下
很急!!!!
謝謝了~!~
謝謝!
Error creating bean with name 'UserinfoDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions are: [org.springframework.beans.TypeMismatchException: Failed to convert property value of type [net.sf.hibernate.impl.SessionFactoryImpl] to required type [org.hibernate.SessionFactory] for property 'sessionFactory']
這個(gè)是什么錯(cuò)呀?
Spring 開發(fā)指南
V0.8 預(yù)覽版
作者:夏昕
里面Struts+Spring+Hibernate說得非常詳細(xì)!!
太分散啦
hibernate是基于對象查詢的。。所以在查詢的時(shí)候一定要寫你類的名字而不是你在數(shù)據(jù)庫中的表的名字。 。。
package com.test;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.test.hibernate.User;
public class UserDAOImp extends HibernateDaoSupport implements UserDAO {
private static String hql = "from User u where u.username=? and password=?";
public boolean isValidUser(String username, String password) {
String[] userlist=new String[2];
userlist[0]=username;
userlist[1]=password;
List userList = this.getHibernateTemplate().find(hql,userlist);
if (userList.size() > 0) {
return true;
}
return false;
}
}
最后運(yùn)行導(dǎo)致以下錯(cuò)誤:
javax.servlet.ServletException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.USERNAME as USERNAME0_, user0_.PASSWORD as PASSWORD0_ from user user0_ where USERNAME=?]; SQL state [HY000]; error code [1266]; Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='; nested exception is java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.USERNAME as USERNAME0_, user0_.PASSWORD as PASSWORD0_ from user user0_ where USERNAME=?]; SQL state [HY000]; error code [1266]; Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='; nested exception is java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:96)
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:257)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:363)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:800)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:796)
com.test.UserDAOImp.isValidUser(UserDAOImp.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:292)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
$Proxy1.isValidUser(Unknown Source)
com.test.struts.action.LoginAction.execute(LoginAction.java:58)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
請樓主或各位同仁幫忙解決哦!此問題讓我郁悶了一整天了哦!
我屏蔽這個(gè)isValidUser函數(shù)之后,就沒有這個(gè)問題了哦!而且我在此基礎(chǔ)上配置了續(xù)集,均成功?。?!新增、刪除、瀏覽都正確哦!
先謝了哦!
照著前面講的也改了 還是不好使
郵箱gaofeng691027@163.com
但在添加,修改,刪除時(shí),有以下錯(cuò)誤,我想應(yīng)該是Spring配置問題,請oksonic指點(diǎn)一下,謝謝
Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-11-24 03:08 by 你真的會(huì)嗎?不要在騙人了,現(xiàn)在工作不好找他們好無知,你知道什么是hibernate嗎?
這個(gè)程序是用的有了hibernate和spring了嗎?
String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}
這代碼為什么不寫成
if(loginForm.getusername.equals("test")&&loginForm.getpassword.equals("test")){
return mapping.findForward("indexGo");
}else{
//回到開始頁面
return mapping.getInputForward();
}
你又沒連數(shù)據(jù)庫。
hibernate不是在DAO中寫了增,刪,改,查的嗎?
為什么你要寫,到最后自己寫了什么都不知道。
最遭的是沒有spring還說自己用了的,哎!
spring代替session bean hibernate代替entity bean,
spring才是控制中心,不是struts。要不,你就不要寫spring
你連EJB的思想都沒有。
if(loginForm.getusername.equals("test")&&loginForm.getpassword.equals("test")){
return mapping.findForward("indexGo");
/////////////////////////////////////////////////
這個(gè)form是動(dòng)態(tài)驗(yàn)證的 你能直接getUsername? 我想作者也是初學(xué),在這里是分享他的經(jīng)驗(yàn) 樓上沒必要用這種語氣吧~
另外 我用main測試DAO類 有個(gè)空指針的異常...
TbUserDAO userdao = new TbUserDAO();
TbUser user = new TbUser();
user.setUsername("test");
user.setUserPwd("test");
System.out.println(userdao.findByExample(user).size());
org.springframework.orm.hibernate3.support.HibernateDaoSupport;
我怎么找不到這個(gè)類啊???
我看了一下org.springframeword.orm包中確實(shí)沒有這個(gè)類啊,怎么回事啊?
@你真的會(huì)嗎?不要在騙人了,現(xiàn)在工作不好找
我測試已經(jīng)成功!
只是有些地方說的不夠詳盡,還需自己去查找方法,這樣才叫學(xué)習(xí)嘛!
謝謝 oksonic
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
</beans>
.....特別是<property name="userDAO">什么意思啊?
來使用validator進(jìn)行驗(yàn)證?
出現(xiàn)了這個(gè)錯(cuò)誤為什么啊?
Cannot find ActionMappings or ActionFormBeans collection
如何解決???
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-01-01 22:13 by 風(fēng)[匿名]謝謝你了
加我:562852591
郵箱:rigger21@126.com
以下錯(cuò)誤:
javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.login_jsp._jspService(login_jsp.java:89)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
有人碰到這樣的情況嗎?
CREATE TABLE user_test (
ID int NOT NULL identity,
USERNAME varchar(50) NOT NULL default '' ,
PASSWORD varchar(50) NOT NULL default '',
PRIMARY KEY (ID)
)
insert into user_test (USERNAME,PASSWORD) values ('test','test')
庫為叫io_test
庫的連接我應(yīng)該哪里呢?
我把十二的lib包也放到了工程下.
發(fā)現(xiàn)
List userList =this.getHibernateTemplate().find(hql,userlist);
和這里
User user=(User)this.getHibernateTemplate().load(User.class,lid);
會(huì)出現(xiàn)錯(cuò)誤.
發(fā)現(xiàn)那兩行前面有這兩個(gè)提示the type net.sf.hibternate.type.Type. cannot be resolved.It is indirectly referenced from required. class files
請問怎么改掉呢.
找不到action
注釋掉 sessionFactory配置中的
<property name="mappingResources">
<list>
<value>com/test/User.hbm.xml</value>
</list>
</property>
就可以找到,但是出錯(cuò)因?yàn)闆]有連上數(shù)據(jù).
我用
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.
support.FileSystemXmlApplicationContext;
public class SpringHibernateDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context =
new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
UserDAO userDAO =
(UserDAO) context.getBean("userDAO");
System.out.println("name: " + userDAO.isValidUser("test", "test"));
}
}
來測試卻可以成功讀到數(shù)據(jù).(說明spring+hibernate沒有問題)
沒有引入hibernate前也成功(說明struts+spring沒有問題)
但是ssh一起用就不行這是為什么?
關(guān)于數(shù)據(jù)庫的問題,是因?yàn)檫@個(gè)例子是用MYSQL數(shù)據(jù)庫的,MYSQL可能user不是關(guān)鍵字,而SQLSERVER中user是關(guān)鍵字,用它做表名,肯定出錯(cuò)~
懷疑是validator-rules.xml的問題,我用的是1.1的validator-rules.xml。
可以給我一份你的validator-rules.xml嗎?
我的郵箱是yifeng885@163.com,謝謝了。
希望能做一個(gè)spring+hibernate+struts的分頁視頻教程?。。?/div>
# 支持oksonic-反對牙尖咀歷無能者 回復(fù) 更多評論
2007-03-16 11:21 by 龍?zhí)┬?/a>你的付出,大家都看到了。。。。
雪中送碳
example is so simple but very useful for us
I am empaise again sonic Thank you for share
your knowhow ???? ... ??
雖然簡單,但還是不錯(cuò)的!
不過我想提一點(diǎn)的就是,思路方面還不是很好,以這種方式思路來構(gòu)建的框架,不能適應(yīng)大型系統(tǒng)的需求.還有就是要注意這些開源框架之間優(yōu)勢的配合也很重要.
我的serviceContext.xml文件如果是這樣
<bean id="LoginService"
class="com.syscanhc.service.impl.LoginService">
<property name="userDAO">
<ref bean="userDaoProxy" />
</property>
</bean>
頁面提交時(shí)報(bào)錯(cuò)如下:
The requested resource (Servlet action is not available) is not available.
如果我改成
<bean id="LoginService"
class="com.syscanhc.service.impl.LoginService">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
卻提交成功,請樓主幫忙分析下原因
QQ466073353
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||
posts - 103, comments - 1104, trackbacks - 0, articles - 0
Copyright © oksonic