java接口开发入门示例

作者: 早起有虫吃 | 来源:发表于2018-01-09 16:16 被阅读5356次

    最近在测试中发现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.运行成功后如下:


    image.png

    点击按钮展示接口数据如图


    image.png

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


    image.png

    相关文章

      网友评论

        本文标题:java接口开发入门示例

        本文链接:https://www.haomeiwen.com/subject/xefgnxtx.html