vue与java的websevice数据交互

1.java引入cxf 的maven库


<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>3.1.6</version>

</dependency>


<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>3.1.6</version>

</dependency>

2.启动类配置过滤器

@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class,args);
    }
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(TestApplication.class);
    }

    /**
     * 配置过滤器
     *
     * @return
     */
    @Bean
    public FilterRegistrationBean someFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(customFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("customFilter");
        return registration;
    }

    /**
     * 创建一个bean
     *
     * @return
     */
    @Bean(name = "customFilter")
    public Filter customFilter() {
        return new CustomFilter();
    }
}

3.过滤器解决跨域

/**
 * 自定义过滤器
 */
@WebFilter(filterName = "customFilter", urlPatterns = "/*")
public class CustomFilter implements Filter {

	/**
	 * 封装,不需要过滤的list列表
	 */
	private static String patterns = "";

	@Override
	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
						 FilterChain chain) throws IOException, ServletException {
		HttpServletRequest httpRequest = (HttpServletRequest) request;
		HttpServletResponse httpResponse = (HttpServletResponse) response;
		httpResponse.setHeader("Access-Control-Allow-Origin", "*");
		httpResponse.setHeader("Access-Control-Allow-Methods", "POST,GET,PUT,OPTIONS,DELETE");
		httpResponse.setHeader("Access-Control-Max-Age", "3600");
		httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, token");
		String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
		if (HttpMethod.OPTIONS.toString().equals(httpRequest.getMethod())) {
			return;
		}
		chain.doFilter(httpRequest, httpResponse);
	}
}

4.webService接口和实现类


/**
 * webservice接口
 * 访问地址:http://localhost:8080/webservice/webservice?wsdl
 */
@WebService
public interface AppWebService {

    /**
     * 登录
     *
     * @return
     */
    @WebMethod
    public String loginUser(@WebParam(name = "oper_user") String oper_user, @WebParam(name = "oper_passwd") String oper_passwd,@WebParam(name = "version") String version);

}

/**
 * webservice实现类
 */
@Service
@WebService(serviceName = "AppWebService", // 与接口中指定的name一致
        targetNamespace =  "http://appWebService.cbb.com", // 与接口中的命名空间一致,一般是接口的包名倒
        endpointInterface = "com.cbb.AppWebService" // 接口地址
)
public class AppWebServiceImpl implements AppWebService {


    @Override
    public String loginUser(String oper_user, String oper_passwd, String version) {
        String test = "登录成功";
        return test;
    }
}

5.编写webService配置文件类

/**
 * webservice配置
 */
@Configuration
public class WebServiceConfig {

    @Autowired
    private AppWebService appWebService;

    /**
     * 注入servlet  bean name不能dispatcherServlet 否则会覆盖dispatcherServlet
     * @return
     */
    @Bean(name = "cxfServlet")
    public ServletRegistrationBean cxfServlet() {
        return new ServletRegistrationBean(new CXFServlet(),"/webservice/*");  //设置websevice目录路径/webservice/webservice?wsdl
    }


    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }

    /**
     * 注册WebServiceService接口到webservice服务
     * @return
     */
    @Bean(name = "WebServiceEndpoint")
    public Endpoint sweptPayEndpoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), appWebService);
        endpoint.publish("/webservice");  //设置路径webservice?wsdl
        return endpoint;
    }

}

6.Vue调用js
使用then()方法获取返回数据

 const commonUrl = "http://127.0.0.1/webservice/webservice?wsdl"; 


//对应好java的接口路径
const xmlsHead = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webService.cbb.com/\"><soapenv:Header/><soapenv:Body>";
const xmlsfoot ="</soapenv:Body></soapenv:Envelope>"; 
	  
// post请求封装--webservice请求  
function webServiceRequest(url, data) {
    var promise = new Promise((resolve, reject) => {
        var that = this;
		var d = "<web:"+url+">";
		for(let key in data){
		   d += "<"+key+">"+data[key]+"</"+key+">";
		};
		d+="</web:"+url+">";
        var postData = xmlsHead+d+xmlsfoot;
		uni.request({
		    url: commonUrl + url,
		    data: postData,
		    method: "POST",
		    header: {
		        "content-type": "text/xml"
		    },
		    success: function(res) {
		        if(res.statusCode == 200){
					var t = res.data.substring(res.data.indexOf("<return>")+8,res.data.indexOf("</return>"));
					//返回服务端返回的数据
					resolve(JSON.parse(t));
				}else if(res.statusCode == 404){
					var err = {
						"code":res.statusCode,
						"message":"维护中。。。"
					}
					resolve(err);
				}else{
					var err = {
						"code":res.statusCode,
						"message":"出错了。。。"
					}
					resolve(err);
				}
		    },
		    error: function(e) {
		        var err = {
		        	"code":404,
		        	"message":"系统问题"
		        }
		        reject(err);
		    },
			fail:function(){
				var err = {
					"code":500,
					"msg":"网络出错"
				}
				reject(err);
			}
		});
    });
    return promise;
}

module.exports = {
    wb: webServiceRequest
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值