日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使Struts2与Servlet并存解决办法 Filter转发Servlet

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使Struts2与Servlet并存解决办法 Filter转发Servlet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決辦法:
在Struts2過濾器前增加一個過濾器,使用過濾器轉發到servlet上

Web.xml

<filter>
<filter-name>JSONRPCServlet</filter-name>
<filter-class>filters.ReDispatcherFilter</filter-class>
<init-param>
<param-name>includeServlets</param-name>
<param-value>JRPC</param-value>
<!--注:JRPC為下文配置的Servlet JSONRPCServlet過濾的請求配置 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>JSONRPCServlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--注:這里同樣需要Servlet配置,Filter會轉到該Servlet上-->
<servlet>
<servlet-name>JSONRPCServlet</servlet-name>
<servlet-class>
jcore.jsonrpc.servlet.JSONRPCServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JSONRPCServlet</servlet-name>
<url-pattern>/JRPC</url-pattern>
</servlet-mapping>

過濾器的實現類:

package filters;
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 {
public void destroy() {
// TODO Auto-generated method stub
}
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);
//System.out.println(target);
if (this.includes.contains(target)) {
RequestDispatcher rdsp = request.getRequestDispatcher(target);
//System.out.println("go..............." + rdsp);
rdsp.forward(req, resp);
} else
chain.doFilter(req, resp);
}
private ArrayList<String> includes = new ArrayList<String>();
public void init(FilterConfig config) throws ServletException {
this.includes.addAll(Arrays.asList(config.getInitParameter(
"includeServlets").split(",")));
}
}

尚存疑問:
jcore.jsonrpc.servlet.JSONRPCServlet是做什么的????

?

來源:
http://www.cnblogs.com/jifeng/archive/2010/08/28/1810706.html

?

轉載于:https://www.cnblogs.com/zjstar12/archive/2012/02/07/2341019.html

總結

以上是生活随笔為你收集整理的使Struts2与Servlet并存解决办法 Filter转发Servlet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。