如何使用Struts2框架发布webService

2024-10-14 22:05:47

1、使用Struts2框架创建一个web工程,引入webservice所需的jar包,我用的是cxf的jar包,

2、关于Struts2和webService的整合核心是对于StrutsPrepareAndExecuteFilter这个类的修改,使访问webservice的地址能够继续访问servlet.

3、web.xml的修改。<filter> <filter-name>struts2</filter-name> <filter-class>com.synjones.filter.ExtendStrutsFilter</filter-class></filter<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping><servlet> <servlet-name>CXF</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class</servlet> <servlet-mapping <servlet-name>CXF</servlet-name> <url-pattern>/ws/*</url-pattern></servlet-mapping>

4、自定义过滤器StrutsPrepareAndExecuteFilterimport java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;public class ExtendStrutsFilter extends StrutsPrepareAndExecuteFilter{ public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; //不过滤的url,可以自行添加 if (request.getRequestURI().contains("/ws")) { //System.out.println("使用自定义的过滤器"); chain.doFilter(req, res); }else{ //System.out.println("使用默认的过滤器"); super.doFilter(request, res, chain); } } }

5、其它的设置按照正常的webservice配置

猜你喜欢