我不太熟悉servlet链接的实现细节,但是这是一种可行的通用方法。将两个servlet映射到不同的URL:
<servlet-mapping> <servlet-name>process</servlet-name> <url-pattern>/process</url-pattern></servlet-mapping><servlet-mapping> <servlet-name>translate</servlet-name> <url-pattern>/translate</url-pattern></servlet-mapping>
然后将过滤器映射到
processservlet:
<filter-mapping> <filter-name>processChain</filter-name> <servlet-name>process</servlet-name></filter-mapping>
该
processChain过滤器会做这样的事情:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ServletResponseWrapper processResponse = ...; // response buffer chain.doFilter(request, processResponse); // let process servlet populate response buffer ServletRequestWrapper processResponseAsRequest = ...; // use processResponse to create request for translate servlet RequestDispatcher dispatch = request.getRequestDispatcher("/translate"); dispatch.forward(processResponseAsRequest, response); // forward to translate servlet with response from process servlet as the request and the original response}…或类似的东西 ;)



