Struts1.x 的xml配置

1.新建一个web项目并加入Struts1.x的依赖库。

引用

    commons-beanutils-1.8.0.jar: 动态的获取/设值Java Bean的属性
    commons-digester-1.8.jar: 基于规则的XML文档解析,主要用于XML到Java对象的映射
    commons-fileupload-1.1.1.jar: struts中上传文件要用到
    commons-validator-1.3.1.jar: struts的验证框架
    commons-logging-1.0.4.jar:日志处理
    commons-chain-1.2.jar: 处理HTTP请求处理的基础机制
    struts-core-1.3.10.jar: struts的核心库
    struts-extras-1.3.10.jar: struts的扩展库
    oro-2.0.8.jar: 文本处理工具
    antlr-2.7.2.jar:语法分析器


2.配置web.xml文件


Java 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <welcome-file-list>  
  7.         <welcome-file>index.jsp</welcome-file>  
  8.     </welcome-file-list>  
  9.     <!-- Standard Action Servlet Configuration -->  
  10.     <servlet>  
  11.         <servlet-name>action</servlet-name>  
  12.         <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
  13.         <!-- 以 下的几个init-param都可以不用配置 -->  
  14.         <init-param>  
  15.             <!--  
  16.                 缺 省情况下就是/WEB-INF/struts-config.xml,可以不用配置,只有当文件名称不是struts-config.xml或路径不在 WEB-INF下时需要配置  
  17.             -->  
  18.             <param-name>config</param-name>  
  19.             <param-value>/WEB-INF/struts-config.xml</param-value>  
  20.         </init-param>  
  21.         <init-param>  
  22.             <!-- 表 示对servlet日志输出的等级 -->  
  23.             <param-name>debug</param-name>  
  24.             <param-value>2</param-value>  
  25.         </init-param>  
  26.         <!-- 最 好留着,表示Servlet的初始化时间,在这里表示在tomcat启动的时候进行初始化 -->  
  27.         <load-on-startup>2</load-on-startup>  
  28.     </servlet>  
  29.   
  30.   
  31.     <!-- Standard Action Servlet Mapping -->  
  32.     <!-- 表 示servlet接收*.do的请求 -->  
  33.     <servlet-mapping>  
  34.         <servlet-name>action</servlet-name>  
  35.         <url-pattern>*.do</url-pattern>  
  36.     </servlet-mapping>  
  37. </web-app>  

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- Standard Action Servlet Configuration -->
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		<!-- 以下的几个init-param都可以不用配置 -->
		<init-param>
			<!--
				缺省情况下就是/WEB-INF/struts-config.xml,可以不用配置,只有当文件名称不是struts-config.xml或路径不在WEB-INF下时需要配置
			-->
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<!-- 表示对servlet日志输出的等级 -->
			<param-name>debug</param-name>
			<param-value>2</param-value>
		</init-param>
		<!-- 最好留着,表示Servlet的初始化时间,在这里表示在tomcat启动的时候进行初始化 -->
		<load-on-startup>2</load-on-startup>
	</servlet>


	<!-- Standard Action Servlet Mapping -->
	<!-- 表示servlet接收*.do的请求 -->
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>


3.在WEB-INF下加入struts-config.xml文件


