我正在研究一个合作医疗系统。
我的代码在url“/market”
调用的servlet的doGet()函数中。我想要一个
HttpServletRequestWrapper
,它将通过为url“/page”
设置的所有过滤器。
我希望这些过滤器会更新请求,这样注释处理器以后就可以用正确的值注入依赖项。
我在Tomcat服务器中,所以我应该能够强制转换到正确的特殊对象,而不必遵从其他服务器。
一个相关的问题是使用
req。getRequestDispatcher(路径)。转发(requestWrapper、responseWrapper)
,我希望能调用过滤器。应该吗?javadoc说:
此方法允许一个servlet对请求进行初步处理
默认情况下,过滤器仅映射到请求
调度程序。下面是过滤器映射的示例
<filter-mapping>
<filter-name>yourFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
隐式等同于
<filter-mapping>
<filter-name>yourFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
这意味着,过滤器仅在“原始”传入请求上触发,而不是在转发的请求上触发。
还有三个调度员:转发
,包含
和错误
。RequestDispatcher#forward()
触发转发
调度器。如果你想让你的过滤器也挂在上面,那么只需添加它:
<filter-mapping>
<filter-name>yourFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
请注意,您需要在此处明确指定请求
调度程序,否则它将假定您完全覆盖它,并且只对转发
调度程序感兴趣。
在过滤器内部,如果您想区分请求
和转发
,那么您可以通过确定是否存在用RequestDispatcher#FORWARD_REQUEST_URI
String forwardRequestURI = (String) request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
if (forwardRequestURI != null) {
// Forward was triggered on the given URI.
}
问题内容: 我需要从另一个Servlet调用Servlet的POST方法,并在Servlet的参数中传递一个Blob。这是可能的,如果可以的话,该怎么做。PS:我不能使用Apache HttpClient 问题答案: 您需要自己创建并发送HTTP请求。您不能使用转发/重定向/包含,因为您要将方法从GET更改为POST,并且想要发送请求。 由于显然不是HttpClient(以及其他第三方库?),您最
服务1: 服务2: 网状物xml: 我无法从servlet1调用一个到另一个servlet2我不知道在sservlet2哪里做错了,我们必须给出名称类或URL模式,请检查servlet 1的代码。
问题内容: 我想将多个值从一个servlet传递到另一个servlet。请告诉我如何通过? 问题答案: 取决于您是否使用会话: 使用session.setAttribute()将数组存储在会话变量中。 使用session.getAttribute();检索数组。 但是,变量将一直保留到会话终止,您用其他东西覆盖它或将其删除为止。 如果将一个servlet转发到另一个servlet,则可以将其存储在
问题内容: 我已经编写了REST Web服务方法,并且。以下是Web服务类`@Path(“ / service”)公共类Service { }` 在Web服务方法中,正在使用调用,而正在使用的URL是http:// localhost:8080 / xxxx / xxxx / service / val / zzzz 。zzzz是要传递的值。URL模式的和是/安全。现在,问题没有被调用,而直接调用
servlet过滤器映射中的url模式能否指向另一个域中的servlet? 在url模式中,put/*将使此筛选器应用于应用程序中的所有servlet。有没有办法在另一个域/应用程序中为servlet应用过滤器?如果是这样,我应该使用什么样的url模式。 我尝试把完整的路径到域名和servlet,但抛出一个错误,我的应用程序没有启动。
问题内容: 我有一个过滤器linkifyStuff,其中需要使用其他过滤器处理一些变量。我无法弄清楚从另一个调用一个过滤器的语法。 我了解过滤器链接-这不是我想要的。我想将过滤器应用于linkifyStuff过滤器中的局部变量,而不是其输入或输出。 我希望像下面这样工作,但是$ filter(’filtername’)显然不是正确的语法。 我可以为sanitizeStuff和sanitizeStu