精华内容
下载资源
问答
  • 下面小编就为大家分享一篇 Java后台接口开发初步实战教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java接口开发流程

    千次阅读 2018-12-16 18:46:03
    java接口开发流程 前后端分离接口写法 前后端不分离写法

    java接口开发流程

    在这里插入图片描述
    在这里插入图片描述

    前后端分离接口写法

    在这里插入图片描述

    前后端不分离写法

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Java接口教程

    2019-04-10 14:00:29
    Java里如何写接口,里面有详细教程及案例,欢迎下载。
  • 2.创建应用,用于生成开发测试和live的clientID和密钥 3.导入代码开发测试 这里注意以下: 代码我按照上面的写好启动报错,不能自动注入APIContext的,这里修为不需要注入,直接构造即可; demo我整理好了,下载...

    参考文章:https://blog.csdn.net/change_on/article/details/73881791

    总结步骤:

    1.创建商家账号
    2.创建应用,用于生成开发测试和live的clientID和密钥
    3.导入代码开发测试

    这里注意以下:

    代码我按照上面的写好启动报错,不能自动注入APIContext的,这里修为不需要注入,直接构造即可;

    demo我整理好了,下载直接可用。

    下载地址:https://download.csdn.net/download/x_san3/10675884

     

                    ---------------------------------------------欢迎关注公众号(生活不止有代码)--------------------------------------------

                                                                          

    展开全文
  • JAVA基础——接口(全网最详细教程

    万次阅读 多人点赞 2018-05-10 09:46:42
    官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 我的解释:接口...

                                       Java基础——接口


     

     

    接口概念


        官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

        我的解释:接口可以理解为一种特殊的类,里面全部是由全局常量公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法。(JDK1.8之前可以这样理解)

     

    接口的特点


        就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。

     

    • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
    • 一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
    • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类
    • 一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

    为什么要用接口


    1.     接口被用来描述一种抽象。
    2. 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限
    3. 接口也被用来实现解耦。
    4. 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

     

     

     

    接口的语法实现


        为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

        一个简单的接口就像这样:拥有全局变量和抽象方法。

        为了实现这个接口,我们使用implements关键词去实现接口:

    其中testClass类实现了我们上面刚才定义的 in1 这个接口,既然你要实现接口,也就是实现接口代表的一种能力,那么你就必须去实现接口给你规定的方法,只有把接口给你规定的抽象方法都给实现了,才承认你这个类实现了这个接口,实现了这个接口代表的某种功能。上图实现了接口中规定的display()方法。

        写一个测试类,用来测试一下我们刚才实现的这个接口,因为testclass类的对象t实现了接口规定的display方法,那么自然而然就可以调用display()方法咯。

        有兴趣的同学可以去这个在线IDE亲自试一试:点击打开链接

     

     

    接口的进一步理解


     

        我们知道,如果某个设备需要向电脑中读取或者写入某些东西,这些设备一般都是采用USB方式与电脑连接的,我们发现,只要带有USB功能的设备就可以插入电脑中使用了,那么我们可以认为USB就是一种功能,这种功能能够做出很多的事情(实现很多的方法),其实USB就可以看做是一种标准,一种接口,只要实现了USB标准的设备我就认为你已经拥有了USB这种功能。(因为你实现了我USB标准中规定的方法),下面是具体的例子:

     

    先声明USB接口:其中规定了要实现USB接口就必须实现接口规定实现的read( )和write( )这两个方法。

    interface USB {
       
    void read();

       
    void write();
    }

    然后在写一个U盘类和一个键盘类,这两个类都去实现USB接口。(实现其中的方法)

    class YouPan implements USB {

        @Override

        public void read() {

            System.out.println("U盘正在通过USB功能读取数据");

        }

        @Override

        public void write() {

            System.out.println("U盘正在通过USB功能写入数据");

        }

    }

     

     

    这是U盘的具体实现。

    class JianPan implements USB {

        @Override

        public void read() {

            System.out.println("键盘正在通过USB功能读取数据");

        }

        @Override

        public void write() {

            System.out.println("键盘正在通过USB功能写入数据");

        }

    }

     

     

    这是键盘的具体实现。

        那么,现在U盘和键盘都实现了USB功能,也就是说U盘和键盘都能够调用USB接口中规定的方法,并且他们实现的方式都不一样。

    我们在写一个测试,来看看具体的实现:

    public class Main {

        public static void main(String[] args) {

            //生成一个实现可USB接口(标准)的U盘对象

            YouPan youPan = new YouPan();

            //调用U盘的read( )方法读取数据

            youPan.read();

            //调用U盘的write( )方法写入数据

            youPan.write();

            //生成一个实现可USB接口(标准)的键盘对象

            JianPan jianPan = new JianPan();

            //调用键盘的read( )方法读取数据

            jianPan.read();

            //调用键盘的write( )方法写入数据

            jianPan.write();

        }

    }

     

     

     

    结果如下:

     

     

        感兴趣的同学可以去在线IDE平台自己验证一下:点击打开链接

     

     

    关于接口的几个重点


    1. 我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。因此,上图中最后的方法调用我们还可以这样写:(实际上就是使用了Java中多态的特性)

    public class Main {

        public static void main(String[] args) {

            //生成一个实现可USB接口(标准)的U盘对象

            //但是使用一个接口引用指向对象

            //USB接口类引用可以指向一个实现了USB接口的对象

            USB youPan = new YouPan();

            //调用U盘的read( )方法读取数据

            youPan.read();

            //调用U盘的write( )方法写入数据

            youPan.write();

            //生成一个实现可USB接口(标准)的键盘对象

            //但是使用一个接口引用指向对象

            //USB接口类引用可以指向一个实现了USB接口的对象

            USB jianPan = new JianPan();

            //调用键盘的read( )方法读取数据

            jianPan.read();

            //调用键盘的write( )方法写入数据

            jianPan.write();

        }

    }                                                                                                                                     

     

     2.一个类可以实现不止一个接口。

     

    3.一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承

    4.一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。

    5.接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。

    6.接口用来弥补类无法实现多继承的局限。

    7.接口也可以用来实现解耦。

    接口的通俗理解


     

        前面我们讲多态的时候用“空调”——“遥控器”的方式去理解多态,实际上在上面的的几个重点中的第一条讲的也是多态的实现,比如,我们可以把“节能”作为一种标准,或者说节能就是一个“接口”,这个接口中有一个方法,叫做变频方法,任何空调,如果要称得上叫做节能空调的话,那么必须实现“节能”这个接口,实现“节能”这个接口,也就必须实现“节能”接口中规定实现的“变频”方法,这样才算是真正的实现了“节能”这个接口,实现了“节能”这个功能。

        当某个空调实现了“节能”接口后,这个空调就具备了节能的功能,那么我们也可以不用空调类的引用指向空调对象,我们可以直接使用一个“节能”接口类型引用的“遥控器”去指向“空调”,虽然这个“遥控器”上面只有一个按键,只有一个“变频”的方法,但是“遥控器”所指向的空调是实现了“节能”这个接口的,是有“变频”方法的实现的,我们用这个只有一个“变频”方法的遥控器去命令空调调用“变频”方法,也是行得通的,实在不清楚的同学可以去看我的另一篇文章:JAVA之对象的多态性

     

     

    接口的标识用法


        虽然接口内部定义了一些抽象方法,但是并不是所有的接口内部都必须要有方法,比如Seriallizable接口,Seriallizable接口的作用是使对象能够“序列化”,但是Seriallizable接口中却没有任何内容,也就是说,如果有一个类需要实现“序列化”的功能,则这个类必须去实现Seriallizable接口,但是却并不用实现方法(因为接口中没有方法),此时,这个Serilizable接口就仅仅是一个“标识”接口,是用来标志一个类的,标志这个类具有这个“序列化”功能。具体的实现请参考我的另一篇文章——JAVA之IO流。

     

    接口在生活中的思想体现


    其实,在我们的生活当中,有很多地方都体现了“接口”的思想,想必,正在阅读这篇博文的你,是不是也喜欢摄影呢?

    佳能(Canon)EOS 80D 单反相机 单反套机(EF-S 18-200mm f/3.5-5.6 IS 单反镜头)

    玩摄影的童鞋都知道,单反由相机镜头组成,相机分不同的型号,有半画幅的,也有全画幅的。镜头也是一样的,分长焦,短焦;还有定焦和变焦。每种镜头都有各自特定的发挥场景正是因为镜头的多元化,使得我们的摄影能够“术业有专攻”。大家想一想,如果我们的单反相机部分和镜头部分是固定在一起的,不能够更换镜头,那么将会多么的糟糕啊!

    因此,每个相机品牌为了能够兼容不同的镜头,各自发布了一套镜头卡口的标准,这套标准就好比我们前面提到的“接口”,都是某种“约束”。举个栗子,我们佳能的相机,不管你是哪一家镜头生产厂商,腾龙也好,适马也好,只要你按照我佳能卡口的标准来生产镜头,你生产的镜头都能够很好的在我佳能相机上面驱动。

    因此,当我们打开“狗东”,准备给自己的新相机买镜头的时候,就不难发现,我们需要根据自己相机的品牌来挑选特定卡口的镜头,这样的镜头才能被我们的相机正常驱动。

    回到Java上面来说,其实接口给我们带来的最大的好处就是“解耦”了,相机能够搭配不同的镜头,才能有各种各样的搭配玩法,变得更加的灵活。在软件系统中也是一样的,接口可以有很多不同“特色”的实现类,我们只需要声明同一个接口,却可以引用很多个该“接口”引申出来的“子类”,这不也大大增强了我们软件系统中组件的灵活性吗?

    聪明的你,对于“接口”的理解是不是又更加的深入了呢?

     

    基础不牢?新手不友好?无人带路?关注《扬俊的小屋》公众号吧!


     

     

     

    参考资料


    1.Java开发实战经典》 李兴华著  清华大学出版社

    2.https://www.geeksforgeeks.org/interfaces-in-java  作者:Mehak Kumar. and Nitsdheerendra.   翻译:刘扬俊

     

    博客文章版权说明


    第一条 本博客文章仅代表作者本人的观点,不保证文章等内容的有效性。

    第二条 本博客部分内容转载于合作站点或摘录于部分书籍,但都会注明作/译者和原出处。如有不妥之处,敬请指出。

    第三条 征得本博客作者同意的情况下,本博客的作品允许非盈利性引用,并请注明出处:“作者:____转载自____”字样,以尊重作者的劳动成果。版权归原作/译者所有。未经允许,严禁转载

    第四条 对非法转载者,“扬俊的小屋”和作/译者保留采用法律手段追究的权利

    第五条 本博客之声明以及其修改权、更新权及最终解释权均属“扬俊的小屋”。

    第六条 以上声明的解释权归扬俊的小屋所有。

     

    展开全文
  • java接口开发入门示例

    万次阅读 2018-05-29 16:20:09
    此次接口开发不使用任何框架,需下载gson.jar,mysql-connector.jar,servlet-api.jar,以下为接口的开发思路1.创建数据表,我这边使用的是mysql数据库/* SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.5.49...

    最近在测试中发现mysql数据库保存测试用例,测试结果是一种不错的选择,为了后期方便在客户端展示测试,便写了个接口。此次接口开发不使用任何框架,需下载gson.jar,mysql-connector.jar,servlet-api.jar,以下为接口的开发思路

    1.创建数据表,我这边使用的是mysql数据库

    /*
    SQLyog 企业版 - MySQL GUI v8.14 
    MySQL - 5.5.49 : Database - test
    *********************************************************************
    */
    
    
    /*!40101 SET NAMES utf8 */;
    
    /*!40101 SET SQL_MODE=''*/;
    
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    USE `test`;
    
    /*Table structure for table `testcase` */
    
    DROP TABLE IF EXISTS `testcase`;
    
    CREATE TABLE `testcase` (
      `caseId` INT(11) NOT NULL AUTO_INCREMENT,
      `caseName` VARCHAR(255) CHARACTER SET latin1 NOT NULL,
      `caseDetail` VARCHAR(255) CHARACTER SET latin1 NOT NULL,
      `caseDevice` VARCHAR(255) CHARACTER SET latin1 NOT NULL,
      PRIMARY KEY (`caseId`)
    ) ENGINE=INNODB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
    
    /*Data for the table `testcase` */
    
    INSERT  INTO `testcase`(`caseId`,`caseName`,`caseDetail`,`caseDevice`) VALUES (2,'2','233','444'),(16,'dsf','sf','sfd'),(17,'safd','sadf','asf'),(18,'saf','ggd','sdf'),(19,'dsaf','sdf','sdf'),(20,'sfd','sfd','(NfdsULL)'),(21,'sdf','v','v'),(22,'f','f','e'),(23,'w','r3','rt'),(24,'er','rtrt','sfad'),(25,'sf','sdf','fds'),(26,'sa','s','s'),(27,'e','e','e'),(28,'sa','rt','rt'),(29,'we','ew','qw'),(30,'we','(NULfL)','dsf'),(31,'fd','s','g'),(32,'s','g','f'),(33,'sf','f','f'),(34,'c','c','c'),(35,'e','e','e'),(36,'d','d','q'),(37,'q','e','r'),(38,'f','r','g'),(39,'g','(NULgL)','g'),(40,'gg','g','d'),(41,'f','f','f'),(42,'f','f','f'),(43,'f','f','f'),(44,'v','f','g'),(45,'e','e','r'),(46,'4','rt','fg'),(47,'dsf','ds','sdf');
    
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    2.编写数据库工具类
    package model;
    
    import java.sql.*;
    
    public class DBconn {
        static String url = "jdbc:mysql://localhost:3306/test?useunicuee=true& characterEncoding=utf8"; 
        static String username = "root"; 
        static String password = "123456"; 
        static Connection  conn = null;
        static ResultSet rs = null;
        static PreparedStatement ps =null;
        public static void init(){
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(url,username,password);
            } catch (Exception e) {
                System.out.println("init [SQL驱动程序初始化失败!]");
                e.printStackTrace();
            }
        }
        public static int addUpdDel(String sql){
            int i = 0;
            try {
                PreparedStatement ps =  conn.prepareStatement(sql);
                i =  ps.executeUpdate();
            } catch (SQLException e) {
                System.out.println("sql数据库增删改异常");
                e.printStackTrace();
            }
            
            return i;
        }
        public static ResultSet selectSql(String sql){
            try {
                ps =  conn.prepareStatement(sql);
                rs =  ps.executeQuery(sql);
            } catch (SQLException e) {
                System.out.println("sql数据库查询异常");
                e.printStackTrace();
            }
            return rs;
        }
        public static void closeConn(){
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println("sql数据库关闭异常");
                e.printStackTrace();
            }
        }
    }
    3.编写实体类
    package model;
    
    public class TestCase {
         private int id;
         private String caseName;
         private String caseDetail;
         private String caseDevice;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getCaseName() {
            return caseName;
        }
        public void setCaseName(String caseName) {
            this.caseName = caseName;
        }
        public String getCaseDetail() {
            return caseDetail;
        }
        public void setCaseDetail(String caseDetail) {
            this.caseDetail = caseDetail;
        }
        public String getCaseDevice() {
            return caseDevice;
        }
        public void setCaseDevice(String caseDevice) {
            this.caseDevice = caseDevice;
        }
         
    }

    4.新建一个分页实体类,以便后期数据做分页

    package model;
    
    import java.util.List;
    
    public class TestCaseTotal {
        private int total; 
        private List<TestCase> rows; 
        
        
        public TestCaseTotal() {
        }
        public TestCaseTotal(int total, List<TestCase> rows) {
            this.total = total;
            this.rows = rows;
        }
        public int getTotal() {
            return total;
        }
        public void setTotal(int total) {
            this.total = total;
        }
        public List<TestCase> getRows() {
            return rows;
        }
        public void setRows(List<TestCase> rows) {
            this.rows = rows;
        }
        
    }
    5.基础操作写到一个接口里
    package model;
    
    import java.util.List;
    
    
    public interface TestCaseDao {
        public List<TestCase> getCaseAll();
        public boolean addCase(TestCase testCase) ;
        public boolean deleteCase(int id) ;
        public boolean updateCase(TestCase testCase) ;
    
    }
    6.实现Dao接口
    package model;
    
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    
    
    public class TestCaseDaoImpl implements TestCaseDao {
        private PreparedStatement ptmt = null;  
        private ResultSet rs = null;
        @Override
        public List<TestCase> getCaseAll() {
            // TODO Auto-generated method stub
            List<TestCase> list = new ArrayList<TestCase>();
            try {
                DBconn.init();
                ResultSet rs = DBconn.selectSql("select * from testcase");
                while(rs.next()){
                    TestCase testCase=new TestCase();
                    testCase.setId(rs.getInt("caseId"));
                    testCase.setCaseName(rs.getString("caseName"));
                    testCase.setCaseDetail(rs.getString("caseDetail"));
                    testCase.setCaseDevice(rs.getString("caseDevice"));
                    
                    list.add(testCase);
                }
                DBconn.closeConn();
                return list;
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
            
        }
    
        @Override
        public boolean addCase(TestCase testCase) {
            // TODO Auto-generated method stub
            boolean flag = false;
            DBconn.init();
            int i =DBconn.addUpdDel("insert into user(caseName,caseDetail,caseDevice) " +
                    "values('"+testCase.getCaseName()+"','"+testCase.getCaseDetail()+"','"+testCase.getCaseDevice()+"')");
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
    
        @Override
        public boolean deleteCase(int id) {
            // TODO Auto-generated method stub
            boolean flag = false;
            DBconn.init();
            String sql = "delete from testcase where caseId="+id;
            
            
            int i =DBconn.addUpdDel(sql);
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        
    
        }
    
        @Override
        public boolean updateCase(TestCase testCase) {
            // TODO Auto-generated method stub
            return false;
        }
    
    }
    7.新建JsonServlet
    package model;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.google.gson.Gson;
    
    
    
    public class JsonServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
            
            TestCaseDaoImpl testCaseDaoImpl=new TestCaseDaoImpl();
            List<TestCase> list=testCaseDaoImpl.getCaseAll();
            List<TestCase> list1 =new ArrayList<>();
            int size =list.size();
            TestCase testCase;
            for(int i=0;i<size;i++){
                testCase=new TestCase();
                testCase.setId(list.get(i).getId());
                testCase.setCaseName(list.get(i).getCaseName());
                testCase.setCaseDetail(list.get(i).getCaseDetail());
                list1.add(testCase);
                
            }
            
            String page = req.getParameter("page");
            // 将数据添加到数组
            List<TestCase> caselist = new ArrayList<TestCase>();
            
            //以下代码做分页,写的不好,不喜勿喷
            if (page == null || page.equals("0")) {
                if(list1.size()>9){
                    for(int i=0;i<10;i++){
                        caselist.add(list1.get(i));
                    }
                }
                else{
                    for(int i=0;i<list1.size();i++){
                        caselist.add(list1.get(i));
                    }
                }
                
            }
            else {
                int caseSize=list1.size();
                int page1 =caseSize/10;
                
                int pageNum=Integer.parseInt(page);
                //String parm=Integer.toString(a);
                if(pageNum<page1){
                    for(int i=10*pageNum;i<10*pageNum+10;i++){
                        caselist.add(list1.get(i));
                    }
                }
                else{
                    for(int i=10*pageNum;i<list1.size();i++){
                        caselist.add(list1.get(i));
                    }
                }
                
            }
    
            
            TestCaseTotal nt = new TestCaseTotal(caselist.size(), caselist);
    
            // 调用GSON jar工具包封装好的toJson方法,可直接生成JSON字符串
            Gson gson = new Gson();
            String json = gson.toJson(nt);
    
            // 输出到界面
            System.out.println(json);
            resp.setContentType("text/plain");
            resp.setCharacterEncoding("gb2312");
            PrintWriter out = new PrintWriter(resp.getOutputStream());
            out.print(json);
            out.flush();
            
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doGet(req, resp);
        }
    
    }
    8.新建index.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
         <base href="<%=basePath%>">
        
        <title>Test Json1</title>
        
        
        <meta http-equiv="Content-Type" content="text/html"; charset=UTF-8>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        
        
      </head>
      <body >
      <form action="getJson" method="get">
            <input type="submit" value="点击获取测试用例数据"/>
         </form>
      </body>
    </html>
    9.修改web.xml文件如下
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>JsonTest</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      
      <servlet>
          <servlet-name>JsonServlet</servlet-name>
          <servlet-class>model.JsonServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>JsonServlet</servlet-name>
          <url-pattern>/getJson</url-pattern>
      </servlet-mapping>
    </web-app>

    10.右击项目名-->选择Run as-->选择Run on Server

    11.运行成功后如下:


    每页只展示10条数据,若需要查看第二页数据传入参数page =1即可





    展开全文
  • 自己总结的java webService接口开发案例,希望能够帮助我需要的朋友。
  • Java 接口

    2021-01-03 04:03:15
    Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很...
  • 微信小程序 获取小程序码和二维码java接口开发

    万次阅读 多人点赞 2017-08-30 11:35:07
    主要内容摘抄自微信小程序的API文档,java接口开发是自己总结开发。微信小程序API文档:获取二维码一、简介通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面。目前微信支持两...
  • App接口开发教程

    千次阅读 2018-04-03 21:48:42
    javaweb向App提供接口教程模拟个登陆://粉色是代码,黑色是注释和解释想登录成功我们肯定要给用户返回当前登录用户的信息比如用户名等…那么我们也要同时再创建一个用户实体类名字叫UserEntity那我们先定义一下...
  • Java后台接口开发实战演练

    万次阅读 多人点赞 2019-08-04 22:20:57
    作为一名普通的Android开发者,想要独立开发一个App,最头疼的地方在于后台接口没人写,正常来说会有以下两种解决方案: 1. 用第三方服务 2. 自己搭建服务器 第一种方案我之前试过,使用的是[bmob后端云]...
  • 7套微信公众平台号二次开发视频教程24集兄弟连 接口开发JAVA PHP
  • 微信服务号java开发教程

    热门讨论 2013-09-10 16:16:49
    最新最全的微信服务号开发教程java版的哦。接口中的例子都有,实现了自定义菜单、响应等功能。
  • java微信开发教程

    千次阅读 2014-08-17 23:25:33
    微信公众平台开发教程Java版(1)环境准备篇
  • JEECG 3.7.2专业接口开发版本发布 - 微云快速开发平台 此版本堪称JAVA专业接口开发利器,集成在线接口文档 Swagger-ui,采用Jwt Token验证机制,最牛在于业务restful接口代码自动生成,更更牛的在接口可以做细化...
  • java 服务器接口快速开发之servlet详细教程

    万次阅读 多人点赞 2017-05-08 21:08:35
    又是许久没更新博客了。但最近好在有些事情忙完了。今天针对我在做的个人项目后台...由于我们的接口开发语言是java,那么当然还是以eclipse为主。这里我使用的是带有web插件的eclipse。我们俗称javaEE。(当然很多人
  • java web开发(四) 接口开发补坑1

    万次阅读 多人点赞 2017-08-05 11:22:06
    之前写了几篇有关java web接口开发的文章,有的朋友留言,说项目导入的时候有问题,或者说代码有的地方看不懂,等等其他问题。那么今天就来说说这些问题!如果你还没了解之前的接口博文,请先看java web开发(二) ...
  • Java教程

    万次阅读 多人点赞 2018-12-10 10:45:27
    Java 开发环境配置 Java 基础语法 Java 对象和类 Java 基本数据类型 Java变量类型 Java修饰符 Java运算符 Java循环结构 Java分支结构 Java Number类 Java Character类 Java String 类 Java StringBuffer和...
  • Java串口开发教程(javax.comm)

    千次阅读 热门讨论 2018-05-09 23:41:36
    )javax.comm可以访问RS232接口(串口)及有限制地访问IEEE-1284(并口)。 版本注意事项 javax.comm开发中,由于win32com.dll只能工作在32位模式下,所以基本就是说串口通讯只支持jdk16~1.7~1.8的32位...
  • Java+Axis WebService接口开发实例

    万次阅读 2014-03-10 13:25:53
    Java+Axis WebService接口开发实例
  • 概述:网银支付接口 和支付宝接口大体上差不多,主要的区别是 交通银行提供的 接口核心的比如,加密等是通过java实现的,所以,要想办法使php和java能正常的通信,为此,官方也提供了两套实现方法,一个是通过 socket 进行...
  • Java在线教程??接口

    2020-12-22 20:11:43
    Interfaces 接口  在软件工程中,由一份“契约”规定来自不同的开发小组的软件之间如何相互作用是非常常见的。每个小组都可以在不知道别的组的代码的前提下独立开发自己的代码。Java中的interface是这样的一份...
  • Eclipse简明使用教程(java集成开发环境)

    万次阅读 多人点赞 2018-08-12 17:43:41
    Eclipse使用教程  目录  1.Eclipse的基本概念 2.Eclipse创建Java文件 3.eclipse 代码提示功能 4.快捷键的使用 5.代码自动生成功能: 6.代...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,724
精华内容 36,289
关键字:

java接口开发教程

java 订阅