如何使用Struts2框架发布webService
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、自定义过滤器StrutsPrepareAndExecuteFilter
import 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配置