web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>action</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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

解决方案 »

  1.   

    package action;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionServlet;
    import bussness.UserInfoBo;
    import entity.UserInfoForm;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;public final class LogonAction extends Action {  public ActionForward execute(ActionMapping mapping,
             ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response)
             throws IOException, ServletException {
        UserInfoForm userInfoForm = (UserInfoForm) form;
        //从web层获得用户名和口令
        String username = userInfoForm.getUsername().trim();
        String password = userInfoForm.getPassword().trim();
        //声明错误集对象
        ActionErrors errors = new ActionErrors();
        //声明数据源和连接对象
        DataSource dataSource;
        Connection cnn=null;    //校验输入
        if(username.equals("")){
          ActionError error=new ActionError("error.missing.username");
          errors.add(ActionErrors.GLOBAL_ERROR,error);
        }
        if(password.equals("")){
          ActionError error=new ActionError("error.missing.password");
          errors.add(ActionErrors.GLOBAL_ERROR,error);
        }    //调用业务逻辑
        if(errors.size()==0){
          String validated = "";
          try{
            //取得数据库连接
            dataSource = getDataSource(request,"A");
            cnn = dataSource.getConnection();        UserInfoBo userInfoBo=new UserInfoBo(cnn);
            validated =userInfoBo.validatePwd(username,password);
            if(validated.equals("match")){
              //一切正常就保存用户信息并转向成功的页面
              HttpSession session = request.getSession();
              session.setAttribute("userInfoForm", form);
                    return mapping.findForward("success");
            }
          }      catch(Throwable e){
            //处理可能出现的错误
            e.printStackTrace();
            ActionError error=new ActionError(e.getMessage());
            errors.add(ActionErrors.GLOBAL_ERROR,error);
          }
        }
        //如出错就转向输入页面,并显示相应的错误信息
        saveErrors(request, errors);
        return new ActionForward(mapping.getInput());
      }
    }
      

  2.   

    package bussness;import entity.UserInfoForm;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.lang.Exception;
    import db.UserInfoDao;public class UserInfoBo {
      private Connection cnn=null;  public UserInfoBo(Connection cnn){
        this.cnn=cnn;
      }  public String validatePwd(String username,String password){    String validateResult="";
       
        try{
          UserInfoDao userInfoDao = new UserInfoDao(cnn);
          validateResult=userInfoDao.validatePwd(username,password);
          if(validateResult.equals("error.logon.invalid")){
            //如果用户名与口令不匹配则报此错
            throw new RuntimeException("error.logon.invalid"); 
          }
          else if(validateResult.equals("error.removed.user")){
            //如果找不到用户则报此错,这样用户看到的出错信息会更详细
            throw new RuntimeException("error.removed.user"); 
          }
        }
        catch(Exception e){
          throw new RuntimeException(e.getMessage());
        }
        finally{
          try{
            if(cnn!=null){
              cnn.close();
            }
          }
          catch(SQLException sqle){
            sqle.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
        return validateResult;
      }
    }
      

  3.   

    检查一下你的form提交的路径对不对?
    是不是<form action="logAction.do"
    错误提示是找不到action
      

  4.   

    应该是访问页面的时候报的错.按Runningboy007(菜鸟) 朋友说的检查一下
    <form action="logonAction.do">
    是你设置的path里的值