Java 代码
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <!DOCTYPE struts-config PUBLIC  
  3.           "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"  
  4.           "http://struts.apache.org/dtds/struts-config_1_3.dtd">  
  5. <struts-config>  
  6.     <form-beans>  
  7.         <form-bean name="loginForm" type="com.yx.zzg.form.LoginActionForm" />  
  8.     </form-beans>  
  9.     <!-- 配 置全局的转向,如果全局转向和局部转向都配有,会先找局部转向,局部转向没有找到才会去找全局转向 -->  
  10.     <!--    
  11.     <global-forwards>  
  12.         <forward name="failure" path="/failure.jsp" />  
  13.     </global-forwards>  
  14.     -->  
  15.     <action-mappings>  
  16.         <!-- path 定义action的名字,一定要以“/”开头 -->  
  17.         <!-- type 指定action类的完整路径 -->  
  18.         <!-- name指定用的是哪个 ActionForm -->  
  19.         <!--  
  20.             struts 默认ActionForm放在session范围内,这里需要通过scope手动指定成request,所以在前台可以通过<%  
  21.             LoginActionForm  
  22.             laf=(LoginActionForm)request.getAttribute("loginForm");  
  23.             %> 拿到ActionForm  
  24.         -->  
  25.         <!-- 指 定ActionForm中的validate是否执行,默认情况下是执行的 -->  
  26.         <!--  
  27.             attribute 如果没有设置,在前台获取ActionForm就通过ActionForm的name来获取,如果设置了attribute就通过attribute的值 来获取  
  28.         -->  
  29.         <action path="/login" type="com.yx.zzg.action.LoginAction"  
  30.             name="loginForm" scope="request" validate="false" attribute="loginForm">  
  31.             <!-- 配 置转向,redirect属性默认为false,表示是请求转发,如果将其设置 为true则表示重定向 -->  
  32.             <forward name="success" path="/success.jsp" />  
  33.             <forward name="failure" path="/failure.jsp" />  
  34.         </action>  
  35. <!--  
  36.             指 定访问不存在页面,当访问一个不存在的页面时会跳到unknown.jsp页面,只对.do的 请求其作用。forward属性通常使用在没有具体的action实现的情况下,如一个转向  
  37.         -->  
  38.         <action path="/unknown" forward="/unknown.jsp" unknown="true" />  
  39.     </action-mappings>  
  40. </struts-config>  

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
		<form-bean name="loginForm" type="com.yx.zzg.form.LoginActionForm" />
	</form-beans>
	<!-- 配置全局的转向,如果全局转向和局部转向都配有,会先找局部转向,局部转向没有找到才会去找全局转向 -->
	<!--  
	<global-forwards>
		<forward name="failure" path="/failure.jsp" />
	</global-forwards>
	-->
	<action-mappings>
		<!-- path定义action的名字,一定要以“/”开头 -->
		<!-- type指定action类的完整路径 -->
		<!-- name指定用的是哪个ActionForm -->
		<!--
			struts默认ActionForm放在session范围内,这里需要通过scope手动指定成request,所以在前台可以通过<%
			LoginActionForm
			laf=(LoginActionForm)request.getAttribute("loginForm");
			%>拿到ActionForm
		-->
		<!-- 指定ActionForm中的validate是否执行,默认情况下是执行的 -->
		<!--
			attribute如果没有设置,在前台获取ActionForm就通过ActionForm的name来获取,如果设置了attribute就通过attribute的值来获取
		-->
		<action path="/login" type="com.yx.zzg.action.LoginAction"
			name="loginForm" scope="request" validate="false" attribute="loginForm">
			<!-- 配置转向,redirect属性默认为false,表示是请求转发,如果将其设置为true则表示重定向 -->
			<forward name="success" path="/success.jsp" />
			<forward name="failure" path="/failure.jsp" />
		</action>
<!--
			指定访问不存在页面,当访问一个不存在的页面时会跳到unknown.jsp页面,只对.do的请求其作用。forward属性通常使用在没有具体的action实现的情况下,如一个转向
		-->
		<action path="/unknown" forward="/unknown.jsp" unknown="true" />
	</action-mappings>
</struts-config>


4.编写ActionForm类


Java 代码
  1. package com.yx.zzg.form;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.apache.struts.action.ActionErrors;  
  6. import org.apache.struts.action.ActionForm;  
  7. import org.apache.struts.action.ActionMapping;  
  8.   
  9. /** 
  10.  * 登 录的ActionForm. 
  11.  * ActionForm 是做数据收集的 
  12.  * ActionForm 中的属性必须和表单输入域的名称一致 
  13.  * @author toshiba 
  14.  * 
  15.  */  
  16. public class LoginActionForm extends ActionForm {  
  17.   
  18.     private String username;  
  19.   
  20.     private String password;  
  21.   
  22.     public String getUsername() {  
  23.         return username;  
  24.     }  
  25.   
  26.     public void setUsername(String username) {  
  27.         this.username = username;  
  28.     }  
  29.   
  30.     public String getPassword() {  
  31.         return password;  
  32.     }  
  33.   
  34.     public void setPassword(String password) {  
  35.         this.password = password;  
  36.     }  
  37.   
  38.     @Override  
  39.     public void reset(ActionMapping mapping, HttpServletRequest request) {  
  40.         System.out.println("----------LoginActionForm.reset()---------");  
  41.     }  
  42.   
  43.     @Override  
  44.     public ActionErrors validate(ActionMapping mapping,  
  45.             HttpServletRequest request) {  
  46.         System.out.println("----------LoginActionForm.validate()---------");  
  47.         return null;  
  48.     }  
  49.   
  50. }  

package com.yx.zzg.form;

import javax.servlet.http.HttpServletRequest;

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

/**
 * 登录的ActionForm.
 * ActionForm是做数据收集的
 * ActionForm中的属性必须和表单输入域的名称一致
 * @author toshiba
 *
 */
public class LoginActionForm extends ActionForm {

	private String username;

	private String password;

	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;
	}

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

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		System.out.println("----------LoginActionForm.validate()---------");
		return null;
	}

}


5.编写异常类


Passworderrorexception.java 代码
  1. package com.yx.zzg.exception;  
  2.   
  3. public class PasswordErrorException extends RuntimeException {  
  4.   
  5. }  

package com.yx.zzg.exception;

public class PasswordErrorException extends RuntimeException {

}

Usernotfoundexception.java 代码
  1. package com.yx.zzg.exception;  
  2.   
  3. public class UserNotFoundException extends RuntimeException {  
  4.   
  5. }  

package com.yx.zzg.exception;

public class UserNotFoundException extends RuntimeException {

}


6.编写业务类


Java 代码
  1. package com.yx.zzg.service;  
  2.   
  3. import com.yx.zzg.exception.PasswordErrorException;  
  4. import com.yx.zzg.exception.UserNotFoundException;  
  5.   
  6. public class UserManager {  
  7.     private static UserManager instance=new UserManager();  
  8.     private UserManager(){  
  9.           
  10.     }  
  11.     public static UserManager getInstance(){  
  12.         return instance;  
  13.     }  
  14.       
  15.     public void login(String username,String password){  
  16.         if(!"zzg".equals(username)){  
  17.             throw new UserNotFoundException();  
  18.         }  
  19.         if(!"zzg".equals(password)){  
  20.             throw new PasswordErrorException();  
  21.         }  
  22.     }  
  23.   
  24. }  

package com.yx.zzg.service;

import com.yx.zzg.exception.PasswordErrorException;
import com.yx.zzg.exception.UserNotFoundException;

public class UserManager {
	private static UserManager instance=new UserManager();
	private UserManager(){
		
	}
	public static UserManager getInstance(){
		return instance;
	}
	
	public void login(String username,String password){
		if(!"zzg".equals(username)){
			throw new UserNotFoundException();
		}
		if(!"zzg".equals(password)){
			throw new PasswordErrorException();
		}
	}

}


7.编写Action类


Java 代码
  1. package com.yx.zzg.action;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.apache.struts.action.Action;  
  7. import org.apache.struts.action.ActionForm;  
  8. import org.apache.struts.action.ActionForward;  
  9. import org.apache.struts.action.ActionMapping;  
  10.   
  11. import com.yx.zzg.exception.PasswordErrorException;  
  12. import com.yx.zzg.exception.UserNotFoundException;  
  13. import com.yx.zzg.form.LoginActionForm;  
  14. import com.yx.zzg.service.UserManager;  
  15.   
  16. public class LoginAction extends Action {  
  17.   
  18.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  19.             HttpServletRequest request, HttpServletResponse response)  
  20.             throws Exception {  
  21.         String errorInfo="";  
  22.         LoginActionForm laf = (LoginActionForm) form;  
  23.         String username = laf.getUsername();  
  24.         String password = laf.getPassword();  
  25. //      if ("zzg".equals(username) && "zzg".equals(password)) {  
  26. //          request.setAttribute("username", username);  
  27. //          return mapping.findForward("success");  
  28. //      } else {  
  29. //          return mapping.findForward("failure");  
  30. //      }  
  31.         try{  
  32.             UserManager.getInstance().login(username, password);  
  33.             //request.setAttribute("username", username);  
  34.                         return mapping.findForward("success");  
  35.         }catch(UserNotFoundException fnfe){  
  36.             fnfe.printStackTrace();  
  37.             errorInfo="用户名无效";  
  38.         }catch(PasswordErrorException pee){  
  39.             pee.printStackTrace();  
  40.             errorInfo="密码错误";  
  41.         }  
  42.         request.setAttribute("errorInof", errorInfo);  
  43.         return mapping.findForward("failure");  
  44.     }  
  45.   
  46. }  

package com.yx.zzg.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.yx.zzg.exception.PasswordErrorException;
import com.yx.zzg.exception.UserNotFoundException;
import com.yx.zzg.form.LoginActionForm;
import com.yx.zzg.service.UserManager;

public class LoginAction extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String errorInfo="";
		LoginActionForm laf = (LoginActionForm) form;
		String username = laf.getUsername();
		String password = laf.getPassword();
//		if ("zzg".equals(username) && "zzg".equals(password)) {
//			request.setAttribute("username", username);
//			return mapping.findForward("success");
//		} else {
//			return mapping.findForward("failure");
//		}
		try{
			UserManager.getInstance().login(username, password);
			//request.setAttribute("username", username);
                        return mapping.findForward("success");
		}catch(UserNotFoundException fnfe){
			fnfe.printStackTrace();
			errorInfo="用户名无效";
		}catch(PasswordErrorException pee){
			pee.printStackTrace();
			errorInfo="密码错误";
		}
		request.setAttribute("errorInof", errorInfo);
		return mapping.findForward("failure");
	}

}


6.登录测试页面


Java 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <html>  
  3.     <head>  
  4.         <title> 登录</title>  
  5.     </head>  
  6.   
  7.     <body>  
  8.         <form action="login.do" method="post">  
  9.             用 户名:  
  10.             <input name="username" type="text" />  
  11.             密 码:  
  12.             <input name="password" type="password" />  
  13.             <input type="submit" value=" 登录" />  
  14.         </form>  
  15.     </body>  
  16. </html> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值