oksonic博客

oksonic博客
注册了一个域名:www.oksonic.cn 大家收藏吧___ 联系我:QQ:71279650 __ Email:oksonic@tom.com___ 新空间已经启用,http://www.oksonic.cn <<<<<<<<<<<<
 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(199)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(34)

  • java(32) (rss)
  • 开发相关(2) (rss)
  • 开源OA项目 (rss)

随笔档案(35)

  • 2007年7月 (1)
  • 2007年5月 (2)
  • 2007年4月 (3)
  • 2007年3月 (2)
  • 2007年2月 (1)
  • 2007年1月 (1)
  • 2006年8月 (1)
  • 2006年7月 (5)
  • 2006年5月 (1)
  • 2006年4月 (1)
  • 2006年3月 (2)
  • 2006年2月 (1)
  • 2006年1月 (2)
  • 2005年12月 (6)
  • 2005年11月 (6)

文章分类

  • java开发 (rss)

java

  • struts官方站点
  • struts官方站点

最新随笔

  • 1. 为struts-menu的树型菜单加入复选框
  • 2. 速动画教程第三十三集 使用NetBean开发之用户管理
  • 3. 速动画教程第三十二集 使用NetBean5.5可视环境开发JSF应用程序
  • 4. 速动画教程第三十一集 使用Axis2构建Hello应用
  • 5. 速动画教程第三十集 搭建SSH2的集成开发环境
  • 6. 速动画教程第二十九集 单点登录CAS的使用方法
  • 7. 建了个网站,以供教程交流使用!www.oksonic.com.cn
  • 8. 速动画教程第二十八集 Struts+Velocity简单集成
  • 9. 速动画教程第二十七集 SVN的安装和配置
  • 10. 发布个人收藏资料集!文件共有69.8M

搜索

  •  

积分与排名

  • 积分 - 438641
  • 排名 - 8

最新评论

  • 1. re: 速动画教程第三十一集 使用Axis2构建Hello应用
  • 评论内容较长,点击标题查看
  • --u88
  • 2. re: Struts+Spring+Hibernate练习(完整)
  • 不错
    可以当练习玩了
    多交流知识互相切磋啊
    呵呵
  • --wang
  • 3. re: 发布个人收藏资料集!文件共有69.8M
  • 下不了,楼主给发一份吧,十分感谢!!!
    121193428@163.com
  • --wangshuo
  • 4. re: 速动画教程第十八集 SSH框架的构建(录像)
  • SSH学习--QQ群:56730039
  • --微微
  • 5. re: Struts+Spring+Hibernate练习(完整)[未登录]
  • 各位朋友!我在往数据库中添加数据的时候,出现乱码问题,怎么才能解决这个问题??QQ:527633364 邮件:lihui_xj@163.com
  • --SSH

阅读排行榜

  • 1. Struts+Spring+Hibernate练习(完整)(123624)
  • 2. 速动画教学系列共九集,关于struts、hibernate下载(25260)
  • 3. 我收集的Eclipse插件(22800)
  • 4. 使用Eclipse + MyEclipse开发Web Service的示例!(录像教程)(21739)
  • 5. Struts+Spring+Hibernate练习(完整)的续集录像教程(20388)

评论排行榜

  • 1. Struts+Spring+Hibernate练习(完整)(228)
  • 2. 速动画教学系列共九集,关于struts、hibernate下载(124)
  • 3. Struts+Spring+Hibernate练习录像发布(94)
  • 4. 准备制作OA系统(开源),求各方面的资料,希望得到大家的支持及帮助!(63)
  • 5. 发布个人收藏资料集!文件共有69.8M(63)

Powered by: 博客园
模板提供:沪江博客
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

Struts+Spring+Hibernate练习(完整)

我的博客:http://www.blogjava.net/oksonic/
我 的 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目录中
此文件可以到http://struts.apache.org/下载
 
文件内容如下:
<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进行测试了
http://localhost/login/ 这里说明一下,我的Tomcat已经装端口号改为80了,所以就不必使用http://localhost:8080/login/这样的方法了。
 
如果不输入任何数据而直接提交表单的话就可以看到效果了。
 
好了,如果没有什么问题的话就继续往下看吧,如果有问题的话就得往上看了^_^
 
