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>
分享到:
相关推荐
在`DispatchAction`中,每个子方法对应于一个特定的业务操作,这使得代码结构更加清晰,便于维护和扩展。测试`DispatchAction`时,通常会使用JUnit,模拟HTTP请求参数,并对每个子方法进行单元测试,确保它们都能...
在"struts1整合spring 通过代理RequestProcessor实现"这个主题中,核心思想是利用Spring的AOP(面向切面编程)能力,对Struts1的RequestProcessor进行代理,以此来增强或扩展RequestProcessor的功能。...
在`struts-config.xml`中可以指定自定义的RequestProcessor类,例如`strutsregprj.MyRequestProcessor`。这样,你可以通过覆盖`processPreprocess()`等方法来自定义请求处理流程。 #### 6. 控制器配置 在`struts-...
开发者可以自定义RequestProcessor以扩展其功能。 总的来说,Struts1 API帮助文档覆盖了框架的所有关键组件和机制,包括但不限于Action、ActionForm、ActionMapping、ActionForward、RequestProcessor、Validator...
2. **测试环境准备**:MockStrutsTestCase会自动配置一个模拟的Servlet环境,包括ActionServlet、RequestProcessor和ActionMapping等。你需要在测试类中指定待测试的Action类,通常通过覆盖`getActionClass()`方法...
给定的部分代码示例展示了一个自定义的`SelfRequestProcessor`类,该类继承自`RequestProcessor`,并在处理请求前对请求中的字符编码进行了设置。 #### SelfRequestProcessor类详解 ```java import org.apache....
2. **ActionServlet的角色**:ActionServlet是Struts框架的控制器,它是一个实现了HttpServlet接口的类,负责处理HTTP请求。ActionServlet通过doGet()和doPost()方法来接收HTTP的GET和POST请求,这些方法进一步调用...
开发者可以通过自定义RequestProcessor来扩展或修改其行为。 4. **Tiles框架集成**: Struts可以与Tiles框架集成,使得视图布局更加灵活和可重用。Tiles定义了模板和定义,用于构建复杂的页面结构。 5. **Action...
简介: 我看到很多项目中,开发者实现了自己的MVC... 1、PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己的PlugIn类。 2、RequestProcessor:如果你想在请求被处理的过程
2. **创建自定义RequestProcessor**:继承`org.apache.struts.action.RequestProcessor`,但通常这个类不需要额外的处理逻辑,只是为了指定每个模块使用的RequestProcessor。 3. **配置struts-config-module1.xml**...
开发者可以自定义RequestProcessor来扩展其功能。 6. **Tiles**:在Struts中,Tiles组件用于构建复杂的布局和模板,它允许开发者创建可重用的页面片段,提高了视图层的灵活性。 7. **国际化和本地化**:Struts支持...
RequestProcessor 扩展功能 RequestProcessor 是 TERASOLUNA 中用于处理 HTTP 请求的核心组件。扩展功能使得开发者可以根据业务需求自定义处理逻辑,增强系统的灵活性和适应性。 ### 5. 消息扩展功能 消息扩展...
7. **RequestProcessor**:每个 Struts 应用都有一个或多个 RequestProcessor 类,它们负责处理请求并调用相应的 Action。默认情况下,所有的请求都会经过 `org.apache.struts.action.RequestProcessor`。 8. **...
7. **RequestProcessor**:请求处理器负责初始化Struts框架,处理请求并调用ActionServlet。 8. **Tiles**:Tiles是Struts的一个扩展,提供了一种更灵活的方式来组织和组合页面布局。它允许将一个大的页面拆分为多...
开发者可以通过扩展ActionServlet类来实现自定义功能,例如解决中文乱码问题。示例代码展示了如何设置请求和响应的字符编码: ```java protected void process(HttpServletRequest request, HttpServletResponse ...
5. **RequestProcessor**:RequestProcessor 类负责处理 HTTP 请求,它会根据配置文件中的设置决定哪个 Action 将被调用。 6. **ActionForward**:ActionForward 用于指定执行 Action 后的页面跳转,它可以是相对...
Struts 是一个经典的Java Web开发框架,用于构建基于MVC(模型-视图-控制器)架构的Web应用程序。...在实际开发中,开发者可以通过配置struts-config.xml文件和编写Action类,灵活地构建和扩展应用程序。
Struts 为许多组件提供了可扩展接口,如 ActionServlet、RequestProcessor 等,允许开发人员替换默认实现以满足特定需求。不过,过度扩展可能导致代码复杂性增加和维护难度提升。因此,首先应充分利用 Struts 的现有...