这次开发项目中用的是Struts1,没办法,现在只能学习Struts1的相关知识。
web.xml
<? xml version ="1.0" encoding ="UTF-8" ?>
< web-app xmlns ="http://java.sun.com/xml/ns/javaee"
                     xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                     version ="2.5" >

         < 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 >
                 < load-on-startup >2 </ load-on-startup >
         </ servlet >
         < servlet-mapping >
                 < servlet-name >action </ servlet-name >
                 < url-pattern >*.do </ url-pattern >
         </ servlet-mapping >
</ web-app >

struts-confg.xml
<? xml version ="1.0" encoding ="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
                "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
                "http://struts.apache.org/dtds/struts-config_1_2.dtd">

< struts-config >

        <!-- 注册ActionForm-->
         < form-beans >
                <!-- name:名称    type:类路径-->
                 < form-bean name ="loginForm" type ="com.login.LoginForm" > </ form-bean >
         </ form-beans >

         <!-- 设置URL逻辑名称(全局),而且必须写在Action前面,任何Action都可以识别-->
         < global-forwards >
                 < forward name ="result" path ="/result.jsp" > </ forward >
         </ global-forwards >

        <!-- 注册Action-->
         < action-mappings >
                <!-- name:名称 type:类路径 path:客户端提交到服务器端时制定的路径(Form表单中的action="/login.do")-->
                 < action path ="/login" type ="com.login.LoginAction" name ="loginForm" scope ="request" >
                        <!-- 设置URL逻辑名称(局部),只有这个Action可以识别到,然后将结果返回到指定的页面-->
                         < forward name ="success" path ="/login_success.jsp" > </ forward >
                         < forward name ="error" path ="/login_error.jsp" > </ forward >
                 </ action >

                 < action path ="/beanWrite" type ="com.tag.BeanWriteAction" >
                         < forward name ="success" path ="/tag_beanwrite.jsp" > </ forward >
                 </ action >

                 < action path ="/logic" type ="com.tag.LogicAction" >
                         < forward name ="success" path ="/tag_logic.jsp" > </ forward >
                 </ action >

                 < action path ="/iterator" type ="com.tag.IteratorAction" >
                         < forward name ="success" path ="/tag_iterator.jsp" > </ forward >
                 </ action >
         </ action-mappings >

</ struts-config >
LoginAction.java
package com.login;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Created by IntelliJ IDEA.
* User: wangchenyang
* Date: 2010-11-30
* Time: 10:24:42
*负责接收ActionForm中的数据,并作出处理
* 必须继承 org.apache.struts.action.Action
* 重写execute()处理业务逻辑
* 将Action注册到配置文件中
*/

public class LoginAction extends Action {


         /**
         * ActionForward:封装了跳转目标的路径
         * mapping:访问配置文件
         * form:传过来的ActionForm对象
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return
         * @throws Exception
         */

        @Override
         public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                LoginForm lf= (LoginForm) form;
                String username=lf.getUsername();
                 //String username=request.getParameter("username");用此方法同样可以得到表单中的值,但如果用到Struts标签的话就必须用ActionForm了
                String password=lf.getPassword();
                String errorInfo="";
                 try{

                UserManager.getInstance().login(username,password);
                request.setAttribute( "username",username);
                 //跳转
                 return mapping.findForward( "success");
                } catch(UserNotFoundException unfe){
                        unfe.printStackTrace();
                        errorInfo= "用户不存在,输入的用户名=["+username+ "]";
                } catch(PasswordErrorException pee){
                        pee.printStackTrace();
                        errorInfo= "密码错误";
                }
                request.setAttribute( "errorInfo",errorInfo);
                 return mapping.findForward( "error");
                
        }
}
LoginForm.java
package com.login;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;

import javax.servlet.http.HttpServletRequest;

/**
* Created by IntelliJ IDEA.
* User: wangchenyang
* Date: 2010-11-30
* Time: 10:18:47
* 保存表单提交的值
* 必须继承 org.apache.struts.action.ActionForm
* 必须编写和表单元素同名的属性,并且要有get()何set()    比如说表单中有username何password属性
* 必须在Struts1配置文件中进行注册
*/

public class LoginForm extends ActionForm {
         private String username;

         public String getUsername() {
                 return username;
        }

         public void setUsername(String username) {
                 this.username = username;
        }

         public String getPassword() {
                 return password;
        }

         public void setPassword(String password) {
                 this.password = password;
        }

         private String password;

        @Override
         public void reset(ActionMapping mapping, HttpServletRequest request) {
                System.out.println( "----------reset()--------------");
                 super.reset(mapping,request);
        }

        @Override
         public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
                System.out.println( "-------validate()----------");
                 return super.validate(mapping, request);         //To change body of overridden methods use File | Settings | File Templates.
        }
}

UserManager.java
package com.login;

/**
* Created by IntelliJ IDEA.
* User: wangchenyang
* Date: 2010-11-30
* Time: 10:36:03
* To change this template use File | Settings | File Templates.
*/

public class UserManager {

         private static UserManager instance= new UserManager();
        
         public static UserManager getInstance() {
                 return instance;
        }

         public void login(String username,String password){
                 if(! "admin".equals(username)){
                         throw new UserNotFoundException();
                }
                 if(! "admin".equals(password)){
                         throw new PasswordErrorException();
                }
        }
}
PasswordException.java
package com.login;

/**
* Created by IntelliJ IDEA.
* User: wangchenyang
* Date: 2010-11-30
* Time: 10:39:48
* To change this template use File | Settings | File Templates.
*/

public class PasswordErrorException extends RuntimeException{
}
UserNotFoundException.java
package com.login;

/**
* Created by IntelliJ IDEA.
* User: wangchenyang
* Date: 2010-11-30
* Time: 10:39:25
* To change this template use File | Settings | File Templates.
*/

public class UserNotFoundException extends RuntimeException{
}