zoukankan      html  css  js  c++  java
  • webServie的RESTful类型服务端

    1 web.xml

    <servlet>
            <servlet-name>CXFServlet</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
            <servlet-name>CXFServlet</servlet-name>
            <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>

    2 applicationContext.xml

    <import resource="restfulContext.xml" />

    3 restfulContext.xml

    <jaxrs:server id="restfulServer" address="/rest">
      <jaxrs:serviceBeans>
       <ref bean="webDutyWSImpl" />
      </jaxrs:serviceBeans>
      <jaxrs:providers>   
          <bean class="com.huawei.support.security.JAXRSAuthHandler"></bean>
          <bean class="com.huawei.support.provider.ApplicationExceptionMapper"></bean>
          <bean class="com.huawei.support.provider.MapMessageBodyReader"></bean>
          <bean class="com.huawei.support.provider.MapMessageBodyWriter"></bean>
          <bean class="com.huawei.support.provider.StringListMessageBodyReader"></bean>
          <bean class="com.huawei.support.provider.StringListMessageBodyWriter"></bean>
          <bean class="com.huawei.support.provider.DataHandlerMessageBodyReader"></bean>
          <bean class="com.huawei.support.provider.DataHandlerMessageBodyWriter"></bean>
          </jaxrs:providers>
      <jaxrs:extensionMappings>
          <entry key="json" value="application/json" />
          <entry key="xml" value="application/xml" />
      </jaxrs:extensionMappings>
     </jaxrs:server>

    4 另起一个API项目包SupportWS-RS-API,在其中定义WS接口

    @Path("/webduty")
    @Produces(MediaType.APPLICATION_JSON)
    public interface IWebDutyWS{
      
      @POST
      @Path("/webdutyrole")
      @Consumes(MediaType.APPLICATION_JSON)
      List<DictItemBean> getDictItemList(@QueryParam("") DictItemBean param) throws RecoveryException;
    }

    5在WS项目下建立WS实现类

    @Component("webDutyWSImpl")          //本来是@Service,我换成了@Component一样可以
    public class WebDutyWSImpl implements IWebDutyWS  
    {
        @Autowired
        @Qualifier("webDutyServiceImpl")
        private IWebDutyService webDutyServiceImpl;   //注入服务实现类
        
        @Override
        public List<DictItemBean> getDictItemList(DictItemBean param)throws RecoveryException
        {
           List<DictItemBean> roleList = webDutyServiceImpl.getDictItemList(param);   //调用服务实现类的方法
            return roleList;
        }
    }

    6在WS项目下建立Service接口

    public interface IWebDutyService
    {
        List<DictItemBean> getDictItemList(DictItemBean dictItem);
    }

    7在WS项目下建立Service实现类

    @Component("webDutyServiceImpl")  //本来是@Service,我换成了@Component一样可以
    public class WebDutyServiceImpl implements IWebDutyService
    {
        @Autowired
        @Qualifier("webDutyDao")
        private WebDutyDao webDutyDao;   
        
        @Override
        public List<DictItemBean> getDictItemList(DictItemBean param)
        {
            List<DictItemBean> restult = new ArrayList<DictItemBean>();
            if (param != null && !StringUtil.isNullOrEmpty(param.getClassifyId()))
            {
                String[] classfyIds = param.getClassifyId().trim().split(",");
                for (String id : classfyIds)
                {
                    param.setClassifyId(id);
                    restult.addAll(webDutyDao.getDictItemList(param));
                }
            }
            return restult;
        }
     }   

    ---------------------------------RESTful服务端完成--------------------------

    后记1
    @Produces 注释代表的是一个资源可以返回的 MIME 类型。写出到response的内容类型。
    @Consumes 注释代表的是一个资源可以接受的 MIME 类型。客户端request传过来的内容类型。

    后记2 

    公司的项目使用的是Spring3.0。从Spring 2.5 开始,除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的Spring 版本中,这 3 个注释和 @Component 是等效的,Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。

    在applicationContext.xml打开自动扫描,并定义扫描路径
    <context:component-scan base-package=”com.eric.spring”>   
     这种方式的bean默认是单例的,如果想改变,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意):

    @PostConstruct public void init() { }

    @PreDestroy public void destory() { }


     

  • 相关阅读:
    绿盟UTS综合威胁探针管理员任意登录
    深信服EDR3.2.21任意代码执行
    linux反弹shell总结
    mysql在8.0版本下修改密码的命令
    Linux提权常用漏洞速查表
    windows提权常用系统漏洞与补丁编号速查对照表
    通达OA<=11.5版本SQL注入——附件上传
    通达OA<=11.5版本SQL注入——日程安排
    希尔伯特曲线python3实现
    深信服edr控制中心漏洞——验证码逻辑错误
  • 原文地址:https://www.cnblogs.com/onlywujun/p/2805104.html
Copyright © 2011-2022 走看看