精华内容
下载资源
问答
  • SAP开发webservice接口教程,用于在实际工作中与VS2017结合与我SAP与web网页的ERP数据交互程序。
  • 本资料为webservice接口入门例子,主要描述通过CXF方式开发webservice接口,包含了服务端Server接口的开发与对外发布以及客户端Client调用过程。Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web ...

    本资料为webservice接口入门例子,主要描述通过CXF方式开发webservice接口,包含了服务端Server接口的开发与对外发布以及客户端Client调用过程。

    Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,以及部署在更高级的服务器上,例如 Jboss、IBM® WebSphere® 或 BEA WebLogic。

    接口服务器工程示意图

    5f44669d9023f819b9cfa4031178418d.png

    客户端工程截图

    5f44669d9023f819b9cfa4031178418d.png

    运行截图

    5f44669d9023f819b9cfa4031178418d.png5f44669d9023f819b9cfa4031178418d.png5f44669d9023f819b9cfa4031178418d.png5f44669d9023f819b9cfa4031178418d.png

    tomcat的http端口需要设置为5071,并且访问路径需要带上项目名称:webServiceServer

    5f44669d9023f819b9cfa4031178418d.png

    另外webServiceClient项目的Client.java和Client3.java需要修改请求路径,否则无法访问到webservice服务

    Client.javapackage com.zhos.client;

    import com.zhos.webservice.cfx.server.HelloWorldService;

    import org.apache.cxf.interceptor.LoggingInInterceptor;

    import org.apache.cxf.interceptor.LoggingOutInterceptor;

    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

    public class Client {

    public static void main(String[] args) {

    JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();

    bean.getInInterceptors().add(new LoggingInInterceptor());

    bean.getInFaultInterceptors().add(new LoggingOutInterceptor());

    bean.setServiceClass(HelloWorldService.class);

    bean.setAddress("http://localhost:5071/webServiceServer/webservice/helloWorldService");

    HelloWorldService helloWorldService = (HelloWorldService) bean.create();

    String result = helloWorldService.sayHello("Kevin", "password");

    System.out.println(result);

    }

    }

    Client3.javapackage com.zhos.client;

    import org.apache.cxf.endpoint.Client;

    import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

    public class Client3 {

    public static void main(String[] args) throws Exception {

    JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();

    Client client = clientFactory.createClient("http://localhost:5071/webServiceServer/webservice/helloWorldService?wsdl");

    Object[] result = client.invoke("sayHello", new Object[]{"KEVIN", "zuidaima"});

    System.out.println(result[0]);

    }

    }

    运行后截图

    5f44669d9023f819b9cfa4031178418d.png

    webServiceClient项目的jar包就是webServiceServer的jar包,复制一份即可。

    5f44669d9023f819b9cfa4031178418d.png

    由最代码官方编辑于2017-6-6 18:39:45

    展开全文
  • 接下来我们就开始写springmvc 的controller了,我们就先写一个简单的WebService接口,给 Android 返回一句Hello SpringMVC! 新建一个名为HelloController. Java 文件 Java代码 ...

    文章转载自:http://cloudbbs.org/forum.PHP?mod=viewthread&tid=31880

    1.首先大家先创建一个JavaWeb项目

    2.然后加入SpringMVC所依赖的jar包文件到WebRootWEB-INFlib 文件夹下,jar包含文件如下图

    3.我们在WebRootWEB-INF 目录下创建一个spring-servlet.xml文件,粘入如下代码
    XML代码
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/mvc
    8. http://www.springframework.org/schema/mvc/spring-mvc.xsd
    9. http://www.springframework.org/schema/context
    10. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    11. <!-- 指定Controller都在 com.controller包里-->
    12. <context:component-scan base-package="com.springmvc.controller" />
    13. <bean
    14. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    15. <property name="prefix" value="/" />
    16. <property name="suffix" value=".jsp" />
    17. </bean>
    18. </beans>
    4.我们现在在web.xml 下面粘入一下代码 简单配置一下SpringMvc
    XML代码
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    5. id="WebApp_ID" version="3.0">
    6. <context-param>
    7. <param-name>contextConfigLocation</param-name>
    8. <!-- 应用上下文配置文件 -->
    9. <param-value>/WEB-INF/spring-servlet.xml</param-value>
    10. </context-param>
    11. <listener>
    12. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    13. </listener>
    14. <!-- 配置spring核心servlet -->
    15. <servlet>
    16. <servlet-name>spring</servlet-name>
    17. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    18. <load-on-startup>1</load-on-startup>
    19. </servlet>
    20. <!--
    21. url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问
    22. -->
    23. <servlet-mapping>
    24. <servlet-name>spring</servlet-name>
    25. <url-pattern>/</url-pattern>
    26. </servlet-mapping>
    27. </web-app>
    现在呢我们的spring mvc项目就创建完成了,我们把web项目发布到本机tomcat里面,控制台出现如下输出并且没有报错证明你的spring mvc项目已经配置成功了。

    接下来我们就可以开始编写接口了

    我们首先创建Controller,由于我们之前在spring-servlet.xml文件里配置了指定Controller都在 com.springmvc.controller包里,所以我们要先创建com.springmvc.controller文件夹目录

    XML代码
    1. <!-- 指定Controller都在 com.springmvc.controller包里-->
    2. <context:component-scan base-package="com.springmvc.controller" />

    接下来我们就开始写springmvc 的controller了,我们就先写一个简单的WebService接口,给Android返回一句Hello SpringMVC!

    新建一个名为HelloController.Java文件

    Java代码
    1. package com.springmvc.controller;

    2. //朋友一定很好奇这个是干什么的,这个呢就是告诉spring这个类是Controller
    3. @Controller
    4. // 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
    5. @RequestMapping("HelloController")
    6. public class HelloController {

    7. // value: 指定请求的实际地址;
    8. // method: 指定请求的method类型, GET、POST、PUT、DELETE等;
    9. @RequestMapping(value = "/hello.json", method = RequestMethod.GET)
    10. // 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
    11. @ResponseBody
    12. // 那么我们要访问此方法是 完整路径应该是http://ip地址:端口/SpringMVC/HelloController/hello.json
    13. public Object hello() {
    14. return "Hello SpringMVC!";
    15. }
    16. }

    写完了之后我们发不到tomcat中,本地测试时可以在浏览器输入127.0.0.1:8080/SpringMVC/HelloController/hello.json进行访问

    输出结果就为 Hello SpringMVC!

    想必你对编写Android接口已经有一定了解了,那么接下来我们正式开始编写一个简单Android应用的接口吧

    首先我们应用有一个登录页面,那么我们服务端就要为这个应用登录功能提供一个登录接口

    那么我们先来创建一个LoginController,我们就在这里面来编写登录接口

    再想想登录成功我们肯定要给用户返回当前登录用户的信息比如用户名等…那么我们也要同时再创建一个用户实体类名字叫UserEntity


    那我们先定义一下UserEntity里面所需要的字段吧

    Java代码
    1. package com.springmvc.entity;
    2. public class UserEntity {
    3. private String username;// 用户名
    4. private String password;// 密码
    5. private String nickname;// 昵称
    6. private String gender;// 性别
    7. private String age;// 年龄
    8. get set 方法就省略了
    9. }

    接下来我们来编写LoginController的登录接口

    Java代码
    1. package com.springmvc.controller;

    2. //这一步肯定少不了,前面有介绍就不再介绍了
    3. @Controller
    4. // 定义访问登录接口的父路径,前面有介绍也不多介绍了
    5. @RequestMapping("LoginController")
    6. public class LoginController {

    7. // 路径参数{name}填入用户名,{pass}填入密码。我们设置为GET请求。
    8. @RequestMapping(value = "/login_get.json/{name}/{pass}", method = RequestMethod.GET)
    9. // 先前介绍过,就不再介绍了。
    10. @ResponseBody
    11. // 当使用@RequestMapping URI template 样式映射时, 即 /login_get.json/{name}/{pass},
    12. // 这时的name和pass可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
    13. public Object login(@PathVariable String name, @PathVariable String pass) {
    14. // 我们这里为了简单就不去数据库查询了(真正开发时候这里就要把传过来的用户名和密码带到数据库里进行查询)
    15. // 假如我们数据库里用户名是admin密码为123456
    16. if (name.equals("admin") && pass.equals("123456")) {
    17. // 到了这里就说明我们登录成功了,这时候我们就要给Android端返回这个用户的信息
    18. // 这里我们也就先写假数据了
    19. UserEntity entity = new UserEntity();
    20. entity.setUsername("admin");
    21. entity.setPassword("123456");
    22. entity.setNickname("张三");
    23. entity.setGender("男");
    24. entity.setAge("22");

    25. return entity;// 此时返回此用户实体类
    26. else {
    27. Map map = new HashMap();
    28. map.put("msg""登录失败,请检查用户名和密码是否正确");

    29. return map;// 登录失败给Android端返回一个错误消息提醒用户
    30. }
    31. }
    32. }

    由于是GET访问,我们可以直接用浏览器访问 输入正确的用户名和密码,我们看下图当前用户实体自动转换为json字符串了,这时拿到json字符串就好办了,我们Android端就可以进行解析此json并且拿到当前用户的信息了。


    那我们再输入错误的用户名和密码时,我们看下图,返回的json字符串告诉我们可能输入的信息有误,这时我们Android端也可以进行解析json然后给用户提示我们服务端返回的提示信息告诉用户检查输入的信息是否正确了。 


    我们有了登录功能那么肯定就少不了注册功能,接下来我们再来写一个注册功能

    那么我们先来创建一个RegisteredController,我们就在这里面来编写注册接口

    Java代码
    1. package com.springmvc.controller;

    2. import java.util.HashMap;
    3. import java.util.Map;

    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.web.bind.annotation.ModelAttribute;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestMethod;
    8. import org.springframework.web.bind.annotation.ResponseBody;

    9. import com.springmvc.entity.UserEntity;

    10. //这一步肯定少不了,前面有介绍就不再介绍了
    11. @Controller
    12. // 定义访问注册接口的父路径,前面有介绍也不多介绍了
    13. @RequestMapping("RegisteredController")
    14. public class RegisteredController {

    15. // 由于是提交数据所以我们这里使用POST请求
    16. @RequestMapping(value = "/registered_post.json", method = RequestMethod.POST)
    17. @ResponseBody
    18. // 此处@ModelAttribute 可以吧POST请求所携带的json字符串自动解析成后面所写的实体类
    19. // ,然后就直接可以通过这个UserEntity取到Android端传过来的数据
    20. public Object registered(@ModelAttribute UserEntity entity) {
    21. String username = entity.getUsername();
    22. String password = entity.getPassword();
    23. String nickname = entity.getNickname();
    24. String gender = entity.getGender();
    25. String age = entity.getAge();
    26. // 现在数据已经拿到了(真正开发时候我们需要把这里Android传回来用户登记的数据插入到数据库中就好了)
    27. // 为了方便查看,所以这里我把返回的数据拼到一起了
    28. String string = "用户名:" + username + " - 密码:" + password + " - 昵称:"
    29. + nickname + " - 性别:" + gender + " - 年龄:" + age;
    30. // 如果数据库插入成功然后返回true,再给Android返回一个消息,告诉Android端已经注册成功,可以进行登录了
    31. // 这里没有涉及到数据库操作,所以这里我们这里简单判断一下数据不为null就证明注册成功了
    32. if (username != null && password != null && nickname != null
    33. && gender != null && age != null) {
    34. // 成功返回消息告诉Android端
    35. Map<String, String> map = new HashMap<String, String>();
    36. map.put("msg""注册成功!");
    37. return map;
    38. else {
    39. // 失败返回消息告诉Android端
    40. Map<String, String> map = new HashMap<String, String>();
    41. map.put("msg""注册失败!");
    42. return map;
    43. }
    44. }
    45. }

    那么我们现在给这个接口打个断点,用一个模拟http post请求的工具测试一下这个接口是否写好了


    OK进断点了,我们看一下下图,参数全部传了过来,这就说明我们注册成功了!

    这样我们SpringMVC的一个小Demo就写完了,那么我在教大家如何把这个项目发不到sae上面,Java项目需要使用war包上传到sae上,所以我们先把我们的程序打包为war包(注意:注意war包名称必须和appname相同)1.项目右键 选择 Export
    2.选择 JavaEE - WAR file
    3.然后我们选择导出的路径,我就选择桌面了
    4.然后我们进入我们的sae应用中心 - 代码管理 第一次上传需要创建版本
    5.我们选择创建版本
    6.然后我们上传war包 就OK了。

    提供几个测试地址:
         ①HelloController : http://1.springmvcdemo.sinaapp.com/HelloController/hello.json
         ②登录LoginController:http://1.springmvcdemo.sinaapp.com/LoginController/login_get.json/admin/123456
         ③注册RegisteredController:由于这个是POST请求所以就请大家自己测试啦         POST(http://1.springmvcdemo.sinaapp.com/RegisteredController/registered_post.json,需要传入参数)
    展开全文
  • 使用SpringMvc开发Android WebService入门教程 1.首先大家先创建一个JavaWeb项目 2.然后加入SpringMVC所依赖的jar包文件到WebRootWEB-INFlib 文件夹下,jar包含文件如下图 3.我们在WebRootWEB-INF 目录下创建...
    使用SpringMvc开发Android WebService入门教程
    1.首先大家先创建一个JavaWeb项目

    2.然后加入SpringMVC所依赖的jar包文件到WebRootWEB-INFlib 文件夹下,jar包含文件如下图

    3.我们在WebRootWEB-INF 目录下创建一个spring-servlet.xml文件,粘入如下代码
    XML代码 
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/mvc
    8. http://www.springframework.org/schema/mvc/spring-mvc.xsd
    9. http://www.springframework.org/schema/context
    10. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    11. <!-- 指定Controller都在 com.controller包里-->
    12. <context:component-scan base-package="com.springmvc.controller" />
    13. <bean
    14. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    15. <property name="prefix" value="/" />
    16. <property name="suffix" value=".jsp" />
    17. </bean>
    18. </beans>
    4.我们现在在web.xml 下面粘入一下代码 简单配置一下SpringMvc
    XML代码 
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    5. id="WebApp_ID" version="3.0">
    6. <context-param>
    7. <param-name>contextConfigLocation</param-name>
    8. <!-- 应用上下文配置文件 -->
    9. <param-value>/WEB-INF/spring-servlet.xml</param-value>
    10. </context-param>
    11. <listener>
    12. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    13. </listener>
    14. <!-- 配置spring核心servlet -->
    15. <servlet>
    16. <servlet-name>spring</servlet-name>
    17. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    18. <load-on-startup>1</load-on-startup>
    19. </servlet>
    20. <!--
    21. url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问
    22. -->
    23. <servlet-mapping>
    24. <servlet-name>spring</servlet-name>
    25. <url-pattern>/</url-pattern>
    26. </servlet-mapping>
    27. </web-app>
    现在呢我们的spring mvc项目就创建完成了,我们把web项目发布到本机tomcat里面,控制台出现如下输出并且没有报错证明你的spring mvc项目已经配置成功了。

    接下来我们就可以开始编写接口了

    我们首先创建Controller,由于我们之前在spring-servlet.xml文件里配置了指定Controller都在 com.springmvc.controller包里,所以我们要先创建com.springmvc.controller文件夹目录

    XML代码 
    1. <!-- 指定Controller都在 com.springmvc.controller包里-->
    2. <context:component-scan base-package="com.springmvc.controller" />

    接下来我们就开始写springmvc 的controller了,我们就先写一个简单的WebService接口,给Android返回一句Hello SpringMVC!

    新建一个名为HelloController.java文件

    Java代码 
    1. package com.springmvc.controller;
    2. //朋友一定很好奇这个是干什么的,这个呢就是告诉spring这个类是Controller
    3. @Controller
    4. // 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
    5. @RequestMapping("HelloController")
    6. public class HelloController {
    7. // value: 指定请求的实际地址;
    8. // method: 指定请求的method类型, GET、POST、PUT、DELETE等;
    9. @RequestMapping(value = "/hello.json", method = RequestMethod.GET)
    10. // 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
    11. @ResponseBody
    12. // 那么我们要访问此方法是 完整路径应该是http://ip地址:端口/SpringMVC/HelloController/hello.json
    13. public Object hello() {
    14. return "Hello SpringMVC!";
    15. }
    16. }

    写完了之后我们发不到tomcat中,本地测试时可以在浏览器输入127.0.0.1:8080/SpringMVC/HelloController/hello.json进行访问

    输出结果就为 Hello SpringMVC!

    想必你对编写Android接口已经有一定了解了,那么接下来我们正式开始编写一个简单Android应用的接口吧

    首先我们应用有一个登录页面,那么我们服务端就要为这个应用登录功能提供一个登录接口

    那么我们先来创建一个LoginController,我们就在这里面来编写登录接口

    再想想登录成功我们肯定要给用户返回当前登录用户的信息比如用户名等…那么我们也要同时再创建一个用户实体类名字叫UserEntity

    那我们先定义一下UserEntity里面所需要的字段吧

    Java代码 
    1. package com.springmvc.entity;
    2. public class UserEntity {
    3. private String username;// 用户名
    4. private String password;// 密码
    5. private String nickname;// 昵称
    6. private String gender;// 性别
    7. private String age;// 年龄
    8. get set 方法就省略了
    9. }

    接下来我们来编写LoginController的登录接口

    Java代码 
    1. package com.springmvc.controller;
    2. //这一步肯定少不了,前面有介绍就不再介绍了
    3. @Controller
    4. // 定义访问登录接口的父路径,前面有介绍也不多介绍了
    5. @RequestMapping("LoginController")
    6. public class LoginController {
    7. // 路径参数{name}填入用户名,{pass}填入密码。我们设置为GET请求。
    8. @RequestMapping(value = "/login_get.json/{name}/{pass}", method = RequestMethod.GET)
    9. // 先前介绍过,就不再介绍了。
    10. @ResponseBody
    11. // 当使用@RequestMapping URI template 样式映射时, 即 /login_get.json/{name}/{pass},
    12. // 这时的name和pass可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
    13. public Object login(@PathVariable String name, @PathVariable String pass) {
    14. // 我们这里为了简单就不去数据库查询了(真正开发时候这里就要把传过来的用户名和密码带到数据库里进行查询)
    15. // 假如我们数据库里用户名是admin密码为123456
    16. if (name.equals("admin") && pass.equals("123456")) {
    17. // 到了这里就说明我们登录成功了,这时候我们就要给Android端返回这个用户的信息
    18. // 这里我们也就先写假数据了
    19. UserEntity entity = new UserEntity();
    20. entity.setUsername("admin");
    21. entity.setPassword("123456");
    22. entity.setNickname("张三");
    23. entity.setGender("男");
    24. entity.setAge("22");
    25. return entity;// 此时返回此用户实体类
    26. else {
    27. Map map = new HashMap();
    28. map.put("msg""登录失败,请检查用户名和密码是否正确");
    29. return map;// 登录失败给Android端返回一个错误消息提醒用户
    30. }
    31. }
    32. }

    由于是GET访问,我们可以直接用浏览器访问 输入正确的用户名和密码,我们看下图当前用户实体自动转换为json字符串了,这时拿到json字符串就好办了,我们Android端就可以进行解析此json并且拿到当前用户的信息了。


    那我们再输入错误的用户名和密码时,我们看下图,返回的json字符串告诉我们可能输入的信息有误,这时我们Android端也可以进行解析json然后给用户提示我们服务端返回的提示信息告诉用户检查输入的信息是否正确了。 




     
       

    Rank: 1

    沙发
     发表于 2015-1-31 17:50:46 |只看该作者
    本帖最后由 悲观主义者一枚 于 2015-2-2 12:52 编辑

    我们有了登录功能那么肯定就少不了注册功能,接下来我们再来写一个注册功能

    那么我们先来创建一个RegisteredController,我们就在这里面来编写注册接口

    Java代码 
    1. package com.springmvc.controller;
    2. import java.util.HashMap;
    3. import java.util.Map;
    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.web.bind.annotation.ModelAttribute;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestMethod;
    8. import org.springframework.web.bind.annotation.ResponseBody;
    9. import com.springmvc.entity.UserEntity;
    10. //这一步肯定少不了,前面有介绍就不再介绍了
    11. @Controller
    12. // 定义访问注册接口的父路径,前面有介绍也不多介绍了
    13. @RequestMapping("RegisteredController")
    14. public class RegisteredController {
    15. // 由于是提交数据所以我们这里使用POST请求
    16. @RequestMapping(value = "/registered_post.json", method = RequestMethod.POST)
    17. @ResponseBody
    18. // 此处@ModelAttribute 可以吧POST请求所携带的json字符串自动解析成后面所写的实体类
    19. // ,然后就直接可以通过这个UserEntity取到Android端传过来的数据
    20. public Object registered(@ModelAttribute UserEntity entity) {
    21. String username = entity.getUsername();
    22. String password = entity.getPassword();
    23. String nickname = entity.getNickname();
    24. String gender = entity.getGender();
    25. String age = entity.getAge();
    26. // 现在数据已经拿到了(真正开发时候我们需要把这里Android传回来用户登记的数据插入到数据库中就好了)
    27. // 为了方便查看,所以这里我把返回的数据拼到一起了
    28. String string = "用户名:" + username + " - 密码:" + password + " - 昵称:"
    29. + nickname + " - 性别:" + gender + " - 年龄:" + age;
    30. // 如果数据库插入成功然后返回true,再给Android返回一个消息,告诉Android端已经注册成功,可以进行登录了
    31. // 这里没有涉及到数据库操作,所以这里我们这里简单判断一下数据不为null就证明注册成功了
    32. if (username != null && password != null && nickname != null
    33. && gender != null && age != null) {
    34. // 成功返回消息告诉Android端
    35. Map<String, String> map = new HashMap<String, String>();
    36. map.put("msg""注册成功!");
    37. return map;
    38. else {
    39. // 失败返回消息告诉Android端
    40. Map<String, String> map = new HashMap<String, String>();
    41. map.put("msg""注册失败!");
    42. return map;
    43. }
    44. }
    45. }

    那么我们现在给这个接口打个断点,用一个模拟http post请求的工具测试一下这个接口是否写好了


    OK进断点了,我们看一下下图,参数全部传了过来,这就说明我们注册成功了!

    这样我们SpringMVC的一个小Demo就写完了,那么我在教大家如何把这个项目发不到sae上面,Java项目需要使用war包上传到sae上,所以我们先把我们的程序打包为war包(注意:注意war包名称必须和appname相同)1.项目右键 选择 Export
    2.选择 JavaEE - WAR file
    3.然后我们选择导出的路径,我就选择桌面了
    4.然后我们进入我们的sae应用中心 - 代码管理 第一次上传需要创建版本
    5.我们选择创建版本
    6.然后我们上传war包 就OK了。

    提供几个测试地址:
         ①HelloController : http://1.springmvcdemo.sinaapp.com/HelloController/hello.json
         ②登录LoginController:http://1.springmvcdemo.sinaapp.com/LoginController/login_get.json/admin/123456
         ③注册RegisteredController:由于这个是POST请求所以就请大家自己测试啦         POST(http://1.springmvcdemo.sinaapp.com/RegisteredController/registered_post.json,需要传入参数)


    给大家推荐一个json解析工具 Google提供的 Gson 这个解析json挺好用,需要的同学可以去搜一搜了解下。使用SpringMvc开发Android WebService接口我就先简单介绍到这里,谢谢。
    第一次在sae发教程帖请大家多多指教。



     
     
       

    Rank: 1

    板凳
     发表于 2015-1-31 17:59:32 |只看该作者
    本帖最后由 悲观主义者一枚 于 2015-1-31 20:18 编辑

    源码和需要的jar包和http模拟请求工具:   http://pan.baidu.com/s/1kTijiYF
    展开全文
  • 文章目录实现WebService接口的发布以及调用一、服务端代码开发1、pom依赖2、接口类3、接口实现类4、webservice配置文件2、客户端开发 实现WebService接口的发布以及调用 我们经常需要在两个系统之间进行一些数据的...

    实现WebService接口的发布以及调用

    我们经常需要在两个系统之间进行一些数据的交互,这时候我们就需要开发数据交互接口。

    一般来说,遇到比较多的接口有HTTP接口、WebService接口、FTP文件传输。今天我要来学习一下在SpringBoot框架下进行简单的webservice接口的开发。

    在网上跟着好多个教程做了好多遍,终于能走通。

    一、服务端代码开发

    创建了两个wbservice接口TestService和CatService。

    1、pom依赖

    导入相关的依赖包。

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web-services</artifactId>
            </dependency>
            <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、接口类

    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.xml.ws.WebServiceProvider;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 15:26
     */
    @WebService(name = "TestService", // 暴露服务名称
            targetNamespace = "http://server.webservice.Bag.admin.com"// 命名空间,一般是接口的包名倒序
    )
    public interface TestService {
        @WebMethod
        public String sendMessage(@WebParam(name = "username") String username);
    
        @WebMethod
        public boolean getFlag(@WebParam(name = "username") String username);
    }
    
    
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 17:02
     */
    @WebService(name = "CatService", // 暴露服务名称
            targetNamespace = "http://server.webservice.Bag.admin.com"// 命名空间,一般是接口的包名倒序
    )
    public interface CatService {
        @WebMethod
        public String message(@WebParam(name = "name") String name);
    }
    

    3、接口实现类

    import com.admin.Bag.webservice.server.TestService;
    import org.springframework.stereotype.Component;
    
    import javax.jws.WebService;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 15:31
     */
    @WebService(serviceName = "TestService", // 与接口中指定的name一致
            targetNamespace = "http://server.webservice.Bag.admin.com", // 与接口中的命名空间一致,一般是接口的包名倒
            endpointInterface = "com.admin.Bag.webservice.server.TestService"// 接口地址
    )
    @Component
    public class TestServiceImpl implements TestService {
    
        @Override
        public String sendMessage(String username) {
            return "=====Hello! " + username + "=====";
        }
    
        @Override
        public boolean getFlag(String username) {
            //
            return true;
        }
    }
    
    import com.admin.Bag.webservice.server.CatService;
    import org.springframework.stereotype.Component;
    
    import javax.jws.WebService;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 17:05
     */
    @WebService(serviceName = "CatService", // 与接口中指定的name一致
            targetNamespace = "http://server.webservice.Bag.admin.com", // 与接口中的命名空间一致,一般是接口的包名倒
            endpointInterface = "com.admin.Bag.webservice.server.CatService"// 接口地址
    )
    @Component
    public class CatServiceImpl implements CatService {
    
        @Override
        public String message(String name) {
            //
            return "一只小猫猫";
        }
    }
    

    4、webservice配置文件

    import com.admin.Bag.webservice.server.impl.CatServiceImpl;
    import com.admin.Bag.webservice.server.impl.TestServiceImpl;
    import org.apache.cxf.Bus;
    import org.apache.cxf.bus.spring.SpringBus;
    import org.apache.cxf.jaxws.EndpointImpl;
    import org.apache.cxf.transport.servlet.CXFServlet;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.xml.ws.Endpoint;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 15:37
     */
    @Configuration
    public class cxfConfig {
        @Bean
        public ServletRegistrationBean disServlet() {
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/webService/*");
            return servletRegistrationBean;
        }
        @Bean(name = Bus.DEFAULT_BUS_ID)
        public SpringBus springBus() {
            return new SpringBus();
        }
        @Bean
        public Endpoint endpoint() {
            EndpointImpl endpoint = new EndpointImpl(springBus(), new TestServiceImpl());
            endpoint.publish("/TestService");
            return endpoint;
        }
        @Bean
        public Endpoint endpoint2() {
            EndpointImpl endpoint = new EndpointImpl(springBus(), new CatServiceImpl());
            endpoint.publish("/CatService");
            return endpoint;
        }
    
    }
    

    启动项目。我的项目端口号是8080。浏览器访问地址:http://localhost:8082/webService
    可见接口信息CatService和TestService,点进链接可以看每个接口的wsdl文档。
    在这里插入图片描述

    2、客户端开发

    客户端是一个单独的项目。

    (1)pom依赖

    不同的SpringBoot版本对应的依赖版本也不一样,我也是试了好久终于成了。我的SpringBoot版本号是2.3.0.RELEASE。

      <!-- 进行jaxes 服务开发 -->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.0.1</version>
            </dependency>
            <!-- 内置jetty web服务器 -->
            <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.0.1</version>
            </dependency>
    

    (2)封装客户端方法clientUtil

    
    import org.apache.cxf.endpoint.Client;
    import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 17:46
     */
    public class clientUtil {
    
        public static String callWebSV(String wsdUrl, String operationName, String... params) throws Exception {
            JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
            Client client = dcf.createClient(wsdUrl);
            //client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
            Object[] objects;
            // invoke("方法名",参数1,参数2,参数3....);
            objects = client.invoke(operationName, params);
            return objects[0].toString();
        }
    }
    
    

    (3)调用接口类

    使用定时调用webservice接口。

    import com.admin.webAppoint.webservice.client.clientUtil;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author zll
     * @version 1.0
     * @date 2020/6/10 17:50
     */
    @RestController
    @Component
    public class TestController {
        //在一个方法中连续调用多次WebService接口,每次调用前需要重置上下文。
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    
        @Scheduled(cron="*/15 * * * * ?")
        public String getMessage()  {
            Thread.currentThread().setContextClassLoader(classLoader);//在获取连接之前 还原上下文
            System.out.println("======开始调用webservice接口=====");
            String url = "http://localhost:8082/webService/CatService?wsdl";
            String methodName = "message";
            System.out.println("Calling" + url);
            String result="";
            try {
                result=clientUtil.callWebSV(url, methodName, "name");
            } catch (Exception e) {
                System.err.println("接口调用失败!!!!");
                return "失败";
            }
            System.out.println("===Finished!===恭喜你啊!!!CatService接口调用成功!!!===获得的数据是:"+result);
            return "Finished!";
        }
    
        @Scheduled(cron="*/5 * * * * ?")
        public String getMessage2()  {
            Thread.currentThread().setContextClassLoader(classLoader);//在获取连接之前 还原上下文
            System.out.println("======开始调用webservice接口=====");
            String url = "http://localhost:8082/webService/TestService?wsdl";
            String methodName = "sendMessage";
            System.out.println("Calling" + url);
            String result="";
            try {
                result=clientUtil.callWebSV(url, methodName, "username");
            } catch (Exception e) {
                System.err.println("接口调用失败!!!!");
                return  "失败";
            }
            System.out.println("===Finished!===恭喜你啊!!!TestService接口调用成功!!!===获得的数据是:"+result);
            return "Finished!";
        }
    }
    
    

    (4)运行结果

    首先启动服务端。启动客户端。

    遇到过报错:
    报错——使用cxf时报错:org.apache.cxf.interceptor.Fault: Marshalling Error: XXX is not known to this context

    最终成功调用服务端的webservice接口:

    在这里插入图片描述

    展开全文
  • 场景 spring-ws spring-ws官网: ... SpringWebServices(Spring-WS)是Spring社区的一...SpringWebServices旨在促进契约优先的SOAP服务开发,允许使用多种操作XML有效负载的方式之一创建灵活的Web服务。该产品基于Spr...
  • ab是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能...本教程讲解了在Linux系统中如何通过ab命令进行webservice接口测试。准备条件一台Linux服务器。在服务...
  • ab是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能...本教程讲解了在Linux系统中如何通过ab命令进行webservice接口测试。准备条件一台Linux服务器。在服务...
  • 最近写restful风格的接口,需要打包部署,偶然间看到个webservice风格的接口部署教程,特此放个传送门,方便查阅。 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156
  • SpringBoot整合spring-ws开发webservice接口(全流程详细教程) 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 现在接口已经开发完毕,但是在后期进行调试时发现在C#程序中进行...
  • 原理:开发环境下的跨域:在node.js上实现请求转发,vue前端通过axios请求到node.js上,node.js将请求转发到后端,反之.响应也是,先到node.js上,然后转发vue-cil项目上.需要在根目录下新建文件vue.config.js.vue.config....
  • SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 实现 找到Maven面板下的package命令,双击 等待打包完成 来到...
  • SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 接口的请求参数有两个 一个是String类型的list,代表要签收的多条...
  • SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 实现 <xs:schema xmlns:xs=...
  • SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 实现 <xs:schema xmlns:xs=...
  • 场景 项目专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726 实现 搭建服务端 打开Eclipse新建 Java ...包下新建接口HellloWS.java package com.badao.ws; import javax.jws.WebMetho...
  • WebService开发(C#)+Java调用-教程

    千次阅读 2018-11-16 13:54:04
    注:1.本文重点讲如何实现  2.本文包括WebService接口开发、JavaWeb调用等问题  3.源代码已提交到github,Webservice接口:https://github.com/Bobo-peng/WebService  JavaWeb...
  • ab是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能...本教程讲解了在Linux系统中如何通过ab命令进行webservice接口测试。准备条件一台Linux服务器。在服务...
  • 1.开发服务器端代码 webservice代码 1.创建接口 package ws; import javax.jws.WebMethod; import javax.jws.WebService; /** * SEI * @author Administrator * */ @WebService public interface ...
  • 一.WebService服务端开发 1、准备一个测试的接口(service和service实现类) package com.synjones.cjpt.service.webService; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public ...
  • 首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码: IHelloService.java 服务接口,有一个方法,参数和返回值均为复杂类型User package test; public interface IHelloService ...{ ...
  • 使用axis2解析sap发布的webService接口数据前语功能快捷键技术:axis2讲解:方法一讲解:方法二结语 前语 首先自我介绍,本人从事java开发,刚跳槽到了一家传统生产公司,主要负责公司的BI以及和sap对接的开发工作。...
  • 使用XFire开发WebService入门教程

    万次阅读 2007-07-25 13:35:00
    首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码:IHelloService.java 服务接口,有一个方法,参数和返回值均为复杂类型User package test;public interface IHelloService ...{ ...
  • 使用Postman测试webservice接口1.Postman下载安装2.Postman使用教程 1.Postman下载安装 Postman官网地址:(https://www.postman.com) 开发中需要用到各种各样的工具,常常因为找个下载按钮翻好半天,好不容易找到了...
  • Webservice开发之xsd文件示例代码

    千次阅读 2019-04-19 11:12:11
    SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89395156 实现 xsd文件示例代码: <xs:schema xmlns:xs=...
  • jax-ws之webservice security(安全)教程第三天  目录(?)[+] 前言一配置服务端的相关角色 配置J2EE AppServer中的相关用户名与密码配置web应用中的相关安全角色 二 开发我们的webservice 接口实现...
  • 博主个人教程地址 前言 之前说完了JavaBean的传递 今天来说一下Map类型的传递 Map类型传递 其实主要的还是针对的服务端的类型转换 所以主要修改的代码时在服务端的 我们还是按照正常的思路在扩充方法 来看一下会出现...
  • 新项目接口开发

    2014-01-15 00:51:58
    新接手接口开发,用的技术是webservice,框架是项目组开发的。 这里有几个问题: 1、首先是对webservice方面的知识还不知道 可以看视频教程,自己动手练习,理解最基本的概念,原理,过程。 2、发送给外系统...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

webservice接口开发教程