`
shuai1234
  • 浏览: 977927 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

struts2中RequestDispatcher问题

    博客分类:
  • java
 
阅读更多
web.xml 2.4版本里,默认的filter只拦截request。 
如果使用request.getRequestDispatcher("xx").forward(request,response),属于服务器内部forward,不会被拦截器拦截,所以你需要为filter配置拦截forward才行。 

struts1用的是servlet,forward也会起作用。struts2里的filter的确是个大问题哟。
用filter配置拦截fowward要写成
 
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
     <dispatcher>FORWARD</dispatcher>
   </filter-mapping>
 
在servlet 2.4之后的规范中,加入了对 filter-mapping的dispatch的规范。 

意思就是 什么样的请求 会被过滤。 

除了通过路径之外还有另外的几种方式。 

<filter-mapping> 
        <filter-name>struts2Filter</filter-name> 
        <url-pattern>*.action</url-pattern> 
        <dispatcher>REQUEST</dispatcher> 
        <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

这个意思就是,以*.action结尾的请求,并且是通过request dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。 

除了这个之外, 

filter 

可以作用于直接从客户端过来的request,对应dispatch为REQUEST,默认是这个 

通过forward过来的request,lz的例子就是这个意思。 

通过include过来的request,处理通过request dispatcher的include方法传递过来的请求。 

通过<error-page>过来的request。 

具体LZ可以看下servlet 2.4的specification。 

一般都是不写,使用默认值,也就是request过来的请求。 
 
分享到:
评论

相关推荐

    Struts2中Servlet的配置

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

    Struts2 学习 2

    了解如何在Struts2中使用Servlet API,如RequestDispatcher、HttpServletRequest和HttpServletResponse,将有助于你在特定情况下进行更底层的控制,例如处理静态资源、转发和重定向等。 通过以上五个主题的学习,你...

    Struts2 in action中文版

    6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...

    Struts2 part 3:在Action中使用ServletAPI

    6. **URL重写和URL生成**:Servlet API提供了`RequestDispatcher`用于转发和重定向,而在Struts2中,`ActionSupport`类的`redirectAction()`和`generateUrl()`方法可以帮助我们生成和重定向到特定的Action。...

    Birt 与 Struts2 整合

    在BIRT与Struts2整合过程中,最常遇到的问题之一就是过滤器冲突。这是因为Struts2和BIRT都有自己的过滤器(例如BirtFilter),它们可能会影响到请求的处理流程,导致页面渲染或数据处理出现问题。具体表现为,BIRT的...

    在Struts2中的结果集类型

    以下是对Struts2中几种主要结果集类型的详细说明: 1. **Dispatcher** 类型: 这是Struts2的默认结果类型,它使用Servlet的`RequestDispatcher`进行转发。当Action方法返回一个字符串,例如"success",Struts2会...

    struts1和struts2 帮助文档

    本帮助文档集合了Struts1和Struts2的API,是开发者进行Struts框架开发的重要参考资料。 Struts1是最早的版本,它的核心是ActionServlet,这是一个实现了Servlet API的控制器。ActionServlet负责接收HTTP请求,根据...

    Struts2 Example

    默认情况下,Struts2支持`dispatcher`结果类型,它会通过Servlet的`RequestDispatcher`将控制权传递给指定的资源。 8. **国际化支持** Struts2提供了方便的国际化功能,可以通过资源文件管理不同语言的文本。在`...

    Struts与Servlete的Demo

    2. **转发与重定向**:在Servlet中,开发者需要使用RequestDispatcher进行请求转发或HttpServletResponse的sendRedirect方法进行重定向。在Struts中,这些操作可以通过ActionForward和ActionRedirect对象完成,更加...

    struts错误处理机制小例子

    如果验证失败,Struts会将错误信息存储在ActionForm的字段中,并通过RequestDispatcher转发回错误页面,显示相应的错误信息。 2. **全局异常处理**:在struts-config.xml中,我们可以定义全局的异常映射(global-...

    Struts2防止重复提交的解决方案

    Struts2作为一款广泛使用的Java Web应用框架,提供了多种方式来解决这一问题。 #### 二、客户端跳转与服务器端跳转的区别 根据描述中的信息,客户端跳转使用`HttpservletResponse`对象的`sendRedirect`方法实现,而...

    一个基于struts的重定向和转发实例

    在这个基于Struts的重定向和转发实例中,我们将探讨这两个关键概念在Web应用程序中的应用。 首先,让我们理解什么是重定向和转发: 1. **重定向(Redirect)**:在HTTP响应中,服务器向客户端发送一个302状态码,...

    struts2结果类型

    当使用 `dispatcher` 类型的结果时,Struts2 会在内部调用 `request.getRequestDispatcher()` 方法获取到一个 `RequestDispatcher` 对象,并通过该对象的 `forward()` 方法将请求转发到指定的页面上。具体实现逻辑...

    struts1写的登陆页面,非常适合初学者

    6. Request Dispatcher:Struts1使用RequestDispatcher进行请求转发,根据struts-config.xml中的配置,将请求转发到对应的JSP页面或者其他的Action。 7. 错误处理与国际化:Struts1支持国际化的错误消息显示,通过...

    struts示例

    在Struts应用中,你可以通过在ActionForm或Action类中定义验证规则,然后使用Commons-Validate.jar来执行这些规则,确保用户输入的数据有效和安全。这在处理用户提交的表单数据时非常有用,可以避免因为非法数据引发...

    Struts中文手册

    Struts通过RequestDispatcher将Action的结果转发到相应的JSP页面,JSP再根据ActionForm中的数据渲染页面。 六、国际化与本地化 Struts支持多语言环境,通过资源包(Properties文件)管理不同语言的文本,使应用程序...

    利用反射 实现一个自制的struts

    在自制的Struts中,你可以创建一个`Dispatcher`类,它接受请求和Action结果,然后使用`RequestDispatcher`的`forward()`方法将请求转发到相应的资源。反射在这里可以用来动态地查找和调用这个`Dispatcher`。 在实际...

    servlet模拟struts1工作原理

    Servlet是Java Web开发中的一个重要组件,它用于接收和响应客户端的HTTP请求。Struts1是Apache组织开发...实际开发中,虽然Struts1已经被Struts2和其他现代框架取代,但了解其工作原理对理解和使用其他框架仍然有裨益。

    struts和hibernate的一个小项目

    Struts通过RequestDispatcher或ActionForward将控制权传递给JSP页面,JSP页面可以通过EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来访问Action中的属性。 7. **测试**:可能包括...

Global site tag (gtag.js) - Google Analytics