WebService的基础整合ssh框架的应用

来源:互联网 发布:scilab 矩阵作差 编辑:程序博客网 时间:2024/06/06 17:55

还是基于maven的整合.

在pom.xml文件中添加依赖:

 <properties><cxf.version>3.0.1</cxf.version></properties>  <!-- 导入webservice依赖 -->        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-frontend-jaxws</artifactId>            <version>${cxf.version}</version>        </dependency>        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-frontend-jaxrs</artifactId>            <version>${cxf.version}</version>        </dependency>        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-rs-client</artifactId>            <version>${cxf.version}</version>        </dependency>        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-rs-extension-providers</artifactId>            <version>${cxf.version}</version>        </dependency>


在web.xml中加入对CXF的声明:

<!--配置CXF声明-->    <servlet>        <servlet-name>CXFService</servlet-name>        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>CXFService</servlet-name>        <!--配置CXF的访问路径./services/后面接appli.... .xml中的 /GandPandService". 然后接每个方法上独有的path-->        <url-pattern>/services/*</url-pattern>    </servlet-mapping>


编写一个applicationContext-webService.xml. 记得在web.xml文件中配置扫描spring的xml配置文件的时候要能扫描到这个文件.

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:task="http://www.springframework.org/schema/task"xmlns:jaxrs="http://cxf.apache.org/jaxrs"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsdhttp://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "><!--address="/UsersService. 这个是自定义的一个访问路径, 接在web.xml文件中配置的/service后面.--><jaxrs:server id="usersService" address="/UsersService"><jaxrs:serviceBeans><!--具体的实现类--><bean class="com.cn.webservice_serviceimpl.UsersServiceImpl" /></jaxrs:serviceBeans><!--配置的WebService需要用到的interceptor(拦截器)--><jaxrs:inInterceptors><bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean></jaxrs:inInterceptors><jaxrs:outInterceptors><bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean></jaxrs:outInterceptors></jaxrs:server></beans>


以下就是正式的编写一个能被其他项目以及跨项目进行访问的一个service层.
package com.cn.webservice_service;import com.cn.hnust.domain.User;import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.PUT;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import java.util.List;//这里定义的是CXF预留的访问接口. 通过以下这些注解的path等进行约定访问.public interface UsersService {    /*    * @GET:表示的是请求的方法.    * @Path("/findAllUsers")配置的访问路径.    *  @Produces({"application/xml", "application/json"}):表示可以以xml和json格式返回数据    * */    @GET    @Path("/findAllUsers")    @Produces({"application/xml", "application/json"})    public List<User> findAllUsers();//查询所有    @GET    @Path("/findAllUsers")    @Produces({"application/xml", "application/json"})    public User findByUsername(String username);//通过用户名查询用户对象    @GET    @Path("/getUser/{id}")    @Produces({"application/xml", "application/json"})    public User getUser(@PathParam("id") int id);//通过id查询对应数据//    @Consumes({"application/xml", "application/json"}): 表示可以接受xml和json格式的数据    @POST    @Path("/saveUser")    @Consumes({"application/xml", "application/json"})    public void saveUser(User user);//保存一个Bean对象.    @PUT    @Path(value = "/update")    @Consumes({"application/xml", "application/json"})    public void updateUser(User user);//修改一个对象内容上.}


这里是上面service的具体实现类.

package com.cn.webservice_serviceimpl;import com.cn.hnust.domain.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.cn.webservice_dao.UserRepository;import com.cn.webservice_service.UsersService;import java.util.List;@Service@Transactionalpublic class UsersServiceImpl implements UsersService {//    注入DAO层    @Autowired    private UserRepository userRepository;    @Override    public List<User> findAllUsers() {        return userRepository.findAll();    }//    通过用户名查找有没有匹配的用户    @Override    public User findByUsername(String username) {        return userRepository.findByUsername(username);    }    @Override    public User getUser(int id) {        return null;    }    @Override    public void saveUser(User user) {    }    @Override    public void updateUser(User user) {    }}


最后就是一个简短的使用Spring - data -  JPA框架编写的一个DAO层了.

package com.cn.webservice_dao;import com.cn.hnust.domain.User;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.JpaSpecificationExecutor;public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {//    一个简单的通过用户名查询用户对象的方法.    User findByUsername(String username);}


以上,真正的重点是 在web.xml中的配置, 以及编写的applicationContext-Webservice.xml

之后就是service层的一些注解需要注意一下.


在另一个项目中访问这个项目的service的话, 基础代码如下:

第一个是访问路径. 

accpet指的是声明接收数据的格式.

get(类名.class): 指的是将获取到的json格式一一对应封装到这个实体类中.

 WebClient.create("http://localhost:9012/taotao-manager-web/services/UsersService/findAllUsers").accept(MediaType.APPLICATION_JSON_TYPE).getCollection(Games.class);




原创粉丝点击