代码先:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
LoginTest</display-name>
<servlet>
<servlet-name>strutsController</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>strutsController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

</web-app>struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="loginForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="password" type="java.lang.String"></form-property>
</form-bean> </form-beans> <global-forwards>
<forward name="indexGo" path="/success.jsp"></forward>
</global-forwards>
<action-mappings> <action attribute="loginForm" input="/login.jsp"
name="loginForm" scope="request" path="/login" validate="true"
type="org.springframework.web.struts.DelegatingActionProxy">
</action> </action-mappings>
<message-resources parameter="com.test.struts.ApplicationResources" /> <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in></struts-config>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 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/meonline</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>1</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>
User.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialet">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframeword.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="userDAO" class="com.test.Hibernate.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
</beans>User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibername Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.Hibernate.User" table="user">
<id name="id" type="integer">
<column name="ID"></column>
<generator class="native"></generator>
</id>
<property name="username" type="String">
<column name="USERNAME" length="50" not-null="true"></column>
</property>
<property name="password" type="String">
<column name="PASSWORD" length="50" not-null="true"></column>
</property>
</class>
</hibernate-mapping>

解决方案 »

  1.   

    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 org.apache.struts.validator.DynaValidatorForm;import com.test.Hibernate.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;
    String username = loginForm.getString("username");
    String password = loginForm.getString("password");
    if (userDao.isValidUser(username, password)) {
    request.setAttribute("user", username);
    return mapping.findForward("indexGo");
    } else {
    return mapping.getInputForward();
    }
    }
    }package com.test.Hibernate;import java.io.Serializable;public abstract class AbstractUser implements Serializable { private int hashValue = 0;

    private Integer id;

    private String username;

    private String password; public AbstractUser() {
    } public AbstractUser(String username, String password) {
    super();
    this.username = username;
    this.password = password;
    } public AbstractUser(Integer id) {
    this.setId(id);
    } public Integer getId() {
    return id;
    } public void setId(Integer id) {
    this.id = id;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    }

    public boolean equals(Object rhs) {
    if (rhs == null) {
    return false;
    }
    if (!(rhs instanceof User)) {
    return false;
    }
    User that = (User) rhs;
    if (this.getId() == null || that.getId() == null) {
    return false;
    }
    return (this.getId().equals(that.getId()));
    }

    public int hashCode() {
    if (this.hashValue == 0) {
    int result = 17;
    int idValue = this.getId() == null ? 0 : this.getId().hashCode();
    result = result * 37 + idValue;
    this.hashValue = result;
    }
    return this.hashValue;
    }
    }package com.test.Hibernate;import java.io.Serializable;public class User extends AbstractUser implements Serializable { public User() {
    super();
    // TODO Auto-generated constructor stub
    } public User(Integer id) {
    super(id);
    // TODO Auto-generated constructor stub
    }}
      

  2.   

    package com.test.Hibernate;import java.util.List;import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.hibernate.criterion.Example;
    import org.springframework.context.ApplicationContext;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class UserDAO extends HibernateDaoSupport { private static final Log log = LogFactory.getLog(UserDAO.class);

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

    protected void initDao() {

    }

    public boolean isValidUser(String username, String password) {

    System.out.println("in UserDAO IsValid");

    String[] userlist = new String[2];
    userlist[0] = username;
    userlist[1] = password;

    List userList = this.getHibernateTemplate().find(hql, userlist);

    if (userList.size() == 0) {
    return true;
    }

    return false;
    }

    public void save(User trasientInstance) {
    log.debug("saving User instance");
    try {
    getHibernateTemplate().saveOrUpdate(trasientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }

    public void delete(User persistentInstance) {
    log.debug("deleting User instance");
    try {
    getHibernateTemplate().delete(persistentInstance);
    log.debug("delete successful");
    } catch (RuntimeException re) {
    log.error("delete failed", re);
    throw re;
    }
    }

    public User findById(Integer id) {
    log.debug("getting User instance with id : " + id);
    try {
    User instance = (User) getHibernateTemplate().get("User", id);
    return instance;
    } catch (RuntimeException re) {
    log.error("get failed", re);
    throw re;
    }
    }

    public List findByExample(User instance) {
    log.debug("finding User instance by example");
    try {
    List results = getSession().createCriteria("User").add(Example.create(instance)).list();
    log.debug("find by example successful, result size : " + results.size());
    return results;
    } catch (RuntimeException re) {
    log.error("find by example failed", re);
    throw re;
    }
    }

    public User merge(User detachedInstance) {
    log.debug("merging User instance");
    try {
    User result = (User)getHibernateTemplate().merge(detachedInstance);
    log.debug("merge successful");
    return result;
    } catch (RuntimeException re) {
    log.error("merge failed", re);
    throw re;
    }
    }

    public void attachDirty(User instance) {
    log.debug("attaching dirty User instance");
    try {
    getHibernateTemplate().saveOrUpdate(instance);
    log.debug("attach successful");
    } catch (RuntimeException re) {
    log.error("attach failed", re);
    throw re;
    }
    }

    public static UserDAO getFromApplicationContext(ApplicationContext ctx) {
    return (UserDAO) ctx.getBean("UserDao");
    }
    }
      
     
    致命的: 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:1332)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
    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:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source) 
    网上我找了一天了,有的是struts-config.xml中的路径错了
    有的是applicationContext.xml中的action路径错了
    但是我对了半天,甚至这些路径都用复制的还是不行