Posted on 2005-11-06 11:04
oksonic 閱讀(203484)
評論(246) 編輯 收藏 所屬分類:
java
我 的 QQ: 71279650
我的Email: oksonic@sina.com
工具:
Eclipse3.1、MyEclipse4.03、Tomcat5.5.9、Properties Editor插件、MySql4.1.13
新建工程:名稱為 login
創建Struts框架
創建 index.jsp,增加一鏈接指向 login.jsp
按下Ctrl + N,創建 login.jsp、LoginAction,使用MyEclipse的向導就可以了,記得選對正確的版本
在ActionForm配置頁中選擇類型為動態Form,并繼承于DynaValidatorForm,新增兩個屬性:username、password,在創建jsp文件打上鉤,將路徑改為/login.jsp,然后下一步,改LoginAction的Input source改為/login.jsp,點擊完成
按下Ctrl + N 創建一個forwards,記得選對正確的版本
name 輸入 indexGo
路徑選擇 /index.jsp
配置validator
先添加Struts插件,使用向導
Plugin class : org.apache.struts.validator.ValidatorPlugIn
Property : pathnames
Value : /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml
這里需要兩個xml文件
現在創建“validation.xml” 文件
在這里說明一點,我使用MyEclipse創建的Struts框架中缺少了validator-rules.xml文件,需要動拷貝到WEB-INF目錄中
文件內容如下:
<form-validation>
<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>
編輯資源文件“ApplicationResources.properties”
增加以下內容
prompt.username=User Name
prompt.password=User Password
errors.required={0} is required.
再創建中文件資源文件“ApplicationResources_zh_CN.properties”
增加以下內容
prompt.username=用戶名稱
prompt.password=登錄密碼
errors.required={0} 必需填寫!
修改struts-config.xml文件
在以下位置增加綠色字體部份
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
這里說明提交的數據必需經過驗證,而驗證則是通過validator框架進行的。
修改LoginAction.java文件的execute方法,內容如下
public ActionForward execute(
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();
}
}
現在再修改一下login.jsp
增加以下綠色字體部份
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
其中charset=UTF-8 是使用UTF-8的字符編碼,這也是為了支持國際化而使用的。
好了,現在可以啟動Tomcat進行測試了
如果不輸入任何數據而直接提交表單的話就可以看到效果了。
好了,如果沒有什么問題的話就繼續往下看吧,如果有問題的話就得往上看了^_^
現在創建Spring框架了,在這里我將Spring所有的包全部加載進去,因為我還不知道具體用到哪些類,全部加進去方便點
單選框選第二個,這樣的話所有的類庫和標簽等都將拷貝到項目中去,這樣方便以后的布署
下一步后是創建配置文件,將文件放到“WebRoot/WEB-INF”目錄下,文件名稱為“applicationContext.xml”
配置struts-config.xml文件,添加(spring)的插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
修改LoginAction配置
原:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
改為:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
</action-mappings>
綠色字體部份為修改內容
這里將使用spring的代理器來對Action進行控制
當提交到/login.do是將控制權交給了spring,然后由spring來決定是否轉回到struts的Action
現在來配置spring
<beans>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
</beans>
綠色字體是關于轉交控制權的配置內容
屬性singleton="false",指明了Action 的實例獲取方式為每次重新創建。解決了Struts中令人詬病的線程安全問題(Struts中,由一個Action實例處理所有的請求,這就導致了類公用資源在并發請求中的線程同步問題。)(摘自spring開發指南)
這時如果你要進行測試也是可以的,不過為了省點時間就不進行測試了。
建立數據庫在 這里我使用的是mysql4.1.13
CREATE TABLE `user` (
`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;
添加記錄 insert into user (USERNAME,PASSWORD) values ('test','test')
創建Hibernate框架
在配置界面中配置數據庫的連接部份,重要的是點擊鏈接將jdbc拷貝到lib目錄中
使用MyEclipse的數據Database Explorer工具創建User.hmb.xml、AbstractUser.java、User.java映射文件
創建完成后可以將自動生成的hibernate.cfg.xml刪除
創建UserDAO.java、UserDAOImp.java
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;
}
}
修改LoginAction.java文件,使用userDao的方法來進行用戶驗證
package com.test.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
import com.test.UserDAO;
public class LoginAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
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();
}
}
}
綠色字體為修改部份
現在剩下最后的spring配置了
<beans>
<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>
<!-- 配置sessionFactory, 注意這里引入的包的不同 -->
<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>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDAO" class="com.test.UserDAOImp">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<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>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
</beans>
現在可以進行測試了!
在編寫代碼有配置內容時一定要注意 hibernate 和 hibernate3 ,這兩個包的名字就只差一個字,千萬不要有錯,否則找錯誤可是很難的。
Feedback
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-04-24 22:21 by
呵呵 上面的代碼只是硬編碼 連接數據庫要注意特別多的事項 比如先倒入支持和后倒入支持就不同 真麻煩 有同行的話加我 啊 如果不嫌棄我可以和我討論討論 相信你會有收獲的
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-05-05 02:43 by
gaga
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-05-08 14:00 by
有關使用 SQL server 出現uncategorized SQLException for SQL 錯誤的問題:
查了很久,原來是表名不能用user, user 為 SQL SERVER 的關鍵字
碰到同樣問題的 把表名改掉就OK了,
感謝樓主的動畫
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-05-11 00:45 by
為什么hibernate的包換成3.2就錯 非要用3.0
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-05-11 00:45 by
請樓主幫忙解釋一下
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-05-12 10:08 by
只要在applicationContext.xml中加上
<property name="mappingResources">
<list>
<value>com/yourcompany/hibernate/Users.hbm.xml</value>
</list>
</property>
這段代碼 就 會找不到action
好不郁悶
MyEclipse 5.5.0 Milestone 1
Spring 2.0
Struts 1.2
hibernate 3.0
mysql 5.0
驅動 mysql-connector-java-3.2.0-alpha-bin
麻煩摟主 看看
# 初學spring hibernate[未登錄] 回復 更多評論
2007-05-12 19:41 by
ApplicationContext context =
new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
EchoMessageDAO echoMessage =
(EchoMessageDAO) context.getBean("EchoMessageDAO");
EchoMessage me = new EchoMessage();
me.setMsg("heeelo;;;;;");
echoMessage.save(me);
以上語句,拋出異常:
2007-05-12 19:29:03,703 ERROR (EchoMessageDAO.java:32) - save failed
org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: com.ton.rom.EchoMessage; nested exception is org.hibernate.MappingException: Unknown entity: com.ton.rom.EchoMessage
org.hibernate.MappingException: Unknown entity: com.ton.rom.EchoMessage
那一句是 getHibernateTemplate().save(transientInstance);
請問是什么問題?
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-05-14 18:05 by
找不到action的問題解決方法:
出現這個問題最有可能就是DAO類有錯誤
寫個DAO的測試類
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-05-18 13:26 by
為什么hibernate的包換成3。2就錯 非要用3。0
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-05-31 17:39 by
哥們,也給俺發一份啊 sadi9090@163.com 謝了啊 :)
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-02 20:41 by
dyx8143@tom.com 謝謝大哥了
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-07 19:33 by
Stards_Cai@163.com 謝謝大哥,我也要!!!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-09 21:31 by
shengli_chen@hotmail.com老兄給我一份源文件,做個參考。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-14 16:44 by
ljm80586@sina.com
謝謝
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-17 17:03 by
怎么不能下
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-21 02:17 by
好像確實有點問題啊...
我今天才在別個那里看到做這個方面的東西..在我認為struts只是獲取頁面提交的東西.,.然后由application.xml文件中找到相對應的action,然后再根據action的依賴項找到相對應的DAO(實現類),再由這個實現類找到相對應的DAOImp(接口類),最后在struts里面就添加一個DAO的屬性.(這個是不是才叫依賴式的注入呢?我也不清楚..),再在action里面只要調用此屬性的實現方法就可以啦..
(管你是動態的還是靜態的actionForm)
----只是我本人今天的一點看法...不好意思才看別人用這個東西.我還沒有用過.
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-27 14:36 by
寫得很好,不夠詳細,很多代碼不全,能不能發一份完全的代碼?
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-06-27 16:08 by
可以發給我嗎?ying_jun25@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-07-03 17:25 by
寫得亂七八糟,跟著你去做,能一次成功人有誰啊
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-07-04 19:59 by
在struts-config.xml中添加載入 spring 的配置文件不如在web.xml中添加好
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-07-06 11:15 by
HTTP Status 404 - Servlet action is not available
Spring+struts+hibernate
出錯原因很簡單
struts-config.xml
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
myeclipse 把applicationContext.xml放在classes文件夾下
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-07-18 16:25 by
樓上說的myeclipse 把applicationContext.xml放在classes文件夾下我怎么沒有發現啊?
不知道大家發現沒有?
現在我也是HTTP Status 404 - Servlet action is not available 很頭疼啊.
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-07-21 17:05 by
回一樓的錯誤:"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]; 在關鍵字 'user' 附近有語法錯誤。; nested exception is java.sql.SQLException: 在關鍵字 'user' 附近有語法錯誤."這個錯誤是由于數據庫中不能使用"user"表,"user"是SQL-99的關鍵字,把 DB中換個表名就OK了!
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-07 10:29 by
能發份原代碼嗎?xtf999999@sina.com.cn 謝謝
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-10 09:42 by
能不能發一份源碼?非常感謝啊! jhvhmhab@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-14 10:44 by
找不到action
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-17 13:55 by
我在mysql,sqlserver上都運行成功且我增加了update功能,可以分頁功能總做不出來,都不知道如何下手,有沒有高手提示一下啊!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-19 02:26 by
user 在mssql 中是系統關鍵字
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-22 17:55 by
哪個兄弟有上面的例題完整的代碼請給我發一份謝謝啊,本人急需要這樣的例題 謝謝 郵箱 huzhongwen-hz@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-22 17:55 by
哪個兄弟有上面的例題完整的代碼請給我發一份謝謝啊,本人急需要這樣的例題 謝謝 郵箱 huzhongwen-hz@163.com
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-24 01:29 by
博客主人請謹慎,你根本就沒有用到Spring啊不要亂說我看了半天也沒找到你用Spring的地方,你好好看看吧
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-24 02:19 by
出現這種問題是因為我們用了sqlserver2000,而“user”這個名字是server2000的系統保留字,我們不能用它,可以改成“users”或其它,樓主的例子是在mysql下做的。
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]在關鍵字 'user' 附近有語法錯誤。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關鍵字 'user' 附近有語法錯誤。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-24 03:20 by
@YY
感謝YY寫的問題,讓我解決了
Servlet action is not available
的問題,太感謝你了。你的方法是很對的,希望后來者能得到由衷的解惑。
他的解答是:
找不到action的問題解決方法:
出現這個問題最有可能就是DAO類有錯誤
寫個DAO的測試類
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-24 03:34 by
解決 Servlet action is not available
這個問題,可以這樣:
1.先看看login.jsp的提交是不是action="/login"
2.再從struts-config.xml著手,看是不是各種導入的文件的路徑對不對;
3.最后同樣看看applicationContext.xml是不是也有路徑的問題。
像我就是導入UserDAOImp.java時寫錯路徑了,結果邊驗證表單是不是空的都出錯,是非常快地報錯,很讓我郁悶!
感謝YY的解答,我用他給的DAO的測試類測試了程序 ,系統馬上報錯說是applicationContext.xml里面的UserDAOImp找不到,然后就感覺好像抓住了救命草,改了過來就一一下子成功了!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-24 09:52 by
哪為好心的大哥能幫小弟發一份完整的代碼呀,我的郵箱是ycplwb1314@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-25 01:00 by
@鐘文創
解決 Servlet action is not available
這個問題
4.如果還不行的話,那就是applicationContext.xml的 開頭 錯了,應該為:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
.....
.....
</beans>
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-28 09:42 by
錄像請到www.oksonic.cn去下載,注冊一個用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個用戶即可下載所有錄像!
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-29 16:54 by
就是他媽的這個問題搞死人了:Servlet action is not available.上面的測試我的也通過了。為什么我在username和password中輸不輸入都沒有經過驗證就直接Servlet action is not available 這個了呢。。太不可思義了吧。為什么去掉<property name="mappingResources">
<list>
<value>com/wolf/User.hbm.xml</value>
</list>
</property> 就會執行到驗證呢。。 不論我參考什么資料做ssh練習。都是這個同樣的問題沒法解決。。 誰能給我一個理由啊。
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-30 09:57 by
如果是去掉這個配置就可以成功執行的話就說明映射文件和數據的關聯上出了問題,檢查一下數據的結構,如:有沒有把ID設主鍵。
仔細檢查一下,問題實際上已經找到了。
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-30 10:16 by
但是我用樓上的一位仁兄的代碼: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"));
}
測試都是挺OK的啊。。說明不是跟數據庫配置出問題了啊。。我的myeclipse版本是5.5的。。會不會是hibernate3.0包會有問題啊。。
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-30 10:19 by
啟動tomcat后,日志里有這些個東東:
arking servlet action as unavailable
2007-08-30 09:33:27 StandardContext[/SSH829]Servlet /SSH829 threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
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:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
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:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-08-30 10:21 by
找不到action 錯誤-----終極解決辦法
此錯誤多是由于spring上下文載入失敗引起
在struts中引入了spring之后,工程的上下文便交給spring插件負責載入
在struts-config.xml中:
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
此時找不到action多是由配置文件的位置不對引起的,即服務器找不到applicationContext.xml,注意查看myEclipse是否將該配置文件復制到了正確的位置。
或者有其他錯誤---------當spring或者Hibernate配置文件中的配置有問題時就會出現這種情況
出現這個問題最有可能就是DAO類配置有錯誤,sping的配置文件出錯在web方式下是看不到的,可以寫個DAO的測試類在java環境下查錯
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
歡迎交流:QQ-57875031
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-30 11:00 by
樓上:我上面不是已經說了測試過了嗎。。沒問題啊。。能輸出預想的結果啊。
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-08-31 09:07 by
昨天白扯一天了。。總而言之,言而總之,遇到那些問題的朋友很有可能是使用myeclipse的版本而引起的,歸根結底是包的問題。。代碼沒問題。。這能怨誰去啊。。??
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-06 10:55 by
仔細看了一下,不錯。當前用的比較多的一種整合。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-06 16:45 by
不錯,收藏!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-07 10:35 by
樓主的項目 用了spring的依賴注入么``
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
這個東西 樓主應該沒配置
不然你那個loginaction 里怎么能用userDao屬性
樓上有個仁兄 說找不到applicationContext.xml
樓主應該沒配置
即使配置了 那個仁兄 你也得注意applicationContext.xml的位置對不對
總之 我用eclipse 不爽 呵呵
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-07 13:25 by
這年頭出現個樓主著這樣的人物不容易啊!!!!!!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-11 17:00 by
ssfsdf
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-12 15:08 by
看了一下,還行。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-09-14 22:49 by
找不到action可能是因為spring配置文件在src目錄下所致,這時為
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
src下的文件編譯后跑到/WEB-INF/classes下面去了,項目運行時是不調用src下的文件的.
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-09-22 15:45 by
String username=loginForm.getString("username");
String password=loginForm.getString("password");
這兩句是不對的 。
我在eclipse中報錯
改成
String username=(String)loginForm.get("username");
String password=(String)loginForm.get("password");
即可
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-09-22 16:58 by
建議樓主, 把程序放出來能下載,實際上你帖出來的, 十有八九是調試不通的!!!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-10-15 15:35 by
希望某些人不要在那挑三揀四的,你要是覺得樓住做的不對,或者不好,可以把你自己的程序貼出來啊,也讓大家看看!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-10-16 15:17 by
嚴重: action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-11-11 00:27 by
樓主已經很不錯了,為人做共享。請問那些挑三揀四的笨蛋你有那種精神嗎?沒有別在這瞎叨叨!!!
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-11-12 14:13 by
用了Spring 后,就不要用Hibernate的映射文件了嗎???
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-11-26 10:59 by
這是<<精通J2EE 整合STRUTS SPRING HIBERNATE>>中的一個完整例子.書的作者本意是對的,有些JB人弄到網上把版權都弄成自己的了,更暈的是自己不了解什么是整合,還硬說是自己整合,我靠!豬!哪天我把我的WEBWORK SPRING HIBERNATE發給大家,也可以到我163.COM的BLOG上去看.
http://ming204.blog.163.com/blog/static/417138132007102401647810/edit/
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-11-29 15:10 by
摟主愿意寫就不錯了.至于細節是要靠自己去摸索的
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-12-04 15:33 by
我看完了,也測試過了,沒問題,我用的是postgres數據庫。就是在做的時候小改了一些東西,人和人的思想不一樣嗎!干嗎把你的思想用來批評發帖子的人啦,人家只提供一種思想而已啊。但我覺得要讓這個例子更加完美,還是在userdao中多添加幾種對數據庫的操作方法,讓別人也了解hibernate啊。還是要謝謝樓主。
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-12-04 16:53 by
謝謝呀
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2007-12-19 10:19 by
看了大家的討論,覺得意見很多,我學SPRING也有段時日了,樓主所寫確實有欠妥當的地方。順便請教高手們一個問題,我用Struts2+spring2+hibernate3的時候出了點問題,老是說Servlet action is not availabl(集成了多個spring的XML配置文件)
知道問題的告訴下小弟 chenjiang588@163.com多謝
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2007-12-27 09:42 by
1、表示層
管理用戶請求,作出響應
提供一個流程控制器,委派調用業務邏輯和其他上層處理
處理異常
為顯示提供數據模型
用戶界面的驗證
不應該出現:高耦合,難維護
與數據庫直接通信
與應用程序相關聯的業務邏輯及校驗
事物處理
2、持久層:Hibernate
如何查詢對象的相關信息(HQL或正則表達式的API)
3、業務層(Spring,PicoContainer)依賴注射,控制反轉
處理應用程序的業務邏輯和業務校驗
管理業務層及的對象的依賴
在表示層和持久層之間增加一個靈活的機制,使得他們不直接聯系在一起
通過揭示從表示層到業務層之間的上下文來得到業務邏輯
管理程序的執行(從業務層到持久層)
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-01-05 12:07 by
我在學Struts+Spring+Hibernate整合的時候也是出現:
Servlet action is not available
在網上找了些資料,還是沒有解決這個問題。
我的E-mail:huangshuidan@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-02-28 19:22 by
說的太好了我還有點看不明白啊
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-03-07 21:14 by
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
我做到struts與spring時就提示這個錯誤了,怎么回事啊,我是初學者請教大家,望大家多多指點啊
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-03-13 13:57 by
上邊的例子來至<精通J2EE-eclipse struts hibernate spring>吧!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-03-14 11:00 by
首先感謝樓主,其次很多細節表達不清楚,看不明白,本來就是給初學者看的,反正我看了是不知道怎么進行
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-04-26 00:12 by
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2008-05-04 01:59 by
這是什么時候寫的.技術有點陳舊
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-05-11 13:21 by
配置得不怎么完善
只能作為simple
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-05-18 13:20 by
離開建立棵十秒分斤克里秒分克里 哦安家費拉薩機挖坡度佛安排上哦按時溫度計撒賴棵
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-05-18 13:21 by
每年充分不等式舉辦棵數據庫地方科技教科書大后方科技而今開發雕刻家會計師地方科技孔家店十分孔家店恢復
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-06-18 20:31 by
樓主真厲害,在Action中就直接調用DAO中的方法,不過我有點不明白怎么不加業務層呢?
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-07-17 14:15 by
今天很閑,突然想看看Struts+Spring+Hibernate,發現此帖。
發現好多人說有 Servlet action is not available 異常。
自己寫了一下,也是這個錯。
后來找了半天,原來是忘了導一個包,其實這個只能賴自己了。
博主已經說了,把spring的包全導出進去方便。
以為自己有點經驗。就沒都導進去。
結果忙乎的一個多小時找錯。哎~!!!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-07-18 22:44 by
大家好.
首先,我得感覺樓主,因為他給我們指出的大體的編程方向.
但是有些在編程中出現的問題他可能沒有能夠一一給出,
那么,我今天一天對他的這個小程序的實現,碰到了以下的問題:
我在此也給出了解決方案(希望能對大家有幫助,技術共享是我們的目標!)
1.利用myeclipse生成validatorForm時,記得將里面的非get,set方法刪掉...
不然,就得在里面重寫一些校驗方法了,而且如果不寫,程序將不會進行校驗!
因為代碼中的校驗級別高于配置文件中的!
2.不要將action-mapping中的/login.jsp前面的/掉了
3.<%@ page language="java" contentType="text/html; charset=UTF-8" %>
這里面的charset部分一定不能掉,否則將會出現亂碼!切記!
4.出現500問題,可能是沒有在sturts-config.xml文件中加載
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
5.struts 404
可能是由于myeclipse未加載完整的spring.jar包.
6.
500
hibernate3.1換成3.0試試!
7. org/springframework/orm/hibernate/support/HibernateDaoSupport 不能找到
原因:因為將hibernate3.1換到了3.0,所以,這里的hibernate應該變成hibernate3/support..
8.class="org.apache.commons.dbcp.BasicDataSource">
缺少DBCP包,在此處下載一個:
http://commons.apache.org/downloads/download_dbcp.cgi
9.java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration
10.java.io.FileNotFoundException: Could not open class path resource [....hbm.xml],提示找不到xml文件?
原因一般有兩個:
(1)該xml文件沒有在classpath中。
(2)applicationContext-hibernate.xml中的xml名字沒有帶包名。
11.Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
其實,不管是哪種數據庫,只要把對應的JDBC包放入到tomcat 的common/lib下面即可,像本人現在使用的MYSQL
就要導入:mysql-connector-java-3.1.10-bin.jar
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-08-28 15:36 by
好,學習中。。。。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-08-30 19:40 by
這個太簡單了,想學的找我。
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-10-08 09:56 by
學習中 那位給我發份完整的啊 523276508@qq.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-10-08 09:57 by
北大青鳥教師 怎么聯系你啊 我想學 qq 523276508
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2008-11-08 13:55 by
各位朋友!我在往數據庫中添加數據的時候,出現亂碼問題,怎么才能解決這個問題??QQ:527633364 郵件:lihui_xj@163.com
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-11-10 14:10 by
不錯
可以當練習玩了
多交流知識互相切磋啊
呵呵
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2008-12-16 14:21 by
fgd
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-02-24 15:37 by
@tony
沒有實體類
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2009-03-07 18:13 by
我在用ssh集成的時候碰到一種情況就是 我運行出來后 要是我多刷新得幾次網頁就不回出來了 請問有誰知道原因 謝謝了!!!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-04-17 20:19 by
學習了
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-05-26 20:11 by
群:69834095 java,ajax,js,jsp技術交流,共同學習
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-05-27 15:43 by
dd
# re: Struts+Spring+Hibernate練習(完整)[未登錄] 回復 更多評論
2009-08-10 09:39 by
@ssh那你為什么不發布一個.
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-12-01 12:09 by
非常好的文章,謝謝樓主分享!
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2009-12-11 08:52 by
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-04-01 13:15 by
有點難學,感謝分享
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-04-16 17:07 by
看看 不懂加qq 我們聊
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-04-16 17:11 by
學習
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-04-16 17:12 by
學習中
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-04-30 10:11 by
我記得在Struts中導入插件后還要
<action attribute="loginLogForm"
name="loginLogForm"
parameter="op"
path="/loginLog"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="loginList"
path="/SystemManager/LoginLog.jsp" />
</action>
然后再Spring的配置文件中
<bean name="/personnel" class="org.myoffice.struts.action.PersonnelAction">
<property name="personnelBiz" ref="personnelBiz"/>
<property name="systemBiz" ref="systemBiz"/>
</bean>
<property>是注入的標簽
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-07-27 17:18 by
一點也不完整 就是垃圾
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2010-12-15 09:51 by
WEb.xml中如何添加呢?誠懇期待
# re: Struts+Spring+Hibernate練習(完整) 回復 更多評論
2011-06-27 14:05 by
值得收藏!