web.xml 2.4版本里,默认的filter只拦截request。
如果使用request.getRequestDispatcher("xx").forward(request,response),属于服务器内部forward,不会被拦截器拦截,所以你需要为filter配置拦截forward才行。
struts1用的是servlet,forward也会起作用。struts2里的filter的确是个大问题哟。
如果使用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过来的请求。
意思就是 什么样的请求 会被过滤。
除了通过路径之外还有另外的几种方式。
<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的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...
了解如何在Struts2中使用Servlet API,如RequestDispatcher、HttpServletRequest和HttpServletResponse,将有助于你在特定情况下进行更底层的控制,例如处理静态资源、转发和重定向等。 通过以上五个主题的学习,你...
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 ...
6. **URL重写和URL生成**:Servlet API提供了`RequestDispatcher`用于转发和重定向,而在Struts2中,`ActionSupport`类的`redirectAction()`和`generateUrl()`方法可以帮助我们生成和重定向到特定的Action。...
在BIRT与Struts2整合过程中,最常遇到的问题之一就是过滤器冲突。这是因为Struts2和BIRT都有自己的过滤器(例如BirtFilter),它们可能会影响到请求的处理流程,导致页面渲染或数据处理出现问题。具体表现为,BIRT的...
以下是对Struts2中几种主要结果集类型的详细说明: 1. **Dispatcher** 类型: 这是Struts2的默认结果类型,它使用Servlet的`RequestDispatcher`进行转发。当Action方法返回一个字符串,例如"success",Struts2会...
本帮助文档集合了Struts1和Struts2的API,是开发者进行Struts框架开发的重要参考资料。 Struts1是最早的版本,它的核心是ActionServlet,这是一个实现了Servlet API的控制器。ActionServlet负责接收HTTP请求,根据...
默认情况下,Struts2支持`dispatcher`结果类型,它会通过Servlet的`RequestDispatcher`将控制权传递给指定的资源。 8. **国际化支持** Struts2提供了方便的国际化功能,可以通过资源文件管理不同语言的文本。在`...
2. **转发与重定向**:在Servlet中,开发者需要使用RequestDispatcher进行请求转发或HttpServletResponse的sendRedirect方法进行重定向。在Struts中,这些操作可以通过ActionForward和ActionRedirect对象完成,更加...
如果验证失败,Struts会将错误信息存储在ActionForm的字段中,并通过RequestDispatcher转发回错误页面,显示相应的错误信息。 2. **全局异常处理**:在struts-config.xml中,我们可以定义全局的异常映射(global-...
Struts2作为一款广泛使用的Java Web应用框架,提供了多种方式来解决这一问题。 #### 二、客户端跳转与服务器端跳转的区别 根据描述中的信息,客户端跳转使用`HttpservletResponse`对象的`sendRedirect`方法实现,而...
在这个基于Struts的重定向和转发实例中,我们将探讨这两个关键概念在Web应用程序中的应用。 首先,让我们理解什么是重定向和转发: 1. **重定向(Redirect)**:在HTTP响应中,服务器向客户端发送一个302状态码,...
当使用 `dispatcher` 类型的结果时,Struts2 会在内部调用 `request.getRequestDispatcher()` 方法获取到一个 `RequestDispatcher` 对象,并通过该对象的 `forward()` 方法将请求转发到指定的页面上。具体实现逻辑...
6. Request Dispatcher:Struts1使用RequestDispatcher进行请求转发,根据struts-config.xml中的配置,将请求转发到对应的JSP页面或者其他的Action。 7. 错误处理与国际化:Struts1支持国际化的错误消息显示,通过...
在Struts应用中,你可以通过在ActionForm或Action类中定义验证规则,然后使用Commons-Validate.jar来执行这些规则,确保用户输入的数据有效和安全。这在处理用户提交的表单数据时非常有用,可以避免因为非法数据引发...
Struts通过RequestDispatcher将Action的结果转发到相应的JSP页面,JSP再根据ActionForm中的数据渲染页面。 六、国际化与本地化 Struts支持多语言环境,通过资源包(Properties文件)管理不同语言的文本,使应用程序...
在自制的Struts中,你可以创建一个`Dispatcher`类,它接受请求和Action结果,然后使用`RequestDispatcher`的`forward()`方法将请求转发到相应的资源。反射在这里可以用来动态地查找和调用这个`Dispatcher`。 在实际...
Servlet是Java Web开发中的一个重要组件,它用于接收和响应客户端的HTTP请求。Struts1是Apache组织开发...实际开发中,虽然Struts1已经被Struts2和其他现代框架取代,但了解其工作原理对理解和使用其他框架仍然有裨益。
Struts通过RequestDispatcher或ActionForward将控制权传递给JSP页面,JSP页面可以通过EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来访问Action中的属性。 7. **测试**:可能包括...