`
dd350356750
  • 浏览: 75025 次
  • 性别: Icon_minigender_1
  • 来自: 怀化
社区版块
存档分类
最新评论

RequestProcessor 类的扩展

阅读更多
RequestProcessor 类的扩展

package com.bbs.struts.exts;

import java.io.UnsupportedEncodingException;

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

import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.RequestProcessor;
import org.apache.struts.config.ModuleConfig;

import com.dd.util.DBConnection;

public class ExtRequestProcessor extends RequestProcessor{

	@Override
	public void init(ActionServlet servlet, ModuleConfig moduleConfig)
			throws ServletException {
		
		//从上下文中获得数据源
		Object obj = servlet.getServletContext().getAttribute("jdbc/sql");		
		DBConnection.initDataSource(obj);
		
		super.init(servlet, moduleConfig);
	}

        /**
	 * 国际化问题解决 processLocale
	 */
	protected void processLocale(HttpServletRequest request,
			HttpServletResponse response) {

	}

	/**
	 * 设置请求时的编码
	 * */
	protected boolean processPreprocess(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		String contentType = this.moduleConfig.getControllerConfig().getContentType();
		int index = contentType.lastIndexOf("=");
		String encode = contentType.substring(index+1, contentType.length());
		try {			
			request.setCharacterEncoding(encode);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return true;
	}
	
	/**
	 * 设置响应的字符编码
	 * */
	protected void processContent(HttpServletRequest request,HttpServletResponse response) {
		String contentType = moduleConfig.getControllerConfig().getContentType();		
		response.setContentType(contentType);
	}	

      
 /*
	 * 转移ActionForm的配制文件.
          *
	 * */
	Properties prop = null;
	protected ActionForm processActionForm(HttpServletRequest request,
			HttpServletResponse response, ActionMapping mapping) {

		ActionForm instance = null;

System.out.println(mapping.getName());

		if (prop == null) {
			String path = this.getServletContext().getRealPath(
					"/WEB-INF/file.properties");
			prop = new Properties();
			try {
				InputStream ins = new FileInputStream(path);

				prop.load(ins);

				ins.close();

			} catch (Exception e) {
				e.printStackTrace();
			}

			String formName = mapping.getName();
			String className = prop.getProperty(formName);

			try {
				Object obj = Class.forName(className).newInstance();
				if (obj != null) {
					instance = (ActionForm) obj;
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		return (instance);

	}

}




当然那我想转移Action的配制文件那也可以的

struts_config.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>
  <data-sources />
  
  <form-beans/>
  <!--这里的FormBean 写在另外一个file.properties 文件以key/value 型式书写-->
  <global-exceptions />
  <global-forwards />
  
  <action-mappings>
  	<action path="/local" name="aa" type="com.dd.struts.action.DemoAction"></action>
  </action-mappings>
  
  <controller contentType="text/html;charset=GBK" processorClass="com.dd.struts.actions.ExtRequestProcessor"></controller>
  <message-resources parameter="com.dd.struts.ApplicationResources" />
</struts-config>



分享到:
评论

相关推荐

    DisapatchAction测试和RequestProcessor控制器类

    在`DispatchAction`中,每个子方法对应于一个特定的业务操作,这使得代码结构更加清晰,便于维护和扩展。测试`DispatchAction`时,通常会使用JUnit,模拟HTTP请求参数,并对每个子方法进行单元测试,确保它们都能...

    struts1整合spring 通过代理RequestProcessor实现

    在"struts1整合spring 通过代理RequestProcessor实现"这个主题中,核心思想是利用Spring的AOP(面向切面编程)能力,对Struts1的RequestProcessor进行代理,以此来增强或扩展RequestProcessor的功能。...

    struts1.2 使用流程

    在`struts-config.xml`中可以指定自定义的RequestProcessor类,例如`strutsregprj.MyRequestProcessor`。这样,你可以通过覆盖`processPreprocess()`等方法来自定义请求处理流程。 #### 6. 控制器配置 在`struts-...

    struts1 api 帮助文档

    开发者可以自定义RequestProcessor以扩展其功能。 总的来说,Struts1 API帮助文档覆盖了框架的所有关键组件和机制,包括但不限于Action、ActionForm、ActionMapping、ActionForward、RequestProcessor、Validator...

    用MockStrutsTestCase测试action测试类

    2. **测试环境准备**:MockStrutsTestCase会自动配置一个模拟的Servlet环境,包括ActionServlet、RequestProcessor和ActionMapping等。你需要在测试类中指定待测试的Action类,通常通过覆盖`getActionClass()`方法...

    java乱码编译成中文类

    给定的部分代码示例展示了一个自定义的`SelfRequestProcessor`类,该类继承自`RequestProcessor`,并在处理请求前对请求中的字符编码进行了设置。 #### SelfRequestProcessor类详解 ```java import org.apache....

    sturts运行机制

    2. **ActionServlet的角色**:ActionServlet是Struts框架的控制器,它是一个实现了HttpServlet接口的类,负责处理HTTP请求。ActionServlet通过doGet()和doPost()方法来接收HTTP的GET和POST请求,这些方法进一步调用...

    struts-api.zip

    开发者可以通过自定义RequestProcessor来扩展或修改其行为。 4. **Tiles框架集成**: Struts可以与Tiles框架集成,使得视图布局更加灵活和可重用。Tiles定义了模板和定义,用于构建复杂的页面结构。 5. **Action...

    Hibernate+Spring+Struts扩展Struts

    简介: 我看到很多项目中,开发者实现了自己的MVC... 1、PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己的PlugIn类。 2、RequestProcessor:如果你想在请求被处理的过程

    Structs多模块的配置方法.doc

    2. **创建自定义RequestProcessor**:继承`org.apache.struts.action.RequestProcessor`,但通常这个类不需要额外的处理逻辑,只是为了指定每个模块使用的RequestProcessor。 3. **配置struts-config-module1.xml**...

    精通Struts基于MVC的Java.Web设计与开发 孙卫琴 第二章源代码

    开发者可以自定义RequestProcessor来扩展其功能。 6. **Tiles**:在Struts中,Tiles组件用于构建复杂的布局和模板,它允许开发者创建可重用的页面片段,提高了视图层的灵活性。 7. **国际化和本地化**:Struts支持...

    Spring版アーキテクチャ説明書(Webブラウザ対応版)

    RequestProcessor 扩展功能 RequestProcessor 是 TERASOLUNA 中用于处理 HTTP 请求的核心组件。扩展功能使得开发者可以根据业务需求自定义处理逻辑,增强系统的灵活性和适应性。 ### 5. 消息扩展功能 消息扩展...

    struts

    7. **RequestProcessor**:每个 Struts 应用都有一个或多个 RequestProcessor 类,它们负责处理请求并调用相应的 Action。默认情况下,所有的请求都会经过 `org.apache.struts.action.RequestProcessor`。 8. **...

    struts 体系结构

    7. **RequestProcessor**:请求处理器负责初始化Struts框架,处理请求并调用ActionServlet。 8. **Tiles**:Tiles是Struts的一个扩展,提供了一种更灵活的方式来组织和组合页面布局。它允许将一个大的页面拆分为多...

    Struts1 控制器组件和动态表单详解

    开发者可以通过扩展ActionServlet类来实现自定义功能,例如解决中文乱码问题。示例代码展示了如何设置请求和响应的字符编码: ```java protected void process(HttpServletRequest request, HttpServletResponse ...

    struts1.3 api文档

    5. **RequestProcessor**:RequestProcessor 类负责处理 HTTP 请求,它会根据配置文件中的设置决定哪个 Action 将被调用。 6. **ActionForward**:ActionForward 用于指定执行 Action 后的页面跳转,它可以是相对...

    Struts_lesson3.ppt

    Struts 是一个经典的Java Web开发框架,用于构建基于MVC(模型-视图-控制器)架构的Web应用程序。...在实际开发中,开发者可以通过配置struts-config.xml文件和编写Action类,灵活地构建和扩展应用程序。

    hibernate

    Struts 为许多组件提供了可扩展接口,如 ActionServlet、RequestProcessor 等,允许开发人员替换默认实现以满足特定需求。不过,过度扩展可能导致代码复杂性增加和维护难度提升。因此,首先应充分利用 Struts 的现有...

Global site tag (gtag.js) - Google Analytics