现在创建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
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
http://www.springframework.org/dtd/spring-beans.dtd">
 
<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配置了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 
<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 ,这两个包的名字就只差一个字,千万不要有错,否则找错误可是很难的。
发表于 2005-11-06 11:04 oksonic 阅读(123624) 评论(228)  编辑  收藏 所属分类: java
 
评论共3页: 1 2 3 下一页 
评论
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
今天将myeclipse中的Hibernate3.1换成3.0。 程序代码一点都没有修改,居然成功了。奇怪了,为什么用3.1就会出现 找不到action的问题?
frank 评论于 2007-01-30 07:23
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
搞了一天,终于调通了。
关于数据库的问题,是因为这个例子是用MYSQL数据库的,MYSQL可能user不是关键字,而SQLSERVER中user是关键字,用它做表名,肯定出错~
Vivian 评论于 2007-02-01 14:19
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
真是郁闷啊,我是 spring+hibernate 新手入门,这个程序按原样操作运行,就是不成功,也不知是怎么搞的啊,在DAO那里就是报错,也调试不好,一个人学习是很累啊,有个高手指点就会学的很快啊,真希望能结交很多高手向他们学习请教,MSN:yjg_2008@hotmail.com,QQ:657515806,希望各位互相沟通学习。
万事通 评论于 2007-02-14 17:48
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
补充一点啊,望记了,今天是2007-2-14情人节啊!
万事通 评论于 2007-02-14 17:50
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
我按照上面说的做后,报了Resources cannot be null。
怀疑是validator-rules.xml的问题,我用的是1.1的validator-rules.xml。
可以给我一份你的validator-rules.xml吗?
我的邮箱是yifeng885@163.com,谢谢了。
yifeng885 评论于 2007-03-09 14:04
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
很早就下了这个教学视频,spring+hibernate+mysql运行成功,但是spring+hibernate+mssql就不行了,总是找不到servlet action,我本人出错的原因是,在eclipse中利用myeclipse database explorer视图链接mssql自动生成的xx.hbm.xml文件有问题,后来一一手动修改重新发布,成功!!!呵呵,还有就是要注意配置文件中各个类的路径。在此严重感谢sonic大侠!!!
希望能做一个spring+hibernate+struts的分页视频教程!!!
ljj 评论于 2007-03-09 15:15
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
dddddddddddddd
fg 评论于 2007-03-15 01:34
# 支持oksonic-反对牙尖咀历无能者  回复  更多评论    
呵呵,加油OKsonic.
你的付出,大家都看到了。。。。
龙泰旭 评论于 2007-03-16 11:21
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
谢谢
timeport 评论于 2007-03-20 09:55
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
http://buyingwowgold.xinwen520.com/
http://cheapwow.xinwen520.com/
wow gold 评论于 2007-03-22 18:56
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
虽然很简单,可是对刚入门的人来说,是一场急时雨
雪中送碳
test 评论于 2007-03-27 10:45
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
这世上像楼主这么好的人不多了
wang 评论于 2007-03-28 13:06
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
Thank you very much for your class
example is so simple but very useful for us
I am empaise again sonic Thank you for share
your knowhow 힘내세요 ... ㅎㅎ
ssh 评论于 2007-04-02 14:36
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    

