爪哇一角

共同探讨STRUTS#HIBERNATE#SPRING#EJB等技术
posts - 3, comments - 6, trackbacks - 0, articles - 99
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Struts+Spring+Hibernate的练习(完整)(转)

Posted on 2006-09-19 17:23 非洲小白脸 阅读(2256) 评论(0)  编辑  收藏 所属分类: 框架文章
 

Struts+Spring+Hibernate练习(完整)

工具:
    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 阅读(25782) 评论(101)  编辑 收藏收藏至365Key 所属分类: java
 
评论
#  re: Struts+Spring+Hibernate练习(完整)  回复    
写的很详细,收藏再研究!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
楼主,试了一下
怎么获取不到action?报错:The requested resource (Servlet action is not available) is not available.
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我的struts-config的内容:
<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)


请问,这是什么原因
#  re: Struts+Spring+Hibernate练习(完整)  回复    
你的文章很精采!

但怎么做单元测试呢?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
信息: Loading validation rules file from '/WEB-INF/validator_rules.xml'
2005-12-14 13:19:37 org.apache.struts.validator.ValidatorPlugIn init
严重: 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
严重: Servlet /login threw load() exception
javax.servlet.UnavailableException: Cannot load a validator resource from '/WEB-INF/validator_rules.xml,/WEB-INF/validation.xml'
#  re: Struts+Spring+Hibernate练习(完整)  回复    
怎么获取不到action?报错:The requested resource (Servlet action is not available) is not available.

楼主,我试了两天了,都是这个错误,我以前用hibernate2就没有这样过,怎么回事啊?我发现配置文件中,只要就入下面这段就会出错:
<property name="mappingResources">
<list>
<value>com/ssh/pro/dto/Manageinfo.hbm.xml</value>
</list>
</property>

我都郁闷死了!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
试了一下,不成功,找不到Action啊

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.

oksonic请帮忙看看吧,谢谢了。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
先顶再看!不错!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我试了一整天,和上面的几个兄弟一样报错,找不到Action啊!

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.


oksonic请帮忙看看吧,谢谢了。急啊!

#  re: Struts+Spring+Hibernate练习(完整)  回复    
而且我测试过程中,
资源文件“ApplicationResources_zh_CN.properties”

prompt.username=用户名称
prompt.password=登录密码
errors.required={0} 必需填写!


都变成了乱码
prompt.username=????
prompt.password=????
errors.required={0} ?????


请问oksonic怎样解决啊?谢谢!

#  re: Struts+Spring+Hibernate练习(完整)  回复    
没错,就是找不到Action,例子不成功,不知如何解决
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我出现这样错误的时候是使用最原始的方法进行测试的,就是将spring配置文件一段一段的进行测试,也就是说,先保留第一段,然后进行测试,如果action找到了,但出错,那就继续增加第二段进行测试,直到找出错误的段落。。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
乱码问题请正确安装
http://www.blogjava.net/oksonic/archive/2005/11/06/18368.html
这里提供的资源文件转换插件
Poperties Editor
http://propedit.sourceforge.jp/eclipse/updates/
请使用在线安装,选中所有文件进行安装
如果安装正确,那编辑完成后,保存,使用文本编辑器打开资源文件,出现以下格式表示正确。
/u1234/u3455
这时再页面中声明使用UTF-8的编码即可。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
请大家注意数据库部份的配置,文章中的配置和录像中提供的代码配置有不一样的地方,这个地方在录像中有说明!请注意看。
这是hibernate3 和 hibernate2 的不同之处
#  re: Struts+Spring+Hibernate练习(完整)  回复    
oksonic你好,可就是按你的录像中说的一步步搞的啊!

