ssh框架下的第一个例程——(1)

来源:互联网 发布:apache设置虚拟路径 编辑:程序博客网 时间:2024/06/15 11:11

 感慨:错误和发现他们的一个经历。

 

因为是例程,可以参考。但是还是会不停出错。

所以有时候在想,dot.net的学习者可能在这个方面出错的机会比我们学java的要小得多。

因为java开发有很多组建和各种可引用的jar包,这方面的各种版本的变化就让我们这些初学者

一头雾水。

 

何时才会笑傲java,呵呵。

 

报错:

1、异常:java.lang.ClassNotFoundException:

org.springframework.web.jsf.DelegatingVariableResolver
(错误解决来自:http://www.diybl.com/course/3_program/java/javajs/200847/108471.html

    此异常需要包含Spring2.0 Web Library

 

    之前使用的是5.0版本的MyEclipse,其中自带的spring都是1.2版本的,使用5.5的

MyEclipse后,所包含的spring是2.0版本了。

    其实在这个错误出现前还有一个页面无法跳转,实际上是我的程序中的struts没有自动调用

Action并执行execute函数。

    (1)首先检查spring和struts的配置文件。

        spring的配置文件是applicationContext.xml,主要是将业务处理层的各属性和相关实

现类注入,还有一个数据源和springSessionFactory的注入,即bean的添加。因为与struts整合

,spring将接手struts的事物处理,我觉得对业务处理层的各属性和相关实现类的注入可分具体

化为对相应Action相应类的注入。当然注入的还是属性和此属性的来源。

        例如下:

 <?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="springSessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource"/>
  </property>
  <property name="mappingResources">
   <list>
    <value>com/hb/modules/Member.hbm.xml</value>
    <value>com/hb/modules/Orderform.hbm.xml</value>
    <value>com/hb/modules/Orderforminfo.hbm.xml</value>
    <value>com/hb/modules/Ware.hbm.xml</value>
    <value>com/hb/modules/Admin.hbm.xml</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
    </prop>
   </props>
  </property>
 </bean>
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName">
   <value>oracle.jdbc.driver.OracleDriver</value>
  </property>
  <property name="url">
   <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
  </property>
  <property name="username">
   <value>petshop</value>
  </property>
  <property name="password">
   <value>petshop</value>
  </property>
 </bean>
 <!-- Dao注入 -->
 <bean id="memberDao" class="com.hb.dao.hibernate.MemberDaoHibernate">
  <property name="sessionFactory">
   <ref bean="springSessionFactory"/>
  </property>
 </bean>
 <bean id="adminDao" class="com.hb.dao.hibernate.AdminDaoHibernate">
  <property name="sessionFactory">
   <ref bean="springSessionFactory"/>
  </property>
 </bean>
 <!-- Dto注入 -->
 <bean id="memberDto" class="com.hb.service.impl.MemberDtoImpl">
  <property name="memberDao"><ref bean="memberDao"/></property>
 </bean>
 <bean id="adminDto" class="com.hb.service.impl.AdminDtoImpl">
  <property name="adminDao"><ref bean="adminDao"/></property>
 </bean>
 <!-- Action的配置 -->
 <bean name="/login" class="com.hb.web.action.LoginAction">
  <property name="memberDto"><ref bean="memberDto"/></property>
  <property name="adminDto"><ref bean="adminDto"/></property>
 </bean>
 </beans>

        struts的配置文件struts-config.xml。我的理解,struts的这个文件清晰的表述了jsp

、Form、Action三者的流程关系。因为有spring的介入,上述三者的经历可能就会有些变化。主

要配置ActionForm(<form-beabs>)、特定的请求路径到响应的Action的映射(<action-mapping>)

等。

         会使用spring的代理进行Action响应,此处有两种选择:一种是在struts-config.xml

中以添加<plug-in>获得struts中的Action控制权。一种是直接在web.xml中加载来实现。

例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts

Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-

config_1_1.dtd">

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="loginForm" type="com.hb.web.form.LoginForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="loginForm"
      input="/pages/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="org.springframework.web.struts.DelegatingActionProxy" >
      <forward name="member" path="/pages/success.jsp"></forward>
      <forward name="admin" path="/pages/success.jsp"></forward>
      <forward name="fail" path="/pages/fail.jsp"></forward>
 </action>
  </action-mappings>

  <message-resources parameter="com.hb.web.ApplicationResources" />
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property value="/WEB-INF/applicationContext.xml"
     property="contextConfigLocation"/>
  </plug-in>
</struts-config>

或者是在web.xml中这样添加:

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <servlet>
       <servlet-name>context</servlet-name>
       <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet

-class>
       <load-on-startup>1</load-on-startup>
    </servlet>

   

    (2)jsp文件本身是否有错。

    因为之前生成的jsp使用的是默认版本,可能不支持struts(有待进一步深入了解)。重新

使用一个支持struts1.1或1.2的jsp问题就好了。

原创粉丝点击