如何使用Struts2框架发布webService

2025-09-11 12:54:44

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配置

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