当前位置: 首页 > 编程日记 > 正文

java开发webservice的几种方式

为什么80%的码农都做不了架构师?>>>   hot3.png

webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。

1.Axis2

Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便。

(1)下载eclipse的Java EE版本

http://www.eclipse.org/downloads/

(2)下载axis2

http://axis.apache.org/axis2/java/core/download.cgi

(3)下载eclipse的axis2插件

Axis2_Codegen_Wizard

Axis2_Service_Archiver

http://axis.apache.org/axis2/java/core/tools/index.html

推荐使用1.3的版本

(4)eclipse安装axis2插件

1)在任意目录下新建一个Axis2文件夹,在该文件夹下新建eclipse目录,在eclipse目录中新建plugins目录和features目录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;

2)把下载的axis2插件解压,并把解压的文件放到新建的eclipse的plugins目录下;

3)在%eclipse_home%的目录下新建links目录,并在links目录下新建axis2.link文件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2;

4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。

(5)安装axis2

下载Axis2的WAR Distribution并解压,把axis2.war包放置到%TOMCAT_HOME%/webapps下,启动tomcat,访问http://localhost:port/axis2,Axis2安装成功。

(6)使用eclipse新建web工程,创建一个普通java类,至少包含一个方法。

(7)发布webservice

1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;

2)选择Class File Location,也就是类文件存放路径,注意:只选到classes目录,不要包括包文件夹,然后Next;

3)选择Skip WSDL,然后Next

4)一路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;

5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;

6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了一个.aar的文件;

7)访问http://localhost:8085/axis2/services/类名?wsdl 就可看到生成的wsdl文件了。

注意:以上的方式是发布到axis2.war包中,你也可以把生成.aar文件copy到你的实际应用中,同时,你也可以使用eclipse的create webservice功能发布你的webservice,选择axis2生成你的webservice,这样webservice就会部署到你的应用中了。

2.Apche CXF

CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。举一个CXF开发webservice的例子吧。

1)在eclipse中新建一个web工程,导入依赖包,如图:

2)编写一个接口,如:

public String test(@WebParam(name="value", targetNamespace = "http://service.cxf.zcl.com/", mode = WebParam.Mode.IN)String value);

注意:CXF开发的webservice,接口中的方法的参数一定要以这种方式,否则客户端调用的时候CXF服务端会接收不到参数的值,name:参数名称,可不写(建议写上),targetNamespace:命名空间,一定要填写上,默认是包名反过来的顺序,mode:参数类型,IN表示输入。

3)编写一个实现类,实现接口的方法;

4)和spring的集成,编写一个bean文件,如:cxf-beans.xml,内容如下:

Cxf-beans.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"
  4. xmlns:jaxws="http://cxf.apache.org/jaxws"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
  7. <import resource="classpath:META-INF/cxf/cxf.xml" />
  8. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
  9. <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
  10. <jaxws:endpoint id="vote" implementor="com.zcl.cxf.service.VoteImpl" address="/Vote" />
  11. </beans>
<?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:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" /><jaxws:endpoint id="vote" implementor="com.zcl.cxf.service.VoteImpl" address="/Vote" />
</beans>

这个文件比较容易理解,就不解释了。

5)配置CXFServlet

在web.xml文件中配置CXFServlet,加载cxf-beans.xml文件,内容如下:

