lscforever

           

          樓主救命!我在做你的"Struts+Spring+Hibernate練習"的時候出錯了


          我用的開發環境:
          jdk1.5
          eclipse3.12?
          myeclipse 4.1
          ?spring 1.2
          hibernate3.0
          數據庫服務器:sqlserver2000
          數據庫驅動: jtds1.2
          web服務器:toncat5.0

          我要實現的功能是:當用戶登陸后顯示一個login連接,當用戶單擊這個連接時程序執行LoginAction.java

          以下是程序的目錄結構:
          src
          ? ---com
          ????? ----test
          ????????? ---hibernate
          ?????????????????? ----AbstractUser.java
          ?????????????????? ----SessionFactory.java
          ?????????????????? ----User.hbm.xml
          ?????????????????? ----User.java
          ????????? ----struts
          ????????????? --action
          ?????????????????? LoginAction.java
          ????????? -----UserDao.java
          ????????? -----UserDaoIMP.java
          ? -----WebRoot
          ????????? ----index.jsp


          以下是applicationContext.xml的內容:
          ????? <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<beans>
          ? <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          ??<property name="driverClassName">
          ???<value>net.sourceforge.jtds.jdbc.Driver</value>
          ??</property>
          ??<property name="url">
          ???<value>jdbc:jtds:sqlserver://192.168.1.171:1433;DatabaseName=test;SelectMethod=cursor</value>
          ??</property>
          ??<property name="username">
          ???<value>sa</value>
          ??</property>
          ??<property name="password">
          ???<value></value>
          ??</property>
          ?</bean>
          ??????? <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>


          UserDao.java的代碼:
          package com.test;

          public interface UserDAO {

          ?public abstract boolean isValidUser(String username, String password);

          }

          UserDaoIMP.java的代碼:

          ?package com.test;

          import java.util.List;

          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

          public class UserDAOImp extends HibernateDaoSupport implements UserDAO {

          ?private static String hql = "from User u where u.username=? and password=?";

          ?public boolean isValidUser(String username, String password) {

          ??String[] userlist=new String[2];
          ??userlist[0]=username;
          ??userlist[1]=password;
          //??List userList = this.getHibernateTemplate().find(hql, (Object)username);
          ??List userList = this.getHibernateTemplate().find(hql,userlist);

          ??if (userList.size() > 0) {

          ???return true;

          ??}

          ??return false;

          ?}

          }

          LoginAction.java的代碼:
          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 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) {
          ??if (userDAO.isValidUser("test","test")) {
          ???return mapping.getInputForward();
          ??} else {
          ???return mapping.getInputForward();

          ?}

          ?}
          }


          index.jsp的內容:

          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          <%
          String path = request.getContextPath();
          String basePath = request.getScheme()+"://"+request.getServerName()

          +":"+request.getServerPort()+path+"/";
          %>
          <html>
          ? <head>
          ??? </head>
          ?? <body>
          ? <a href="<%=basePath%>login.do">login</a>
          ? </body>
          </html>

          以下是hibernate自動生成的User.hbm.xml,hibernate.cfg.xml文件我已經刪除了。

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "
          <!--
          ??? Mapping file autogenerated by MyEclipse - Hibernate Tools
          -->
          <hibernate-mapping>
          ??? <class name="com.test.Hibernate.User" table="user" schema="dbo" catalog="test">
          ??????? <id name="id" type="integer">
          ??????????? <column name="ID" />
          ??????????? <generator class="sequence" />
          ??????? </id>
          ??????? <property name="username" type="string">
          ??????????? <column name="USERNAME" length="50" />
          ??????? </property>
          ??????? <property name="password" type="string">
          ??????????? <column name="PASSWORD" length="50" />
          ??????? </property>
          ??? </class>
          </hibernate-mapping>

          struts-config.xml的代碼如下:

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

          <struts-config>
          ? <data-sources />
          ? <form-beans />
          ? <global-exceptions />
          ? <global-forwards />
          ? <action-mappings >
          ??? <action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" />
          ?</action-mappings>
          ?<message-resources parameter="com.test.struts.ApplicationResources" />
          ? <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
          ??? <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
          ? </plug-in>
          </struts-config>

          讓人不解的是,當我點擊login連接時,出現了以下錯誤信息:

          type Status report

          message Servlet action is not available

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


          --------------------------------------------------------------------------------
          當我把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>
          ??????? <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
          ?</bean>
          </beans>
          程序能夠正常運行并執行到了我設在LoginAction.java中的段點,由此看來,應該是
          applicationContext.xml的配置出了問題,
          但不知道問題出在什么地方?是不是數據源配錯了??


          ?????????????????????

          posted on 2006-03-23 16:59 lscforever_2002 閱讀(306) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 交城县| 洞口县| 郧西县| 农安县| 绥中县| 弥渡县| 桃江县| 房山区| 龙泉市| 松潘县| 沽源县| 垫江县| 蓬溪县| 古浪县| 介休市| 祥云县| 九台市| 盘锦市| 南宁市| 浏阳市| 慈利县| 建昌县| 彭阳县| 和政县| 武功县| 徐闻县| 嘉善县| 石柱| 公安县| 高阳县| 沙坪坝区| 铜陵市| 石渠县| 仁化县| 广灵县| 渝北区| 长白| 大庆市| 九龙坡区| 双柏县| 灵台县|