可我也找不到Action,把人搞死了!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
做完前面的struts 和spring做测试的时候 报错,找不到 Action 到底什么原因
#  re: Struts+Spring+Hibernate练习(完整)  回复    
oksonic和各位大侠你们好,先谢谢oksonic的教程了,我想直接把你提供的代码调试出来,可你代码中把连接mysql数据库的文件hibernate.cfg.xml删除了啊!可我应该怎样在程序中设置后才能连接上我建的mysql数据库啊?(也就是要改哪个具体的文件后才能连接上我建的mysql数据库啊?)能不能说说具体的操作步骤啊?谢谢!盼回复!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
oksonic博客,广大的java爱好者:你们好
谢谢oksonic你的例子配置成功了,我觉得再加一层service就好了
用service去调用 dao
还有就是两个表一对多(比如球队和队员)hai当增加队员时候 用getHibernateTemlate.save()方法时候TEAMID这个字段怎么和父表关连,用纯hibernate
时候需要先查询出这个队员的所属球队再增加,那用这个该怎么半。
还有我用的eclipse 当用<html:link>传递中文参数时候在控制台总是打印乱码,请大家和oksonic帮帮忙。谢谢!

提一下大家找不到Action可能是applicationContext.xml的问题,还有就是.hbm.xml文件的class路径是不是正确,我开始就是这个路径搞错了
希望能帮助大家!!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
oksonic和各位大侠你们好,先谢谢oksonic的教程了,我想直接把你提供的代码调试出来,可你代码中把连接mysql数据库的文件hibernate.cfg.xml删除了啊!可我应该怎样在程序中设置后才能连接上我建的mysql数据库啊?(也就是要改哪个具体的文件后才能连接上我建的mysql数据库啊?)能不能说说具体的操作步骤啊?谢谢!盼回复!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
to ooad

乱码问题请正确安装
http://www.blogjava.net/oksonic/archive/2005/11/06/18368.html
这里提供的资源文件转换插件
Poperties Editor
http://propedit.sourceforge.jp/eclipse/updates/
请使用在线安装,选中所有文件进行安装
如果安装正确,那编辑完成后,保存,使用文本编辑器打开资源文件,出现以下格式表示正确。
/u1234/u3455
这时再页面中声明使用UTF-8的编码即可。




能不能帮我看看下面的问题?谢谢!



oksonic和各位大侠你们好,先谢谢oksonic的教程了,我想直接把你提供的代码调试出来,可你代码中把连接mysql数据库的文件hibernate.cfg.xml删除了啊!可我应该怎样在程序中设置后才能连接上我建的mysql数据库啊?(也就是要改哪个具体的文件后才能连接上我建的mysql数据库啊?)能不能说说具体的操作步骤啊?谢谢!盼回复!



#  re: Struts+Spring+Hibernate练习(完整)  回复    
感谢oksonic的教程!你的例子我也配置成功了,但我出现了乱码啊!我按你提供的解决乱码的方法,在

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中还是出现了乱码啊!(如下)测试的页面login.jsp中也出现了乱码????? 请问oksonic是什么回事?是不是我下载的文件jp.gr.java_conf.ussiy.app.propedit_4.8.2.jar不对?还是这文件放的位置不对啊?再一次向你表示感谢!盼回复!


prompt.username=????
prompt.password=????
errors.required={0} ?????



#  re: Struts+Spring+Hibernate练习(完整)  回复    
to lxy

作者所说的是在线安装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版本相适应的插件
全部选中

后面只要选择install all即可

最后会提示你重起你的myeclipse

启动后按oksonic所说的操作即可解决乱码问题。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
支持楼主,
#  re: Struts+Spring+Hibernate练习(完整)  回复    
String[] paths = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(paths);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");

大家可以在main方法中测试dao,如果有问题会打到控制台上
找不到Action就是因为dao有错,而且无法在tomcat上捕获
#  re: Struts+Spring+Hibernate练习(完整)  回复    
是不是一定要把这三个框架都用上才能完美体现mvc思想?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
首先感谢您的教程!我试着用你例子里面的Struts+Spring+Hibernate架构,只是换个MSSQL数据库,但怎么试都不行。我不清楚是例子本身的问题呢还是换MSSQL后的问题?能把您的例子结合MSSQL讲讲吗?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
先谢谢大虾,再来研究研究
#  re: Struts+Spring+Hibernate练习(完整)  回复    
谢谢,收藏学习
#  re: Struts+Spring+Hibernate练习(完整)  回复    
oksonic:你好
我完全按你的教程做的,但在加入插件
<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
请问是什么原因?
#  re: Struts+Spring+Hibernate练习(完整)  回复    

非常非常非...常感谢oksonic的例子,经过一个多月来的学习,现在初步可以开发一些小东东了。但我现在遇到了分页问题,在网上搜索大半天,也看了不少例子,但就是没有像oksonic这样详细的,

