Struts+Spring+Hibernate練習(xí)(完整)
Posted on 2005-11-06 11:04 oksonic 閱讀(203491) 評論(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
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2005-12-09 13:27 by newer for spring怎么獲取不到action?報錯:The requested resource (Servlet action is not available) is not available.
<action path="/Room_View"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"
validate="false"
input="/Room_First.jsp">
<forward name="success" path="/Room_First.jsp" />
</action>
hibernate_context.xml:
<bean name="/Room_View" class="SSH.Actions.RoomViewAction" singleton="false">
<property name="userDao">
<ref local="userDaoProxy" />
</property>
</bean>
可是運行的時候報錯:
<Error> <HTTP> <BEA-101017> <[ServletContext(id=6274035,name=SSH,context-path=/SSH)] Root cause of ServletException.
javax.servlet.jsp.JspException: Exception forwarding for name RoomView: javax.servlet.ServletException: Error creating bean with name '/Room_View' defined in ServletContext resource [/WEB-INF/Hibernate_Context.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'UserDao' of bean class [SSH.Actions.RoomViewAction]: Bean property 'UserDao' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
at org.apache.struts.taglib.logic.ForwardTag.doForward(ForwardTag.java:125)
at org.apache.struts.taglib.logic.ForwardTag.doEndTag(ForwardTag.java:105)
at jsp_servlet.__index._jspService(__index.java:151)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:463)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at SSH.Commons.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
請問,這是什么原因
2005-12-14 13:19:37 org.apache.struts.validator.ValidatorPlugIn init
嚴(yán)重: Skipping validation rules file from '/WEB-INF/validator_rules.xml'. No stream could be opened.
javax.servlet.ServletException: Skipping validation rules file from '/WEB-INF/validator_rules.xml'. No stream could be opened.
at org.apache.struts.validator.ValidatorPlugIn.initResources(ValidatorPlugIn.java:226)
at org.apache.struts.validator.ValidatorPlugIn.init(ValidatorPlugIn.java:162)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1003)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:836)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3823)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4128)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:755)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:846)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1076)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1011)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:420)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:1967)
at org.apache.catalina.startup.Catalina.start(Catalina.java:541)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2005-12-14 13:19:37 org.apache.catalina.core.ApplicationContext log
信息: Marking servlet action as unavailable
2005-12-14 13:19:37 org.apache.catalina.core.ApplicationContext log
嚴(yán)重: Servlet /login threw load() exception
javax.servlet.UnavailableException: Cannot load a validator resource from '/WEB-INF/validator_rules.xml,/WEB-INF/validation.xml'
樓主,我試了兩天了,都是這個錯誤,我以前用hibernate2就沒有這樣過,怎么回事啊?我發(fā)現(xiàn)配置文件中,只要就入下面這段就會出錯:
<property name="mappingResources">
<list>
<value>com/ssh/pro/dto/Manageinfo.hbm.xml</value>
</list>
</property>
我都郁悶死了!
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
oksonic請幫忙看看吧,謝謝了。
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
oksonic請幫忙看看吧,謝謝了。急啊!
資源文件“ApplicationResources_zh_CN.properties”
prompt.username=用戶名稱
prompt.password=登錄密碼
errors.required={0} 必需填寫!
都變成了亂碼
prompt.username=????
prompt.password=????
errors.required={0} ?????
請問oksonic怎樣解決啊?謝謝!
http://www.aygfsteel.com/oksonic/archive/2005/11/06/18368.html
這里提供的資源文件轉(zhuǎn)換插件
Poperties Editor
http://propedit.sourceforge.jp/eclipse/updates/
請使用在線安裝,選中所有文件進行安裝
如果安裝正確,那編輯完成后,保存,使用文本編輯器打開資源文件,出現(xiàn)以下格式表示正確。
/u1234/u3455
這時再頁面中聲明使用UTF-8的編碼即可。
這是hibernate3 和 hibernate2 的不同之處
可我也找不到Action,把人搞死了!
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-01-03 10:31 by tomcatwang謝謝oksonic你的例子配置成功了,我覺得再加一層service就好了
用service去調(diào)用 dao
還有就是兩個表一對多(比如球隊和隊員)hai當(dāng)增加隊員時候 用getHibernateTemlate.save()方法時候TEAMID這個字段怎么和父表關(guān)連,用純hibernate
時候需要先查詢出這個隊員的所屬球隊再增加,那用這個該怎么半。
還有我用的eclipse 當(dāng)用<html:link>傳遞中文參數(shù)時候在控制臺總是打印亂碼,請大家和oksonic幫幫忙。謝謝!
提一下大家找不到Action可能是applicationContext.xml的問題,還有就是.hbm.xml文件的class路徑是不是正確,我開始就是這個路徑搞錯了
希望能幫助大家!!!!
亂碼問題請正確安裝
http://www.aygfsteel.com/oksonic/archive/2005/11/06/18368.html
這里提供的資源文件轉(zhuǎn)換插件
Poperties Editor
http://propedit.sourceforge.jp/eclipse/updates/
請使用在線安裝,選中所有文件進行安裝
如果安裝正確,那編輯完成后,保存,使用文本編輯器打開資源文件,出現(xiàn)以下格式表示正確。
/u1234/u3455
這時再頁面中聲明使用UTF-8的編碼即可。
能不能幫我看看下面的問題?謝謝!
oksonic和各位大俠你們好,先謝謝oksonic的教程了,我想直接把你提供的代碼調(diào)試出來,可你代碼中把連接mysql數(shù)據(jù)庫的文件hibernate.cfg.xml刪除了啊!可我應(yīng)該怎樣在程序中設(shè)置后才能連接上我建的mysql數(shù)據(jù)庫啊?(也就是要改哪個具體的文件后才能連接上我建的mysql數(shù)據(jù)庫啊?)能不能說說具體的操作步驟啊?謝謝!盼回復(fù)!
http://propedit.sourceforge.jp/eclipse/updates/ 下載了
jp.gr.java_conf.ussiy.app.propedit_4.8.2.jar后,把它放在我的eclipse3.1.1的plugins文件夾下后,新建了資源文件ApplicationResources_zh_CN.properties,在ApplicationResources_zh_CN.properties中加入
prompt.username=用戶名稱
prompt.password=登錄密碼
errors.required={0} 必需填寫!
頁面login.jsp中也聲明了使用UTF-8的編碼的啊!
<%@ page language="java"contentType="text/html; charset=UTF-8" %>
可ApplicationResources_zh_CN.properties中還是出現(xiàn)了亂碼啊!(如下)測試的頁面login.jsp中也出現(xiàn)了亂碼????? 請問oksonic是什么回事?是不是我下載的文件jp.gr.java_conf.ussiy.app.propedit_4.8.2.jar不對?還是這文件放的位置不對啊?再一次向你表示感謝!盼回復(fù)!
prompt.username=????
prompt.password=????
errors.required={0} ?????
作者所說的是在線安裝Poperties Editor
依次點擊Help -> SoftWare Updates -> find and install
選中Search for new features to install ->next
點擊 New Remote site
給這個更新站點取個名字 如:luanma
url填寫http://propedit.sourceforge.jp/eclipse/updates/即可
點擊ok回到剛才的窗口
選中剛才新加的站點名稱,點擊finish
他會自動找出與你所用的eclipse版本相適應(yīng)的插件
全部選中
后面只要選擇install all即可
最后會提示你重起你的myeclipse
啟動后按oksonic所說的操作即可解決亂碼問題。
ApplicationContext ctx = new FileSystemXmlApplicationContext(paths);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
大家可以在main方法中測試dao,如果有問題會打到控制臺上
找不到Action就是因為dao有錯,而且無法在tomcat上捕獲
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-01-20 15:07 by WebApplicationContext我完全按你的教程做的,但在加入插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
后
tomcat 報告
Could not find ContextLoaderPlugIn's
WebApplicationContext as ServletContext attribute
請問是什么原因?
非常非常非...常感謝oksonic的例子,經(jīng)過一個多月來的學(xué)習(xí),現(xiàn)在初步可以開發(fā)一些小東東了。但我現(xiàn)在遇到了分頁問題,在網(wǎng)上搜索大半天,也看了不少例子,但就是沒有像oksonic這樣詳細的,
在java視線中有個例子非常好:
http://forum.javaeye.com/viewtopic.php?t=14657
對于我們這種新手來說,描述的不夠詳細,我們需要完整的測試程序。
我希望oksonic 能做一個分頁的例子,在下感激不盡!!!!
非常非常非...常感謝oksonic的例子,經(jīng)過一個多月來的學(xué)習(xí),現(xiàn)在初步可以開發(fā)一些小東東了。但我現(xiàn)在遇到了分頁問題,在網(wǎng)上搜索大半天,也看了不少例子,但就是沒有像oksonic這樣詳細的,
在java視線中有個例子非常好:
http://forum.javaeye.com/viewtopic.php?t=14657
但對于我們這種新手來說,描述的不夠詳細,我們需要完整的測試程序。
我希望oksonic 能做一個分頁的例子,我們將感激不盡!!!!
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-01-25 15:14 by WebApplicationContext你好!oksonic,我在按照你的例子做的時候,我現(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)首先映謝過呀,
請教各位大哥是什么原因造成的!
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-02-24 17:04 by 代碼蟲子(QQ:229056138)可以先將內(nèi)容保存到aa.txt
然后在文件所在目錄執(zhí)行JDK命令:
native2ascii aa.txt ApplicationResources_zh_CN.properties
就可以了
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2006-02-27 21:54 by hxq3000@126.comHibernate: select user0_.ID as ID, user0_.USERNAME as USERNAME0_, user0_.PASSWORD as PASSWORD0_ from test__user user0_ where user0_.USERNAME=?
test__user table is not exists.怎么會把user表解釋成這個樣子呢?
我的環(huán)境是:
Eclipse3.1.2
MyEclipse4.1
JDK1.5
Tomcat5.5
MySql4.1
郁悶一天了,大俠們能解釋一下不?
將User.hbm.xml中的
<class name="com.test.hibernate.User" table="user" catalog="test">
修改成
<class name="com.test.hibernate.User" table="user">
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||