Posted on 2005-11-06 11:04
oksonic 阅读(203457)
评论(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
值得收藏!