在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工具网了解详情。
推荐阅读: