shiyan和Show3DHouse4项目的比较跟踪找错

1.使用了现成的可运行的项目的库,将项目下的.mymetadata .myhibernatedata .settings中修改 路径 名实现项目名修改 ,且确保了.jar文件的一致性,API库应该没问题。
2.配置文件web.xml:
  <filter-class>com.lma.tools.CharacterEncodingFilter</filter-class>

<init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
<!--不用在此注册appicationContent.xml文件-->

 3. struts-config.xml文件中

    <form-bean name="userLoginForm" type="org.apache.struts.action.DynaActionForm">
      <form-property name="loginPass" type="java.lang.String" />
      <form-property name="type" type="java.lang.String" />
      <form-property name="loginName" type="java.lang.String" />
      <form-property name="newPass" type="java.lang.String"/>
      <form-property name="comfirmPass" type="java.lang.String"/>
    </form-bean>

<!--
有部分和action处理时对应也可:
String name = userLoginForm.getString("loginName");//////对于学生来说是学号
        String pass = userLoginForm.getString("loginPass");
        String type = userLoginForm.getString("type");
        而库中只有:id loginName loginPass type 持久类对应sql:  private Integer

id;
    private String loginName;
    private String loginPass;
    private String type;
也就是所form-bean不严格要求和form 或sql持久类数量一致,但是在action中取值名称要一致。
-->

<action
      attribute="searchHouseInfoForm"
      input="/admin/admin_index.jsp"  
      name="searchHouseInfoForm"
      path="/searchHouseInfo"   
      scope="request"
      parameter="method"
      type="org.springframework.web.struts.DelegatingActionProxy">
      <set-property property="cancellable" value="true" />
      <forward name="searchHouseInfo2" path="/public/searchhouseinfo.jsp"></forward>
   </action>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation" value="/WEB-

INF/applicationContext.xml"/>
  </plug-in>
<!--plug-in元素指明了转向applicationContex.xml处理上述path属性请求。-->
4.声明了数据源:
<bean id="dataSource"
<property name="url"value="jdbc:mysql://localhost:3306/showhouse">
        </property>
<bean id="sessionFactory"
    <property name="mappingResources">
            <list>
            <value>com/house/entity/HousingInfo.hbm.xml</value>
            <!--  <value>com/house/entity/BuildingInfo.hbm.xml</value>
                <value>com/house/entity/HouseInfo.hbm.xm</value>
                <value>com/house/entity/ClientInfo.hbm.xm</value>
                <value>com/house/entity/Developers.hbm.xm</value>
                <value>com/house/entity/UserLogin.hbm.xm</value>
                <value>com/house/entity/Comment.hbm.xm</value>
                <value>com/house/entity/Reservation.hbm.xm</value>
                -->
                </list>
        </property>
<!--指明了所使用的hbm.xml,不需要hibernate.cfg.xml就可以处理好了。-->
 
5.在Action类中页面的跳转和相关属性、页面对象变量的使用:

public class SearchHousingInfoAction  extends DispatchAction{
     IHouseInfoDao searchHouseInfoDao;
    
    public IHouseInfoDao getSearchHouseInfoDao() {
        return searchHouseInfoDao; //2.applicationContent.xml中指明的dao对象
    }

   public void setSearchHouseInfoDao(IHouseInfoDao searchHouseInfoDao) {
        this.searchHouseInfoDao = searchHouseInfoDao;
    }
                           //1.jsp页面input 中声明的method名
  public ActionForward searchHouseInfo(ActionMapping mapping, ActionForm form,

//1.结合输入时的form表单处理
            HttpServletRequest request, HttpServletResponse response){
                    //1.但却没有读取相关的form request数据,尽管可以传入,实现功能即可。
        List list = searchHouseInfoDao.findByAll();//3.使用了dao的方法
  request.setAttribute("houseInfo", list); //4.将其存入到houseInfo链表对象中,使输出页面读取
        return mapping.findForward("searchHouseInfo2");//4.返回到页面标志
    }
}
6.在dao类中对应了相关的方法,和entity类声明以及.hbm.xml配置

7.jsp input页面使用:
  <!--shiyan 中: -->

<li> <a href="http://jeromecen1021.blog.163.com/blog/.. /speciality.do?method=showSpeciality"><span>查看所有的专业

</span>查看专业</a></li>
<!--unity3dhouse中:-->
  <table> <tr><td> <a href="http://jeromecen1021.blog.163.com/blog/.. /searchHouseInfo.do?method=searchHouseInfo">查看房子

</a></td></tr></table>
<!--
输出页面:是在返回的页面取链表变量houseInfo的数据成员对应于持久类:


         private Integer houseId;
    private Integer buildingId;
    private String floor;
    private String sized;
    private String price;
    private String buildingArea;
    private String usingArea;
页面中使用输出:-->
    <logic:iterate id="houseInfo" name="houseInfo">
                    <tr>
<td bgcolor="#ffffff">${houseInfo.houseID}</td>
<td bgcolor="#ffffff">${houseInfo.floor}</td>
<td bgcolor="#ffffff">${houseInfo.sized}</td>
<td bgcolor="#ffffff">${houseInfo.price}</td>
<td bgcolor="#ffffff">${houseInfo.buildingArea}</td>
<td bgcolor="#ffffff">${houseInfo.usingArea}</td>
                            
                            
                            
                        </tr>
                    </logic:iterate>
8.hibernate.reveng.xml中定义的表与持久类的定义。
测试结果:
(1)更改了.jsp页面的*.do 的method方法和applicationContext中的method,因为tomcat服务器中默认了之前的method,应该是写入了初始的配置文件中。所以修改后重新启动,成功了!
(2)证明了form-bean是不一定要和申请表或持久类参数一致,但最后覆盖掉form参数。

(3)hibernate.reveng.xml文件是不重要的。

猜你喜欢

转载自blues1021.iteye.com/blog/1144126