在java视线中有个例子非常好:
http://forum.javaeye.com/viewtopic.php?t=14657
对于我们这种新手来说,描述的不够详细,我们需要完整的测试程序。

我希望oksonic 能做一个分页的例子,在下感激不尽!!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    

非常非常非...常感谢oksonic的例子,经过一个多月来的学习,现在初步可以开发一些小东东了。但我现在遇到了分页问题,在网上搜索大半天,也看了不少例子,但就是没有像oksonic这样详细的,

在java视线中有个例子非常好:
http://forum.javaeye.com/viewtopic.php?t=14657
但对于我们这种新手来说,描述的不够详细,我们需要完整的测试程序。

我希望oksonic 能做一个分页的例子,我们将感激不尽!!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
不错的东西
#  re: Struts+Spring+Hibernate练习(完整)  回复    
不错的东西
#  re: Struts+Spring+Hibernate练习(完整)  回复    
谢谢楼主
#  re: Struts+Spring+Hibernate练习(完整)  回复    
为什么我在制作得过程中在Spring配置文件中一添加SessionFactory得配置代码就会报404没有找到Action。请问怎么解决这个问题!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
请检查spring的配置文件
#  re: Struts+Spring+Hibernate练习(完整)  回复    
a
#  Struts+Spring+Hibernate练习(完整)  回复    

你好!oksonic,我在按照你的例子做的时候,我现在用sqlserver数据库

为什么总是出现:
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=?]

可是我已经首先映谢过呀,

请教各位大哥是什么原因造成的!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
Struts+Spring+Hibernate 是现在开发的主流,我现在刚刚接触Sping,这篇文章正是及时,希望oksonic能多发些关于Sping的学习资料.
#  re: Struts+Spring+Hibernate练习(完整)  回复    
用了一下午,终于调好了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
如果你懒的装 Poperties Editor 插件
可以先将内容保存到aa.txt
然后在文件所在目录执行JDK命令:
native2ascii aa.txt ApplicationResources_zh_CN.properties
就可以了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
真是个好人!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
谁能提供录像下载呀?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我也想要啊,谢谢拉,我的邮箱:gaoyuan.job@163.com
#  re: Struts+Spring+Hibernate练习(完整)  回复    
好不容易把Servlet action is not available给摆平了(我建的hibernate目录第一个字母是小写的),又来了一个新问题:

Hibernate: 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表解释成这个样子呢?

我的环境是:
Eclipse3.1.2
MyEclipse4.1
JDK1.5
Tomcat5.5
MySql4.1

郁闷一天了,大侠们能解释一下不?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
问题解决!

将User.hbm.xml中的
<class name="com.test.hibernate.User" table="user" catalog="test">
修改成
<class name="com.test.hibernate.User" table="user">
#  re: Struts+Spring+Hibernate练习(完整)  回复    
真是太感谢楼主了啊!!!!
速。。。谢谢啊 呵呵~~
#  re: Struts+Spring+Hibernate练习(完整)  回复    
绝对好贴!!谢谢楼主,一次性调试通过!!
(本人struts较为熟悉,spring和hibernate基本不懂。)
难得有这么好的贴啊!!期待楼主有更多精品出现!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
"
你好!oksonic,我在按照你的例子做的时候,我现在用sqlserver数据库

为什么总是出现:
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=?]

可是我已经首先映谢过呀,

请教各位大哥是什么原因造成的!
"
我也碰到类似问题,网上实在找不到答案,请教!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
这个程序还没有调通 不过已经解决了一些问题 希望给提问的朋友有所帮助

message Servlet action is not available的解决方法:
将validator-rule.xml拷贝到E:\apache-tomcat-5.5.15\webapps\login\WEB-INF下
将mysql-connector-java-3.1.12-bin.jar拷贝到E:\apache-tomcat-5.5.15\webapps\login\WEB-INF\lib下

说明:由于在eclipse使用的是tomcat的插件,所以一定要注意当运行tomcat的时候这些包在tomcat的目录就找不到了,所以需要手动将这些文件拷到tomcat下你的工程的目录里.