Web.xml代码 复制代码  收藏代码
  1. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  4. id="WebApp_ID" version="2.5">
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>WEB-INF/cxf-beans.xml</param-value>
  8. </context-param>
  9. <listener>
  10. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  11. </listener>
  12. <servlet>
  13. <servlet-name>cxf</servlet-name>
  14. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  15. <load-on-startup>1</load-on-startup>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>cxf</servlet-name>
  19. <url-pattern>/services/*</url-pattern>
  20. </servlet-mapping>
  21. </web-app>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/cxf-beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>cxf</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>cxf</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping>
</web-app>

把工程部署到中间件,如tomcat,就可以访问该webservice了。

3.JDK开发webservice

1)编写一个Java类,如下:

Jdkwebservice.java代码 复制代码  收藏代码
  1. package demo;
  2. import javax.jws.WebParam;
  3. import javax.jws.WebService;
  4. import javax.xml.ws.Endpoint;
  5. @WebService
  6. public class JdkWebService {
  7. public String doSomething(@WebParam(name="value", targetNamespace = "http://demo/", mode = WebParam.Mode.IN)String value) {
  8. return "Just do it," + value + "!";
  9. }
  10. public static void main(String[] args) {
  11. Endpoint.publish("http://localhost:8080/jdkwsdemo/demo.JdkWebService", new JdkWebService());
  12. }
  13. }
package demo;import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;@WebService
public class JdkWebService {public String doSomething(@WebParam(name="value", targetNamespace = "http://demo/", mode = WebParam.Mode.IN)String value) {return "Just do it," + value + "!";}public static void main(String[] args) {Endpoint.publish("http://localhost:8080/jdkwsdemo/demo.JdkWebService", new JdkWebService());}
}

2)运行该java类,在浏览器上就可以访问该webservice了。

注意:开发web工程的时候,这种方法不太友好。我们可以编写一个servlet类,在servlet类的初始化方法中发布webservice,这样我们的中间件服务器启动的时候就会帮我们自动webservice了。

4)  xfire

开发WebService的框架不少,每个框架都有各自的有点,最近我用xfire练习开发WebService,下面是开发WebService的小例子,希望对入门的人有些小帮助
1.新建一个java web project命名为TestWebService,将xfire相关的jar包添加到lib目录中,写接口类和实现类
Java代码 复制代码  收藏代码
  1. package com.lamp.service;
  2. public interface MessageService {
  3. public String getName(String name);
  4. }
package com.lamp.service;public interface MessageService {public String getName(String name);
}

实现类
Java代码 复制代码  收藏代码
  1. package com.lamp.service.impl;
  2. import com.lamp.service.MessageService;
  3. public class MessageServiceImpl implements MessageService {
  4. public String getName(String name) {
  5. return "hellow " + name + ", welcome to WebService world";
  6. }
  7. }
package com.lamp.service.impl;import com.lamp.service.MessageService;public class MessageServiceImpl implements MessageService {public String getName(String name) {return "hellow " + name + ", welcome to WebService world";}}


在src目录下新建文件夹META-INF,然后再在其下新建文件夹xfire,在xfire目录下新建配置文件services.xml
Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://xfire.codehaus.org/config/1.0">
  3. <service>
  4. <name>MessageService</name>
  5. <serviceClass>com.lamp.service.MessageService</serviceClass>
  6. <implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass>
  7. </service>
  8. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0"><service><name>MessageService</name><serviceClass>com.lamp.service.MessageService</serviceClass><implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass></service>
</beans>

最后在web.xml中配置xfire的servlet
Xml代码 复制代码  收藏代码
  1. <servlet>
  2. <servlet-name>XFireServlet</servlet-name>
  3. <servlet-class>
  4. org.codehaus.xfire.transport.http.XFireConfigurableServlet
  5. </servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>XFireServlet</servlet-name>
  9. <url-pattern>/servlet/XFireServlet/*</url-pattern>
  10. </servlet-mapping>
  11. <servlet-mapping>
  12. <servlet-name>XFireServlet</servlet-name>
  13. <url-pattern>/services/*</url-pattern>
  14. </servlet-mapping>
<servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class></servlet><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping>

项目部署后在浏览器中通过http://localhost:8080/TestWebService/services访问看到远程访问的接口,并得到wsdl为http://localhost:8080/TestWebService/services/MessageService?wsdl

这样服务器端开发完毕,现在开始客户端的开发
新建一个java project也将xfire相关的jar引入,我用ant在客户端生成代理对象,在项目路径下新建build.xml,代码为
Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="WebService" basedir="." default="gen-webservice">
  3. <property file="build.properties">
  4. </property>
  5. <path id="project-classpath">
  6. <fileset dir="${lib.dir}">
  7. <include name="**/*.jar" />
  8. </fileset>
  9. </path>
  10. <target name="gen-webservice">
  11. <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" />
  12. <wsgen outputDirectory="${src.dir}"
  13. wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/>
  14. </target>
  15. </project>
<?xml version="1.0" encoding="UTF-8"?><project name="WebService" basedir="." default="gen-webservice"><property file="build.properties"></property><path id="project-classpath"><fileset dir="${lib.dir}"><include name="**/*.jar" /> </fileset></path><target name="gen-webservice"><taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" /><wsgen outputDirectory="${src.dir}"wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/></target></project>

其引入的build.properties文件也在项目路径下
src.dir=${basedir}/src
lib.dir=F:/WebService/xfire-1.2.6/lib
wsdl.dir=http://localhost:8080/TestWebService/services/MessageService?wsdl
其中lib.jar为我存放xfire的路径,运行ant得到代理对象
编写一个测试类
Java代码 复制代码  收藏代码
  1. package com.lamp.test;
  2. import com.lamp.ws.client.MessageServiceClient;
  3. import com.lamp.ws.client.MessageServicePortType;
  4. public class TestGetName {
  5. public static void main(String[] args) {
  6. MessageServiceClient msg = new MessageServiceClient();
  7. MessageServicePortType portType = msg.getMessageServiceHttpPort();
  8. String result = portType.getName("张三");
  9. System.out.println(result);
  10. }
  11. }
package com.lamp.test;import com.lamp.ws.client.MessageServiceClient;
import com.lamp.ws.client.MessageServicePortType;public class TestGetName {public static void main(String[] args) {MessageServiceClient msg = new MessageServiceClient();MessageServicePortType portType = msg.getMessageServiceHttpPort();String result = portType.getName("张三");System.out.println(result);}}

运行在控制台看到了hellow 张三, welcome to WebService world至此一个简单的WebService开发完毕

转载于:https://my.oschina.net/mayude/blog/408391

相关文章:

改变gazebo背景颜色

修改这里:

【Unity教程】创建一个完整的驾驶游戏

专业游戏设计 你会学到什么 在unity HDRP创建一个完整的驾驶游戏 定制不同类型的汽车 将人工智能汽车和人工智能航路点系统添加到你的赛道上 添加汽车展厅菜单以解锁和购买新车 在Blender中设计自己的赛道 易于理解的编码使游戏工作 流派:电子学习| MP4 |视频:h264&#xff0c…

哈夫曼编译码器

前言&#xff1a;又到了学校一年一度的数据结构课设的日子&#xff0c;经不住学弟学妹热心地“询问”我数据结构课设的内容&#xff0c;我就在这里把我之前数据结构课设做的东西总结一下 哈夫曼编译码器 我课设选择的题目是哈夫曼编译码器&#xff0c;类似于我们平时用的解压缩…

Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

题意&#xff1a; 线段树做法 分析&#xff1a; 因为每次都是在当前位置的前缀区间查询最大值&#xff0c;所以可以直接用树状数组优化。比线段树快了12ms~ 代码&#xff1a; #include<cstdio> #include<cmath> #include<iostream> #include<algorithm>…

2022-2028年中国钢筘行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢筘行业市场行业相关概述、中国钢筘行业市场行业运行环境、分析了中国钢筘行业市场行业的…

控制台绘制正切曲线

前面介绍了&#xff1a;控制台绘制正弦/余弦曲线 , 控制台绘制正弦曲线和余弦曲线同时显示 下面来看看正切曲线吧&#xff0c;其实也都差不多…… #include <stdio.h> #include <math.h>int main() {double y;int x,k;for(y10;y>-10;y--){katan(y)*7;if(k>0)…

PX4多机ros仿真报错

出现报错&#xff1a; 缺少配置文件&#xff0c;需要添加路径到文件中&#xff1b; 在根目录下打开终端输入&#xff1a; 出现下面一个界面&#xff1a;&#xff08;蓝色是我添加的&#xff09; 保存退出&#xff1b; 重新进行刚开始的操作&#xff1a; 使用默认的.launc…

Unity创建2D动作RPG游戏 Create Action 2D RPG Game in Unity

在Unity中创建动作2D RPG游戏 大小解压后&#xff1a;5.69G 时长10h 包含 Udemy Game Asset.unitypackage 源文件 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 你会学到什么 学习基础来提升C#&#xff0c; 为远程和特殊攻击…

Nginx学习4:负载均衡实例

Nginx配置实例-负载均衡 目标 在浏览器地址栏输入地址 http://192.168.126.131:8080/edu/a.html&#xff0c;负载均衡效果&#xff0c;平均分配到 8080 和 8081 端口中 准备工作 &#xff08;1&#xff09;准备两台 tomcat 服务器&#xff0c;一台 8080&#xff0c;一台 80…

2016030204 - git和github结合

1.下载和安装git客户端 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5232291.html 2.github上创建项目 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5233495.html 3.密钥相关信息设置 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5233630.html 4…

2022-2028年中国钢化玻璃行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢化玻璃行业市场行业相关概述、中国钢化玻璃行业市场行业运行环境、分析了中国钢化玻璃行…

nginx如何解决超长请求串

nginx是一个强大的http服务器&#xff0c;但是在使用过程中发现&#xff0c;当遇到超长的post请求或者get请求时&#xff0c;nginx会返回413、400、414等状态码&#xff0c;这是因为请求串长度超过了nginx默认的缓存大小或者请求串大小&#xff0c;那么我们需要怎么样来解决这些…

ubuntu安装qwt出现错误时"mkdir: 无法创建目录“/usr/local/qwt-6.1.3“: 权限不够"

报错&#xff1a; 在root用户下执行操作&#xff0c;参考链接安装qwt

Unity 2021人工智能导论 Introduction to Artificial Intelligence in Unity 2021

学习视频游戏开发中最常用的人工智能技术的基础知识。 你会学到什么 了解如何使用有限状态机 学习行为树的基础知识 了解如何实现阿斯塔寻路算法 了解如何在游戏中实现传感器 了解如何创建GOAP系统 了解植绒的基本知识 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频…

HikariPool 连接池问题

前言&#xff1a;今天在一个项目运行的时候发现一个很奇怪的问题&#xff0c;当我有一段时间无操作之后再进行插入操作的话&#xff0c;就会出现HikariPool相关的报错&#xff0c;在此记录一下 问题 2022-02-20 13:14:04.178 WARN 4012 --- [nio-8888-exec-6] com.zaxxer.hik…

谈谈对web标准的理解

Web标准不是某一个标准&#xff0c;而是由一系列标准组合而成。网页主要由三部分组成&#xff1a;结构、表现和行为。对应的标准也分三方面&#xff1a;结构化标准语言主要包括XHTML和HTML以及XML&#xff0c;表现标准语言主要包括CSS&#xff0c;行为标准主要包括对象模型&…

2022-2028年中国二次供水设备行业研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国二次供水设备行业市场行业相关概述、中国二次供水设备行业市场行业运行环境、分析了中国二…

linux磁盘配额管理

linux-用户磁盘配额磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制&#xff0c;每一用户只能使用最大配额范围内的磁盘空间磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服…

终端打不开(右键和快捷键)?因为phthon?

参考连接&#xff1a;https://www.cnblogs.com/dolphi/p/3622570.html 在总的环境变量中删除掉LC_ALL这一项&#xff0c;重新启动后即可恢复以及打开终端&#xff1b; 具体怎么操作&#xff1a;是师兄帮弄的&#xff0c;没看清楚怎么操作&#xff01;

Unity从头到尾无代码游戏制作学习教程

制作没有代码的游戏 Unity中的主视觉脚本&#xff01; 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:26.2 GB 含课程文件|时长:21小时 11分…

经常使用ARM汇编指令

一面学习&#xff0c;一面总结&#xff0c;一面记录。 以下是整理在网上找到的一些资料&#xff0c;简单整理记录一下&#xff0c;方便以后查阅。 ARM处理器的指令集能够分为跳转指令、数据处理指令、程序状态寄存器&#xff08;PSR&#xff09;处理指令、载入/存储指令、协处理…

解决 Could not autowire. No beans of ‘UserDao‘ type found 问题

前言&#xff1a;今天在完善项目的时候发现使用Autowired注入的Dao层依赖出现报错&#xff0c;但是不影响项目的运行&#xff0c;在此记录一下 问题 这个错误不影响项目运行&#xff0c;但是它看着很烦… 分析 Dao层代码&#xff1a; Mapper public interface UserDao {User…

2022-2028年中国二次供水产业发展动态及投资战略规划报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国二次供水行业市场行业相关概述、中国二次供水行业市场行业运行环境、分析了中国二次供水行…

Tomcat安全

一、版本安全 升级当前的tomcat版本为最新稳定版本。故名思议&#xff0c;最新稳定版本就要兼顾最新和稳定这两个概念。一个稳定的版本&#xff0c;是需要时间沉淀的&#xff0c;而最新又是相对于稳定版而言的最新。因此我们一般会选择当前大版本中&#xff0c;最新版本往前推几…

Linux系统下给Qt应用程序配置图标(其余的应用程序也是可以实现添加图标的)

添加链接描述1.创建启动脚本 打开终端输入&#xff1a; touch run.sh在/home目录下找到run.sh文件&#xff0c;双击打开编辑&#xff1b; #&#xff01;/bin/bash cd /execute/home/xxx/ &#xff03;/home/xxx/是Release编译以后生成的应用程序的路径 ./Json2.创建d…

Unity完全学习教程-从初学者到C#中的RPG游戏开发

打造3款游戏&学习Unity实用方式&#xff01;从基础开始&#xff0c;以一个RPG游戏结束。使用Unity 2020和C# 你会学到: 通过创建酷游戏的实用方法 游戏开发的基础和核心概念 创建一个拥有大量功能的角色扮演游戏 代码背后的数学解释。 要求 最基本的C#或其他面向对象语言…

2345电脑管家_极限挑战:同时安装4大国产杀毒软件,我的电脑是最安全的?

还没到国庆假期&#xff0c;老毛桃就提前给自己放了假&#xff0c;闲着就作妖&#xff0c;这不&#xff1f;现在就忙着卸载。人固有一秃&#xff0c;或秃于科研&#xff0c;或秃于卸载&#xff01;说到作妖&#xff0c;是怎么一回事呢&#xff1f;此前不少网友私信让老毛桃挑战…

Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)

一、Sublime Text 3 下载。 官方下载地址&#xff1a;http://www.sublimetext.com/ 二、Sublime Text 3 安装。 打开安装包&#xff0c;进行傻瓜式安装。 三、注册。 点击Help&#xff0c;选择Enter License&#xff0c;出现如下输入框。 输入注册码。 —– BEGIN LICENSE —–…

2022-2028年中国儿童医疗行业深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国儿童医疗行业市场行业相关概述、中国儿童医疗行业市场行业运行环境、分析了中国儿童医疗行…

使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)

简述&#xff1a; 结合Spring和Hibernate进行开发 使用Autowired实现依赖注入&#xff0c; 实现一个学生注册的功能&#xff0c;做一个技术原型 从DAO(Repository) -> Service -> Controller 目录结构&#xff1a; 使用Maven做本地包管理&#xff0c; pom.xml [java]view…