`
txf2004
  • 浏览: 7132778 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

配置Struts2后如何使用servlet

 
阅读更多

有时候,我们在配置了Struts2后还会想用servlet,但是默认是用不了的,都被struts2拦截了,并在struts.xml中匹配是否有该action

那么,如何使用呢?

1.新建一个filter,用于过滤servlet

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class ReDispatcherFilter implements Filter {
	private ArrayList<String> includes = new ArrayList<String>();

	@Override
	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		String target = request.getRequestURI();
		target = target.lastIndexOf("?") > 0 ? target.substring(
				target.lastIndexOf("/") + 1,
				target.lastIndexOf("?") - target.lastIndexOf("/")) : target
				.substring(target.lastIndexOf("/") + 1);
		if (this.includes.contains(target)) {
			RequestDispatcher rdsp = request.getRequestDispatcher(target);
			rdsp.forward(req,resp);
		} else
			chain.doFilter(req, resp);
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		this.includes.addAll(Arrays.asList(config.getInitParameter(
				"includeServlets").split(",")));
	}

}


2.在web.xml中做适当配置,在struts2的配置前加上下面的代码:

 <filter>
    <filter-name>redisp</filter-name>
    <filter-class>com.kcjxkj.filter.ReDispatcherFilter</filter-class>
    <init-param>
      <param-name>includeServlets</param-name>
      <param-value>ValidateEmail</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>redisp</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

其中,<param-value></param-value>中为web.xml中配置的要过滤的servlet名,多个之间用","逗号隔开

分享到:
评论

相关推荐

    struts2和jspServlet上传

    要使用Struts2进行文件上传,你需要在Action类中创建一个FormFile类型的属性,并在struts.xml配置文件中声明对应的接收参数。同时,需要在HTML表单中设置`enctype="multipart/form-data"`,以便支持文件上传。 接...

    Struts2中Servlet的配置

    在Struts2中,Servlet的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...

    struts2和servlet的共存问题

    但在某些场景下,开发者可能需要同时使用Struts2和其他Servlet技术(如自定义Servlet或第三方Servlet),这时就会遇到Struts2与Servlet的共存问题。 #### 二、问题描述 当Struts2作为Web应用程序的前端控制器时,...

    Struts2访问ServletAPI

    在Struts2的视图层,例如JSP中,可以使用OGNL(Object-Graph Navigation Language)表达式直接访问Servlet API。例如,`#request`代表`HttpServletRequest`,`#response`代表`HttpServletResponse`。 5. **使用...

    Struts2 直接访问Servlet API(二十五)

    - 直接使用Servlet API可能导致代码与Struts2的集成度降低,不利于维护。 - 必须确保正确处理异常,防止因直接操作HTTP响应导致的错误。 综上所述,了解如何在Struts2中直接访问Servlet API是非常有用的技能,它...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    java上传与下载——struts2和servlet案例

    本案例聚焦于使用Struts2和Servlet两种不同的技术来实现这一功能。这两个技术都是Java Servlet的重要扩展,用于增强Web应用程序的功能和用户体验。 首先,让我们深入理解Struts2框架。Struts2是一个基于MVC(Model-...

    关于struts和servlet同时用

    2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...

    Struts2之Servlet API及单元测试初识案例struts005

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    MAX的struts2教程、struts2 API、servlet API

    2. **配置与搭建**:讲解如何配置Struts2的XML配置文件,以及如何在项目中集成Struts2框架。 3. **Action与结果**:讲解如何创建Action类,处理用户请求,并返回不同的结果页面。 4. **拦截器**:介绍Struts2强大的...

    Servlet和Struts2的交互(转载)

    2. 使用Filter转发:配置Struts2的Filter在Servlet处理完请求后,将控制权交给Struts2,由Struts2来决定下一步的动作。 Struts2提供了许多强大的特性,如拦截器(Interceptor)、插件机制、OGNL表达式语言等。拦截...

    配置struts2需要的资源包

    在这个“配置struts2需要的资源包”的主题中,我们将详细探讨Struts2的核心组件、依赖库以及如何精简不必要的包。 1. **Struts2核心组件**: - **Struts2核心库**:`struts2-core.jar`包含了框架的核心功能,如...

    Servlet简单模拟Struts2

    在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...

    Struts2之Servlet文件上传详解案例struts010

    本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...

    解决struts2配置为/*之后 servlet不能使用的问题

    解决struts2配置为/*之后 servlet不能使用的问题

    Struts2 part 3:在Action中使用ServletAPI

    在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...

    struts2 Action 包 命名空间 servlet API

    配置Struts2时,通常需要在web.xml中设置FilterDispatcher,其url-pattern一般设置为"/*",确保所有请求都通过Struts2处理。Action的配置则在struts.xml或其他配置文件中定义,包括Action的名称、类、结果页面等。 ...

    eclipse for javaee配置web开发环境(struts2+servlet+sping)字体.doc

    配置Struts2** - 在项目中创建一个名为`struts.xml`的文件,放在`src`目录下。这个文件是Struts2的核心配置文件,用于定义动作和结果页面。 - 将Struts2的库文件(如struts2-core.jar)添加到`WEB-INF/lib`目录,...

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

Global site tag (gtag.js) - Google Analytics