log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
的问题解决:
从www.hibernate.org上下载hibernate-3.1.2.zip,解压后将etc文件夹中的log4j.properties放到
C:\eclipse\login\WebRoot\WEB-INF\classes中

有什么问题可以联系我大家互相学习:)
QQ:364576663
MSN:yangxudong_hotmail.com
blog:http://spaces.msn.com/bboyyang/
#  re: Struts+Spring+Hibernate练习(完整)  回复    
写得还挺详细的,呵呵,鼓励一下
#  re: Struts+Spring+Hibernate练习(完整)  回复    
你的网站不错,给了很多人学习上的帮助,非常感谢你,希望再出炉好的东西!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
急!!!急!!!急!!!
我在使用MyEclipse的数据Database Explorer工具创建User.hmb.xml、AbstractUser.java、User.java映射文件 的时候 总是报
An internal error occurred during "Genterating Artirfacts"这个错
哪位大侠能告诉我怎么解决啊 是不是我的myeclipse版本不对啊 ??
我用的是myeclipse enterprise workbench4.1 GA 数据库是sql server
小弟很着急啊
#  re: Struts+Spring+Hibernate练习(完整)  回复    
有个问题,刷新几次后老是报session 没关,我也不知道哪出错了,手工关不了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
请问各位高手,我这是什么原因?

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:454)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:281)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:217)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
$Proxy1.isValidUser(Unknown Source)
com.test.struts.action.LoginAction.execute(LoginAction.java:57)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.

#  找不到Action的解决  回复    
由于在com.test.struts.action里只有一个action,即LoginAction
但是oksonic最后给出的applicationContext.xml中却包含了4个action,请将

<bean name="/add" class="com.test.struts.action.AddAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
<bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
<bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
在applicationContext.xml中注释掉
#  re: Struts+Spring+Hibernate练习(完整)  回复    
说表没有映射主要是因为大小写的问题 from 后边是类的名不是表的名
#  re: Struts+Spring+Hibernate练习(完整)  回复    
怎么测试老是找不到“Servlet action is not available”,那地方配置有问题?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我的找不到action的原因是1:validator.xml两个文件未拷进来。2.是数据连接池用了apache的.
#  re: Struts+Spring+Hibernate练习(完整)  回复    
你说的validator.xml两个文件是validation.xml和validator-rules.xml我都拷进来了,我连接的数据库是sql server 2000,还是出现"Servlet action is not available",真郁闷!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我在建立数据库前面做了一下运行,为什么报“servlet action is not available”的错。请大侠指点。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
看来楼上的和我遇到同样的问题啊。说明源码有问题。我直接运行源都都找不到servlet action is not available.有没有大峡指点一下。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
ert tyyu yuyj hjh hj
#  re: Struts+Spring+Hibernate练习(完整)  回复    
ert tyyu yuyj hjh hj
#  re: Struts+Spring+Hibernate练习(完整)  回复    
每当我在struts-config.xml里添加(spring)的插件

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>

就会出现验证错误?

HTTP Status 404 - Servlet action is not available
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.


而当能验证了又出现了找不到类的错误:
2006-4-10 7:00:56 org.apache.struts.action.RequestProcessor processActionCreate
严重: No action instance for path /login could be created
java.lang.ClassNotFoundException: org.springframework.web.struts.DelegatingActionProxy
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:280)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:218)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)

请问这里在那里的配置出错了?

#  re: Struts+Spring+Hibernate练习(完整)  回复    
您的文章真精彩,我是刚学这个,请教个问题可以吗?

我改了login.jsp中的<%@ page language="java" contentType="text/html; charset=UTF-8" %>
,但是还是不能显示中文,显示的是乱码。
中文的资源文件里写上中文,保存之后再打开,就显示乱码了。

我实在不知道怎么解决。谢谢!!!!!!!!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
严重: Error listenerStart
2006-4-20 15:34:31 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors

请问一下:这是在Eclipse中启动Tomcat服务器时出现的问题,并且最后服务器也启动了。之后会出现如下问题
 The requested resource (/office/) is not available.
