java接口开发示例解析

TheDisguiser 2020-09-10 17:17:17 java常见问答 5884

在java中有着特别的接口来对外实现,接口是可以实现数据互换的,下面我们就来了解下接口开发。

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、实现接口

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 = 1 L;
    @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>

这样我们就成功完成一个接口开发了。

以上就是今天的全部内容了,更多java编程常见问题敬请关注奇Q工具网了解详情。

推荐阅读:

java接口实例具体展示,Java接口能用new创建吗?

java接口和类的区别是什么?它们都有哪些作用呢?

java接口的作用是什么?接口的使用规范介绍