虽然简单,但还是不错的!
不过我想提一点的就是,思路方面还不是很好,以这种方式思路来构建的框架,不能适应大型系统的需求.还有就是要注意这些开源框架之间优势的配合也很重要.
ssh 评论于 2007-04-05 10:13
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
感觉少了点什么,你要是能再加上哥getBean(),之类的细节方面的就好了,大家可以下载美河做的关于spring的视频  ,   不过这个帖子非常的好,谢谢楼主
jlins 评论于 2007-04-05 23:59
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
楼主,我在使用当中遇到一个问题,极度郁闷ing:
我的serviceContext.xml文件如果是这样
<bean id="LoginService"
class="com.syscanhc.service.impl.LoginService">
<property name="userDAO">
<ref bean="userDaoProxy" />
</property>
</bean>
页面提交时报错如下:
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>
却提交成功,请楼主帮忙分析下原因
陈豪 评论于 2007-04-12 18:00
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
顶。谢谢lz
哈哈 评论于 2007-04-13 10:24
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
你要想用Hibenate的话 应先倒如 Hibenate的支持 在建连接池,不要用JDBC那个太麻烦 用JDTS要好用 只须到如一个包就行了  我也是学这个的 不过 走了很多弯路 在这里我想提醒新手少走些湾路
QQ466073353   
笨鸟 评论于 2007-04-24 07:19
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
呵呵 上面的代码只是硬编码 连接数据库要注意特别多的事项 比如先倒入支持和后倒入支持就不同 真麻烦 有同行的话加我 啊 如果不嫌弃我可以和我讨论讨论 相信你会有收获的
笨鸟 评论于 2007-04-24 22:21
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
gaga
ttt 评论于 2007-05-05 02:43
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
有关使用 SQL server 出现uncategorized SQLException for SQL 错误的问题:
查了很久,原来是表名不能用user, user 为 SQL SERVER 的关键字
碰到同样问题的 把表名改掉就OK了,
感谢楼主的动画
阿飞 评论于 2007-05-08 14:00
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
为什么hibernate的包换成3.2就错 非要用3.0
成长 评论于 2007-05-11 00:45
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
请楼主帮忙解释一下
成长 评论于 2007-05-11 00:45
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
只要在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
麻烦搂主 看看
jason 评论于 2007-05-12 10:08
# 初学spring hibernate[未登录]  回复  更多评论    
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);
请问是什么问题?
tony 评论于 2007-05-12 19:41
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
找不到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"));

很快可以找出错误的地方;
YY 评论于 2007-05-14 18:05
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
为什么hibernate的包换成3。2就错 非要用3。0
成长 评论于 2007-05-18 13:26
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
哥们,也给俺发一份啊 sadi9090@163.com 谢了啊 :)
mac 评论于 2007-05-31 17:39
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
dyx8143@tom.com 谢谢大哥了
teiayuu 评论于 2007-06-02 20:41
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
Stards_Cai@163.com 谢谢大哥,我也要!!!
stards 评论于 2007-06-07 19:33
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
shengli_chen@hotmail.com老兄给我一份源文件,做个参考。
siner 评论于 2007-06-09 21:31
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
ljm80586@sina.com
谢谢
ljm 评论于 2007-06-14 16:44
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
怎么不能下
qiao 评论于 2007-06-17 17:03
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
好像确实有点问题啊...
我今天才在别个那里看到做这个方面的东西..在我认为struts只是获取页面提交的东西.,.然后由application.xml文件中找到相对应的action,然后再根据action的依赖项找到相对应的DAO(实现类),再由这个实现类找到相对应的DAOImp(接口类),最后在struts里面就添加一个DAO的属性.(这个是不是才叫依赖式的注入呢?我也不清楚..),再在action里面只要调用此属性的实现方法就可以啦..
(管你是动态的还是静态的actionForm)

----只是我本人今天的一点看法...不好意思才看别人用这个东西.我还没有用过.
Mark 评论于 2007-06-21 02:17
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
写得很好,不够详细,很多代码不全,能不能发一份完全的代码?
写得很好, 评论于 2007-06-27 14:36
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
可以发给我吗?ying_jun25@163.com
写得很好, 评论于 2007-06-27 16:08
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
写得乱七八糟,跟着你去做,能一次成功人有谁啊
JJ 评论于 2007-07-03 17:25
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
在struts-config.xml中添加载入 spring 的配置文件不如在web.xml中添加好
richard_gao 评论于 2007-07-04 19:59
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
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文件夹下
aaa 评论于 2007-07-06 11:15
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
楼上说的myeclipse 把applicationContext.xml放在classes文件夹下我怎么没有发现啊?
不知道大家发现没有?
现在我也是HTTP Status 404 - Servlet action is not available 很头疼啊.
TEST 评论于 2007-07-18 16:25
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
回一楼的错误:"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了!
chunlin 评论于 2007-07-21 17:05
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
能发份原代码吗?xtf999999@sina.com.cn 谢谢
A 评论于 2007-08-07 10:29
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
能不能发一份源码?非常感谢啊! jhvhmhab@163.com
jhvhmh 评论于 2007-08-10 09:42
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
找不到action
lanhuhe 评论于 2007-08-14 10:44
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
我在mysql,sqlserver上都运行成功且我增加了update功能,可以分页功能总做不出来,都不知道如何下手,有没有高手提示一下啊!
anlan 评论于 2007-08-17 13:55
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
user 在mssql 中是系统关键字
dsfsdf 评论于 2007-08-19 02:26
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
哪个兄弟有上面的例题完整的代码请给我发一份谢谢啊,本人急需要这样的例题 谢谢 邮箱 huzhongwen-hz@163.com
胡中文 评论于 2007-08-22 17:55
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
哪个兄弟有上面的例题完整的代码请给我发一份谢谢啊,本人急需要这样的例题 谢谢 邮箱 huzhongwen-hz@163.com
胡中文 评论于 2007-08-22 17:55
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
博客主人请谨慎,你根本就没有用到Spring啊不要乱说我看了半天也没找到你用Spring的地方,你好好看看吧
Azure 评论于 2007-08-24 01:29
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
出现这种问题是因为我们用了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' 附近有语法错误。
钟文创 评论于 2007-08-24 02:19
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
@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"));