我想知道这是什么错误!打扰了,希望您能帮我解决!谢谢
#  re: Struts+Spring+Hibernate练习(完整)  回复    
好东西,入门很不错
买了spring in action后,大体看了一下,一直想找个简单的例子练一下
这个例子很不错,对于入门很有帮助
感觉总体思想跟用ibatis差不多
都是按接口编程
在dao上面,还可以在封装一层service,用service调用dao中的方法
这样以后换框架也比较方便
#  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' 附近有语法错误。
    怎么找也找不出来原因,我用楼主的方法做了好几个工程,都是这个样子。
请各位大侠赐教。
    谢谢了。急啊!
#  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' 附近有语法错误。
   怎么找也找不出来,我的源码都是拷的楼主的,我用的SQLSERVER数据库。
有没有人遇到过这种情况啊?急啊!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
未添加SPRINT框架前,找不到Action问题:
检查struts-config.XML中
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
org.apache.struts.validator.ValidatorPlugIn 这个类名是否正确

添加后,检查
struts-config.XML的第二个plugin配置,和loginForm的验证class配置
applicationContext.xml中配置
#  re: Struts+Spring+Hibernate练习(完整)  回复    
遇到一个最郁闷的问题

验证不通过,不能显示html:error标签,呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜
#  re: Struts+Spring+Hibernate练习(完整)  回复    
还是找不到action
#  re: Struts+Spring+Hibernate练习(完整)  回复    
找不到action
按照jurassic所说的
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
的问题解决:
从www.hibernate.org上下载hibernate-3.1.2.zip,解压后将etc文件夹中的log4j.properties放到
C:\eclipse\login\WebRoot\WEB-INF\classes中
这样就可以看到进一步的错误提示。

我的是Error creating bean with name 'sessionFactory' defined in ServletContext resource
解决:
http://forums.opensymphony.com/thread.jspa?threadID=29259
Is there a chance that you have several compass/lucene jar files from different versions? Maybe in common/lib or server/lib?
我把自己所有的WEB-INF\lib下所有清空,然后把sonic的原版lib拷贝了一遍就解决了。我觉得可能是因为在添加各种框架的时候产生的冗余和冲突。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我也还是找不到action啊 好奇怪呀 好像也不是上面提到的问题 有谁调通的共享一下经验啊 谢谢先!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
一步步根据录象做下来,在添加spring框架前
测试,结果

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.

#  re: Struts+Spring+Hibernate练习(完整)  回复    
完全按照录象做的
唯一不同的是
1。他那个rule.xml,他是手动复制过去的,而我本来就有,所以不需要复制
2。他用的是struts1.2,我用的struts1.1
其他应该都一样了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
重新做了一遍,用了struts1.2以后,就可以了
之前用struts1.1就会出现刚才说的情况了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
并且那个validate-rule.xml文件用他的那个大小为13.4K的那个
#  re: Struts+Spring+Hibernate练习(完整)  回复    
加入spring框架后,出现action找不到
按照上面那个兄弟的说法,把lib清空,替换成作者的lib就可以了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
老大, 怎么现在下载不了了.......
使用这个也报用户密码错, 怎么回事..?


感谢你的贡献, 你的无私.......
要是每个人都向你这么想就好了
#  re: Struts+Spring+Hibernate练习(完整)  回复    
难道现在真的不能下载了吗?下了好几次都不成功。。。
#  re: Struts+Spring+Hibernate练习(完整)  回复    
Action问题解决,有几个方面的原因,
1.按照sonic的动画教程,最后的几步中,一个原因是mysql驱动程序放在项目的/WEB-INF/lib 下,可以将之拷贝到此lib文件下,在进入Eclipse按刷新.
2.你的applicationContext.xml文件中,所配置的各项信息,特别是文件名路径,和所对应的是否是一样,注意大小写以及符号 '/' ,和' . '。
3.配置structs-config.xml 插件时,注意路径问题,一定要对应正确的路径名,在此也反映Sonic 的认真态度,以及深表感谢 ~..~
4.按照sonic的动画教程一步一步下来,应该没问题,希望很多和我一样的新手一起进步,在sonic 带领下,,谢谢。 联系qq: 49002149 共勉~~
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我用楼主的方法做了一个工程,很成功,我用的是Struts1.1。可是后来我要把它移植到另外一个工程里面去,另个一个工程用的是Struts1.2。我把我工程里的东西都拷进去,可是就是不能执行验证。FORM里的东西不经过验证就直接提交到数据库里了,因此可以提交空数据。我怎么弄都不行,我都快崩溃了。
  是版本的问题吗?如果是版本的问题,有没有办法解决啊??
  我的那个validator-rules.xml是直接拷的Struts1.1工程中的那个。难道是这个validator-rules.xml的问题吗??
