配置Struts2后如何使用servlet
有时候,我们在配置了Struts2后还会想用servlet,但是默认是用不了的,都被struts2拦截了,并在struts.xml中匹配是否有该action
那么,如何使用呢?
1.新建一个filter,用于过滤servletimport 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 {private ArrayList<String> includes = new ArrayList<String>();@Overridepublic void destroy() {}@Overridepublic 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);if (this.includes.contains(target)) {RequestDispatcher rdsp = request.getRequestDispatcher(target);rdsp.forward(req,resp);} elsechain.doFilter(req, resp);}@Overridepublic void init(FilterConfig config) throws ServletException {this.includes.addAll(Arrays.asList(config.getInitParameter("includeServlets").split(",")));}}<filter> <filter-name>redisp</filter-name> <filter-class>com.kcjxkj.filter.ReDispatcherFilter</filter-class> <init-param> <param-name>includeServlets</param-name> <param-value>ValidateEmail</param-value> </init-param> </filter> <filter-mapping> <filter-name>redisp</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中,<param-value></param-value>中为web.xml中配置的要过滤的servlet名,多个之间用","逗号隔开