很快可以找出错误的地方;
钟文创 评论于 2007-08-24 03:20
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
解决 Servlet action is not available
这个问题,可以这样:
1.先看看login.jsp的提交是不是action="/login"
2.再从struts-config.xml着手,看是不是各种导入的文件的路径对不对;
3.最后同样看看applicationContext.xml是不是也有路径的问题。
像我就是导入UserDAOImp.java时写错路径了,结果边验证表单是不是空的都出错,是非常快地报错,很让我郁闷!
感谢YY的解答,我用他给的DAO的测试类测试了程序 ,系统马上报错说是applicationContext.xml里面的UserDAOImp找不到,然后就感觉好像抓住了救命草,改了过来就一一下子成功了!
钟文创 评论于 2007-08-24 03:34
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
哪为好心的大哥能帮小弟发一份完整的代码呀,我的邮箱是ycplwb1314@163.com
alonely 评论于 2007-08-24 09:52
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
@钟文创
解决 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>
钟文创 评论于 2007-08-25 01:00
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
录像请到www.oksonic.cn去下载,注册一个用户即可下载所有录像!
录像请到www.oksonic.cn去下载,注册一个用户即可下载所有录像!
录像请到www.oksonic.cn去下载,注册一个用户即可下载所有录像!
录像请到www.oksonic.cn去下载,注册一个用户即可下载所有录像!
录像请到www.oksonic.cn去下载,注册一个用户即可下载所有录像!
oksonic 评论于 2007-08-28 09:42
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
就是他妈的这个问题搞死人了: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练习。都是这个同样的问题没法解决。。 谁能给我一个理由啊。
wolf 评论于 2007-08-29 16:54
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
如果是去掉这个配置就可以成功执行的话就说明映射文件和数据的关联上出了问题,检查一下数据的结构,如:有没有把ID设主键。
仔细检查一下,问题实际上已经找到了。
oksonic 评论于 2007-08-30 09:57
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
但是我用楼上的一位仁兄的代码: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包会有问题啊。。
wolf 评论于 2007-08-30 10:16
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
启动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)
wolf 评论于 2007-08-30 10:19
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
找不到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


我也是初学者 评论于 2007-08-30 10:21
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
楼上:我上面不是已经说了测试过了吗。。没问题啊。。能输出预想的结果啊。
wolf 评论于 2007-08-30 11:00
# re: Struts+Spring+Hibernate练习(完整)[未登录]  回复  更多评论    
昨天白扯一天了。。总而言之,言而总之,遇到那些问题的朋友很有可能是使用myeclipse的版本而引起的,归根结底是包的问题。。代码没问题。。这能怨谁去啊。。??
wolf 评论于 2007-08-31 09:07
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
仔细看了一下,不错。当前用的比较多的一种整合。
暗号 评论于 2007-09-06 10:55
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
不错,收藏!
osshome 评论于 2007-09-06 16:45
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
楼主的项目 用了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 不爽 呵呵
冬`` 评论于 2007-09-07 10:35
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
这年头出现个楼主着这样的人物不容易啊!!!!!!
tuo_bing 评论于 2007-09-07 13:25
# re: Struts+Spring+Hibernate练习(完整)  回复  更多评论    
ssfsdf
123 评论于 2007-09-11 17:00
# re: Struts+Spring+Hibernate练习(完整)  回复