大家有没有遇到过Validator不能验证的问题啊?请指教!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
我的问题解决了,呵呵,
如果你的struts用的1.2版本的,一定要用oksonic提供的那个validator-rules.xml,不然就不会验证.
如果你的struts用的是1.1版本的,就用自动生成的validator-rules.xml就可以了.
#  re: Struts+Spring+Hibernate练习(完整)  回复    
@rui
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.IllegalArgumentException: Resources cannot be null.
org.apache.commons.validator.Validator.<init>(Validator.java:188)
org.apache.struts.validator.Resources.initValidator(Resources.java:475)
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:104)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


我花了几天的时间做,可是到最后他给我报此错误
还请楼主给我解决一下,不胜感激呀,真的好头痛!!!!!!!!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
xxxxxx,你的问题可能就是validator-rules.xml文件的问题.
#  re: Struts+Spring+Hibernate练习(完整)  回复    
#  re: Struts+Spring+Hibernate练习(完整)  回复    
头好疼啊!谁帮我解决一下我用sql2000数据库,出现这样的问题,怎么也解决不了!
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' 附近有语法错误。
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [HY000]; error code [156]; [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在关键字 'user' 附近有语法错误。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在关键字 'user' 附近有语法错误。
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:96)
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:257)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:371)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:844)
com.test.UserDAOImp.isValidUser(UserDAOImp.java:16)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
$Proxy1.isValidUser(Unknown Source)
com.test.struts.action.LoginAction.execute(LoginAction.java:52)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

#  re: Struts+Spring+Hibernate练习(完整)  回复    
我配完了,怎么找不到FORMBEAN 啊,总抛这个异常,楼主帮看看呗,非常感谢..

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
#  找不到action的原因:  回复    
修改 struts-config.xml 文件,配置转向这一段:
原文少了一段,但作者的录象中有这段. 补上:
把原来的
<form-beans >
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm" />
</form-beans>
改为
<form-beans >
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property type="password" name="java.lang.String"/>
<form-property type="username" name="java.lang.String"/>
</form-bean>
</form-beans>
就可以了。按楼主的录象试了2遍,没有问题
#  re: Struts+Spring+Hibernate练习(完整)  回复    
找不到action
#  re: Struts+Spring+Hibernate练习(完整)  回复    
谁的分页搞定了,能给我发一份吗,谢谢了,Email:jkhwj166@163.com
大家一起交流一下
#  找不到action  回复    
按照楼主的配置,我不用验证的,如果直接struts可以成功,但是如果加了spring的plug-in,就报找不到action,请各位帮帮忙忙, 我这周搭框架,下周开始开发了

很急!!!!

谢谢了~!~
#  re: Struts+Spring+Hibernate练习(完整)  回复    
如果你到我们学校里来开课, 教室一定挤爆了.
谢谢!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
@ooad
Error creating bean with name 'UserinfoDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions are: [org.springframework.beans.TypeMismatchException: Failed to convert property value of type [net.sf.hibernate.impl.SessionFactoryImpl] to required type [org.hibernate.SessionFactory] for property 'sessionFactory']
这个是什么错呀?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
强烈推荐看以下这本书!!!!!!!!

Spring 开发指南
V0.8 预览版
作者:夏昕

里面Struts+Spring+Hibernate说得非常详细!!
#  re: Struts+Spring+Hibernate练习(完整)  回复    
没想到这年头还有好人哦,不简单哦
#  re: Struts+Spring+Hibernate练习(完整)  回复    
大哥你可以不可以让我在一个地方把Struts + Spring + Hibernate 练习全不下载呀
太分散啦
#  re: Struts+Spring+Hibernate练习(完整)  回复    
两个资源文件struts是怎么分辨出用中文的呢?
#  re: Struts+Spring+Hibernate练习(完整)  回复    
@qinfen
hibernate是基于对象查询的。。所以在查询的时候一定要写你类的名字而不是你在数据库中的表的名字。 。。

只有注册用户登录后才能发表评论。


网站导航: