java如何写接口给别人调用的示例代码

计算机语言分类有很多,如C、C++、C#、Java、Php、Python等等,她们有各自的特性及擅长的领域,但她们各自又不是全能的。在一个稍微大型一点的项目都会用到多种语言共同完成,那么这些编程语言如何进行通信呢。什么意思呢,就是比如说我Java写的一个方法,其他编程语言要怎么去调用呢?这就是本文要探讨的问题了。

一般来说,方法层面的编程语言通信用的是网络接口形式,只暴露出形参和结果供别人调用。接口一般分为接口定义者和接口调用者,定义者可以规定接收参数的类型及返回形式,而接口定义者则只能完全按照接口定义者规定的参数进行访问。就叫是我们所说的webService(网络服务)。

以前的做法是利用XML作接口格式定义,然后通过Http做通讯和请求,如大名鼎鼎的SOAP,其实现在也是的,只不过现在流行RestFul风格的Rest接口形式,但用的还是XML+HTTP,那这两者有啥区别呢?最大的区别就是SOAP返回的主要是XML格式,有时还需要附带一些辅助文件,而Rest则还可以返回JSON类型的字符串,减少了很多繁乱的XML标签。本文就以Java为例,用她写一个接口,并让其他人去调用,以此来简单展示接口调用是怎么样一个过程。

步骤:

1、本机装有Java JDK运行环境及编程IDE(如Myeclipse)

2、建立一个maven项目,用以下载jar包,项目结构如下:

3 pom.xml文件内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>ws</groupId>
 <artifactId>restful</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>restful-server</name>
 <url>http://maven.apache.org</url>
 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jersey.version>2.6</jersey.version>
    <jersey-spring.version>2.23.1</jersey-spring.version>
    <spring.version>4.2.7.RELEASE</spring.version>
    <servlet-api-version>3.1.0</servlet-api-version>
    <logback.version>1.1.1</logback.version>
    <jcloverslf4j.version>1.7.6</jcloverslf4j.version>
  </properties>
 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.1</version>
   <scope>test</scope>
  </dependency>

  <dependency>
      <groupId>org.glassfish.jersey.ext</groupId>
      <artifactId>jersey-spring3</artifactId>
      <version>${jersey-spring.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet</artifactId>
      <version>${jersey-spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet-core</artifactId>
      <version>${jersey-spring.version}</version>
    </dependency>

     <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-json-jackson</artifactId>
      <version>${jersey.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-multipart</artifactId>
      <version>${jersey.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.ext</groupId>
      <artifactId>jersey-entity-filtering</artifactId>
      <version>${jersey.version}</version>
    </dependency>

    <!-- Spring4.2 dependencies -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${servlet-api-version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- Logback dependencies -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>${jcloverslf4j.version}</version>
    </dependency>

 </dependencies>
 <build>
  <finalName>restful</finalName>
 </build>
</project>

4 applicationContext.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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

  <context:component-scan base-package="com.kendy.*"></context:component-scan>
</beans>

5 web.xml则主要配置采用的容器、日志管理及拦截器,拦截器可以实现到达请求郑涛之前进行身份认证,踢除没有访问资格的请求,而rest项目一般是用Jersey容器。配置如下:(kendy只是我的英文名,你们可以自己定义路径)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name></display-name>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
  <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
 </listener>
 <servlet>
  <servlet-name>jersey-serlvet</servlet-name>
  <servlet-class>
      org.glassfish.jersey.servlet.ServletContainer
    </servlet-class>
  <init-param>
   <param-name>javax.ws.rs.Application</param-name>
   <param-value>com.kendy.filter.RestJaxRsApplication</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>jersey-serlvet</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>
</web-app>

6 拦截器如下:

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map.Entry;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;

/**
 * 拦截请求
 */
@Provider
public class MyFilter implements ContainerRequestFilter {

 @Override
 public void filter(ContainerRequestContext context) throws IOException {

  //打印出所有请求头
  MultivaluedMap<String, String> map = context.getHeaders();
  for(Entry<String, List<String>> entry : map.entrySet()){
  	String key = entry.getKey();
  	List<String> valueList = entry.getValue();
  	String values = valueList.toString();
  	System.out.println(key + ":"+values.substring(1,values.length()-1));
  }

7 注册Jersey容器所要管理的类

import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.server.ResourceConfig;

import com.kendy.restful.AccountManager;
import com.kendy.restful.AuthorityManager;
import com.kendy.restful.CardManager;
import com.kendy.restful.DeviceManager;
import com.kendy.restful.UserResource;

/**
 * ${DESCRIPTION}
 */
public class RestJaxRsApplication extends ResourceConfig {

  /**
   * Register JAX-RS application components.
   */
  public RestJaxRsApplication() {

    //服务类所在的包路径
    packages("com.kendy.*");

    // register application resources
    this.register(YouClass.class);

    // register filters
    this.register(MyFilter.class);
    //this.register(RequestContextFilter.class);

    register(JacksonJsonProvider.class);
    //register(MultiPartFeature.class);
  }
}

8 接口定义(Restful风格)

package com.kendy.restful;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Component;

@Component
@Path("/CardManager")
public class CardManager {

  private SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  @POST
  @Path("size")
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces(MediaType.APPLICATION_JSON)
  public Map<String,Object> size(){
  	Map<String,Object> map = new HashMap<>();
  	//do something here
  	map.put("Size", 1024);
  	return map;
  }

  @POST
  @Path("getDetail")
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces(MediaType.APPLICATION_JSON)
  public Map<String,List<Map<String,Object>>> getDetail(){
  	Map<String,List<Map<String,Object>>> map = new HashMap<>();
  	//do something here
  	List<Map<String,Object>> list = new ArrayList<>();
  	Map<String,Object> subMap = new HashMap<>();
  	subMap.put("UUID", 10086);
  	subMap.put("CardID", 10081);
  	subMap.put("StartTime", sdf.format(new Date()));
  	subMap.put("EndTime", sdf.format(new Date()));
  	list.add(subMap);
  	map.put("Card", list);

  	return map;
  }
}

9 调用接口,有多种方式,本文用HttpClient

/**
   * 发送 post请求webService接口
   * @param url 访问的接口地址
   * @param account 用户名
   * @param code 密码
   * @param param 查询参数
   * @return HttpResponse 该类包含请求方法的态码及返回的数据
   */
  public static HttpResponse post(String url,String account,String code,Map<String,Object> param) {
    //创建HttpClient实例及Post方法
  	HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);
    //对用户密码MD5加密
		code = getMD5(code);
		//添加相关请求头,依情况而定
		httppost.setHeader("Authorization","WSSE profile=\"UsernameToken\"");
		httppost.setHeader("X-WSSE","UsernameToken Username=\""+account+"\",PasswordDigest=\""+code+"\"");
		httppost.addHeader("Content-type","application/json; charset=utf-8");
		httppost.setHeader("Accept", "application/json");
		httppost.setHeader("Connection","keep-alive");
		httppost.setHeader("Accept-Encoding","gzip");
		httppost.setHeader("Accept-Language", "zh-CN,en,*");
		httppost.setHeader("User-Agent","Mozilla/5.0");
		//传递请求参数
		String paramJsonStr = JSON.toJSONString(param);
		if(param != null)
			httppost.setEntity(new StringEntity(paramJsonStr, Charset.forName("UTF-8")));
		HttpResponse response = null;
		try {
			//执行post请求
      response = httpclient.execute(httppost);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return response;
  }

10 返回接口

11 最后通过Map、List和Json工具对返回来的字面量进行各种处理。

	/**
	 * 将从接口返回的JSON数据转换为实体集合等待插入数据表
	 * 实体 IgmAccessControlChannelModel --> IGM_ACCESSCONTROL_CHANNEL
	 * 	  IgmStationDoorModel --> IGM_STATION_DOOR
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	private Map<String,Object> getDeviceEntityList(String data){
		Map<String,Object> totalMap = new HashMap<>();
		//把以下三个结果放到totalMap里返回
		List<IgmAccessControlChannelModel> accessControlList = new ArrayList<>();
		List<IgmStationDoorModel> doorList = new ArrayList<>();
		List<String> deviceIds = new ArrayList<>();

		IgmAccessControlChannelModel accessControlModel = null;
		IgmStationDoorModel stationDoorModel = null;

		Map map = JSON.parseObject(data, Map.class);
		map = (Map<String,List<Map<String,Object>>>)map;
		List<Map<String,Object>> deviceList = (List<Map<String, Object>>) map.get("Device");

		for(Map<String,Object> deviceMap : deviceList){
			String deviceId = (String)(deviceMap.get("DeviceID")+"");
			Object channels = deviceMap.get("Channels");
			List<Map<String,Object>> channelList = (List<Map<String,Object>>)channels;

			String id = ""; //用于设置igmaccessControlchannel表和igmstationDoor表的stationDoorid
			//判断该门禁设备ID在本平台是否匹配
			boolean isMatched = isDeviceIdMatched(deviceId);

			if(isMatched){
				for(Map<String,Object> chnnelMap : channelList){
					accessControlModel = new IgmAccessControlChannelModel();
					stationDoorModel = new IgmStationDoorModel();
					for(Map.Entry<String, Object> entry : chnnelMap.entrySet()){
						String key = entry.getKey().trim();
						String value = "";
						if(key.equals("Channel")){
							value =(Integer)entry.getValue()+"";
						}else{
							value = (String)entry.getValue();
						}

						switch(key){
						case "Channel":
							accessControlModel.setCommandCode(Integer.parseInt(value));
							accessControlModel.setControlChannelName("控制通道"+value);
							stationDoorModel.setDoorCode(value);
							break;
						case "Description":
							stationDoorModel.setStationDoorName(value);
							break;
						default: break;
						}
					}
					id = UUID.randomUUID().toString();

					accessControlModel.setAccessControlChannelId(UUID.randomUUID().toString());
					accessControlModel.setDeviceId(deviceId);
					accessControlModel.setStationDoorId(id);

					stationDoorModel.setStationDoorId(id);
					stationDoorModel.setDeviceId(deviceId);
					stationDoorModel.setRemark("指纹门禁");

					accessControlList.add(accessControlModel);
					doorList.add(stationDoorModel);
				}
				deviceIds.add(deviceId);
			}else{
				//deviceId不匹配的跳过
			}
		}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现小i机器人api接口调用示例

    复制代码 代码如下: package com.weixin.util; import java.io.IOException;import java.util.Random;import org.apache.commons.codec.binary.Hex;import org.apache.commons.codec.digest.DigestUtils;import org.apache.commons.httpclient.HttpClient;import org.apache.com

  • java微信开发API第三步 微信获取以及保存接口调用凭证

    微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分:     接口调用凭证access_token的作用以及解释     如何获取接口调用凭证access_token     如何实现微信文档所说的"中控服务器"的实现以保存access_token * 本文结束会给出包括本文前三篇文章的所有演示源码  为什么要获取和保存接口调用凭证access_token  •开始开发-获取接口调用凭据 ◦文档地址:http://mp.we

  • Java接口异步调用

    前言 java接口调用从调用方式上可以分为3类:同步调用,异步调用,回调:同步调用基本不用说了,它是一种阻塞式的调用,就是A方法中直接调用方法B,从上往下依次执行.今天来说说异步调用. 什么是异步调用? 我的理解就是在方法A中调用方法B,但是方法B很耗时,如果是同步调用的话会等方法B执行完成后才往下执行,如果异步的话就是我调用了方法B,它给我个返回值证明它已接受调用,但是它并没有完成任务,而我就继续往下执行.可能有表达不当的地方,欢迎指正. 再用一个生活中的例子吧: 异步调用就是你 喊 你朋友吃

  • Java编程接口调用的作用及代码分享

    很多JAVA初级程序员对于接口存在的意义很疑惑.不知道接口到底是有什么作用,为什么要定义接口. 好像定义接口是提前做了个多余的工作.下面我给大家总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力. 2.简单.规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些

  • 用Java实现全国天气预报的api接口调用示例

    step1:选择本文所示例的接口"全国天气预报接口" 聚合数据url:http://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key. step3:学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.

  • Java调用WebService接口的方法

    本文实例讲述了Java调用WebService接口的方法.分享给大家供大家参考.具体如下: 这里讲述有参方法Add,代码如下: 复制代码 代码如下: public static void addTest() {         try ...{             Integer i = 1;             Integer j = 2;                         //WebService URL             String service_url =

  • Java编程实现NBA赛事接口调用实例代码

    第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口 第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数调用. 第三步:调用别人提供的接口方法 代码如下: package juheapi.nba; /** * Created by Administrator on 2017/11/19/019. */ import net.sf.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; i

  • Java编程调用微信接口实现图文信息推送功能

    本文实例讲述了Java编程调用微信接口实现图文信息等推送功能.分享给大家供大家参考,具体如下: Java调用微信接口工具类,包含素材上传.获取素材列表.上传图文消息内的图片获取URL.图文信息推送. 微信图文信息推送因注意html代码字符串中将双引号(")替换成单引号('),不然信息页面中包含图片将无法显示且图片后面的内容也不会显示 官方文档:http://mp.weixin.qq.com/wiki/home/ StringBuilder sb=new StringBuilder(); sb.a

  • 浅谈java调用Restful API接口的方式

    摘要:最近有一个需求,为客户提供一些RestfulAPI接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试RestfulAPI接口,由于使用的是HTTPS,所以还要考虑到对于HTTPS的处理.由于我也是首次使用Java调用restful接口,所以还要研究一番,自然也是查阅了一些资料. 分析:这个问题与模块之间的调用不同,比如我有两个模块frontend和backend,frontend提供前台展示,backend提供数据支

  • java如何写接口给别人调用的示例代码

    计算机语言分类有很多,如C.C++.C#.Java.Php.Python等等,她们有各自的特性及擅长的领域,但她们各自又不是全能的.在一个稍微大型一点的项目都会用到多种语言共同完成,那么这些编程语言如何进行通信呢.什么意思呢,就是比如说我Java写的一个方法,其他编程语言要怎么去调用呢?这就是本文要探讨的问题了. 一般来说,方法层面的编程语言通信用的是网络接口形式,只暴露出形参和结果供别人调用.接口一般分为接口定义者和接口调用者,定义者可以规定接收参数的类型及返回形式,而接口定义者则只能完全按照

  • 利用Java手写一个简易的lombok的示例代码

    目录 1.概述 2.lombok使用方法 3.lombok原理解析 4.手写简易lombok 1.概述 在面向对象编程中,必不可少的需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此.相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复写Getter/Setter.构造器方法.字符串输出的ToString方法.Equals/HashCode方法等.我们都知道Lombok能够替大家完成这些繁琐的操作,但是其背后的原理很少有人会

  • 如何用Java Stream写出既高雅又装*的代码

    目录 一. 冷静分析 二. 直接开装 2.1 初级炫 2.2 普通炫 2.3 高级炫 2.4 再炫一波 拿到当前key与对应的数量 2.5 Map Reduce炫 git仓库直达 List<String> strings = Lists.newArrayList("name=kk", "sex=1", "tel=1111", "email=xx@qq.com","name=ww","n

  • Java实现手写乞丐版线程池的示例代码

    目录 前言 线程池的具体实现 线程池实现思路 线程池实现代码 线程池测试代码 杂谈 总结 前言 在上篇文章线程池的前世今生当中我们介绍了实现线程池的原理,在这篇文章当中我们主要介绍实现一个非常简易版的线程池,深入的去理解其中的原理,麻雀虽小,五脏俱全. 线程池的具体实现 线程池实现思路 任务保存到哪里? 在上篇文章线程池的前世今生当中我们具体去介绍了线程池当中的原理.在线程池当中我们有很多个线程不断的从任务池(用户在使用线程池的时候不断的使用execute方法将任务添加到线程池当中)里面去拿任务

  • Java spring boot 实现支付宝支付功能的示例代码

    一.准备工作: 1.登陆支付宝开发者中心,申请一个开发者账号. 地址:https://openhome.alipay.com/ 2.进入研发服务: 3.点击链接进入工具下载页面: 4.点击下载对应版本的RSA公钥生成器: 5.生成公钥密钥(记录你的应用私钥): 6.在支付宝配置公钥(点击保存): 二.搭建demo 1.引入jia包: <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alip

  • Java利用Redis实现高并发计数器的示例代码

    业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信.一个接口一分钟限制多少请求.一个接口一天限制调用多少次等等.使用Redis的Incr自增命令可以轻松实现以上需求.以一个接口一天限制调用次数为例: /** * 是否拒绝服务 * @return */ private boolean denialOfService(String userId){ long count=JedisUtil.setIncr(DateUtil.getDate()+"&"+user

  • Springboot使用redis实现接口Api限流的示例代码

    前言 该篇介绍的内容如题,就是利用redis实现接口的限流(  某时间范围内 最大的访问次数 ) . 正文 惯例,先看下我们的实战目录结构: 首先是pom.xml 核心依赖: <!--用于redis数据库连接--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId>

  • Java实现可视化走迷宫小游戏的示例代码

    目录 效果图 数据层 视图层 控制层 效果图 数据层 本实例需要从 .txt 文件中读取迷宫并绘制,所以先来实现文件读取IO类 MazeData.java,该程序在构造函数运行时将外部文件读入,并完成迷宫各种参数的初始化,注意规定了外部 .txt 文件的第一行两个数字分别代表迷宫的行数和列数.此外还提供了各类接口来读取或操作私有数据. import java.io.BufferedInputStream; import java.io.File; import java.io.FileInput

  • 使用Vue调取接口,并渲染数据的示例代码

    刚接触vue.js框架的时候,很伤脑筋.今天整理一下post/get两种方式,简单的调取数据库数据,并进行渲染,希望帮助大家! 首先,在HTML页面引入: //引入vue.js文件 <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> 引入vue-resource.min.js文件,就可以引入接口方法了 <script src="https://cdn.st

  • java中的前++和后++的区别示例代码详解

    java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别! 其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加! 前++和后++总结:其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加! 请大家看下面的例子就明白了! public class Test { public static void main(String[] args) { //测试,前加加和后加加 //前++和后++总结:其实大家只要

随机推荐