java web开发(四) 接口开发补坑1

    好久都没写博客了,最近的工作重点是H5以及JavaScript方面的!后面要是有时间,会一直推出博文!

    今天的博文是补坑的!之前写了几篇有关java web接口开发的文章,有的朋友留言,说项目导入的时候有问题,或者说代码有的地方看不懂,等等其他问题。那么今天就来说说这些问题!如果你还没了解之前的接口博文,请先看java web开发(二) 接口开发

一、项目导入报错。

  从csdn资源下载的代码,由Eclipse导入后,正常情况下,应该是会报错的!这个主要是我在导入项目的时候,没有将依赖的jar导入至lib目录中,所以导入项目的时候,很有可能会报错报错截图如下,

因为这个javax.servlet.*  包用的是Tomact下的 servlet-api.jar。

这个问题的解决办法是有2种,

方法1,从Tomact中的lib中找到这个servlet-api.jar,复制到项目的lib目录下,然后在这个jar上右键--->Build Path--->Add Build Path,即可!

方法2, 选项目右键--->Properties--->Java Build Path--->Libraries--->Add Library--->Server RunTime点击next,然后选择你的本地Tomact server--->Finish,最后点击Apply--->OK即可!

大功告....!结果可能还是报错了!就像这样的,看截图

这个错误是说,这个项目之前使用的是Tomact v6.0,而我现在给他配置的是 Tomact v8.5!

这个解决方法网上就比较多了!打开项目settings目录 org.eclipse.wst.common.project.facet.core.xml文件,

删除   <runtime name="Apache Tomcat v6.0"/> 这一行,保存!然后刷新项目!这个错误就没了!但是,你可能还会遇到其他的错误,例如提示说,jre的版本不匹配,那么就需要修改项目使用的jre版本!

这里就不详细列举各种各样的问题的解决方法了,如果有问题,就自行百度吧!相信,你可以的!

二、项目代码详解。

    这个地方主要是把之前在 java web开发(二) 接口开发写的中的代码,再次梳理!让小伙伴们在本篇博文中就可以直观的看出项目结构,以及主要代码!下面先给出整个项目的目录结构树,如下图所示,

下面一一来介绍这些包以及类,

1. cn.xinxing.action.student 这个包中是放置接口的,也就是向外部调用提供接口!下面我们就看看具体接口的代码,

 

package cn.xinxing.action.student;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.xinxing.business.StudentBusiness;
import cn.xinxing.json.core.ListObject;
import cn.xinxing.json.responseUtils.ResponseUtils;
import cn.xinxing.json.status.StatusHouse;
import cn.xinxing.json.utils.JackJsonUtils;
import cn.xinxing.model.Students;

/**
 * Servlet implementation class StudentInq
 */
public class StudentInq extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public StudentInq() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List<Students> list = StudentBusiness.getAllStudents();
		ListObject listObject=new ListObject();
		listObject.setItems(list);
		listObject.setStatusObject(StatusHouse.COMMON_STATUS_OK);
		String responseText = JackJsonUtils.toJson(listObject);
		ResponseUtils.renderJson(response, responseText);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

} 

代码比较简单,就不多说了,相信看过java web开发(二) 接口开发的知道。但是,为了这篇文章,还是多说一句吧!这个类是继承自HttpServlet的,也就是说这个类其实是一个Servlet类,它内部提供了doGet()和doPost()方法,这两个方法其实就是我们经常所说的get请求和post请求,而get请求和post请求这两种请求方式,相信了解http请求的,都知道,get请求就是将请求参数直接放到请求路径后,post请求是将请求参数放置到请求的body中,当然他们还有其他一些区别,这里就不多说了!我们经常使用的是post请求。而demo中为了方便测试,就只实现了get请求。下面看看doGet()方法,

 

 

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List<Students> list = StudentBusiness.getAllStudents(); // 从数据库获取学生数据列表
		ListObject listObject=new ListObject(); // 创建一个返回对象
		listObject.setItems(list);// 将数据列表设置给返回对象的items属性
		listObject.setStatusObject(StatusHouse.COMMON_STATUS_OK);// 设置返回对象的响应状态码
		String responseText = JackJsonUtils.toJson(listObject);//将返回对象转换为json字符串
		ResponseUtils.renderJson(response, responseText);//将结果返回会调用者
	}

每一行代码都加入了注释,不难理解!有一个地方需要强调一点,就是设置返回的响应状态码,好多小伙伴对这儿疑问比较大,这里再强调一下,这里设置的响应状态码是主要为了让调用者收到返回的json结果字符串后解析json时用的,简单来说,就是,

 

a). 如果响应状态码等于‘ok’时,调用者才去解析结果字符串;

b).如果是其他状态码,就直接显示结果字符串中的‘msg’。

这个是我自己定义的规则!大家自己在实际开发中,完全可以按照自己的方式去定义解析规则!

好了,有关对外提供的接口类,就说到这里。

2. cn.xinxing.business 这个包是和数据相关的。连接数据库以及从数据库中获取数据!其中DBHelper这个类是连接数据库的。这里我没有使用引入其他框架来维护数据库以及数据处理!下面看看这个类的具体实现,

package cn.xinxing.business;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


/**
 */
public class DBHelper {
	
	 public static final String url = "jdbc:mysql://localhost:3306/students_manage";  //数据库url
	    public static final String name = "com.mysql.jdbc.Driver";  //JDBC driver name
	    public static final String user = "root";  //数据库用户名
	    public static final String password = "111111";//  数据库密码
	  
	    public Connection conn = null;  //数据库连接对象
	    public PreparedStatement pst = null;  //对象
	  
	    /**
	     * @param sql
	     */
	    public DBHelper(String sql) {  
	        try {  
	            Class.forName(name);//注册JDBC driver
	            conn = DriverManager.getConnection(url, user, password);//打开一个数据库连接
	            pst = conn.prepareStatement(sql);//执行sql后,创建了preparedStatemen对象
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
	    }  
	  
	    /**
	     * 关闭数据库
	     */
	    public void close() {  
	        try {  
	            this.conn.close();  //关闭连接
	            this.pst.close();  //关闭对象
	        } catch (SQLException e) {  
	            e.printStackTrace();  
	        }  
	    }  

} 

通过JDBC连接至MySql数据库,然后获取到一个PreparedStatement对象,通过这个对象来发送sql命令,并且从数据库接收数据的属性和方法,换句话说,通过这个对象,我们就可以拿到数据库中的相关数据。

 

接着看StudentBusiness是如何获取数据的,还是上代码,

 

package cn.xinxing.business;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import cn.xinxing.model.Students;

/**
 * 从数据库中获取数据
 */
public class StudentBusiness {

	/**
	 * 获取所有的学生数据
	 * @return
	 */
	public static List<Students> getAllStudents() {
		List<Students> list = new ArrayList<Students>();//list对象
		String sql = null;
		DBHelper db1 = null;
		sql = "select *from student";// SQL
		db1 = new DBHelper(sql);//创建DBHelper对象
		ResultSet ret = null;//创建结果集对象,执行sql后返回的数据集合
		try {
			ret = db1.pst.executeQuery();//这个方法就类似于执行了SELECT语句一样!
			while (ret.next()) {
				int id = ret.getInt(1);//第一列是id
				String name = ret.getString(2);//第二列是name
				int age = ret.getInt(3);//第三列是age
				int sex = ret.getInt(4);//第四列是sex
				Students students = new Students();//创建students对象
				students.setId(id);//设置id
				students.setName(name);//设置name
				students.setAge(age);//设置age
				students.setSex(sex);//设置sex
				list.add(students);//将students对象放置到列表中
			} //循环从结果集中获取数据并设置到list列表对象中
			ret.close();//关闭对象
			db1.close();//关系数据库连接
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} //

		return list;//返回结果
	}

	/**
	 * 通过id来获取某个学生数据
	 * @param _id
	 * @return
	 */
	public static Students getStudentInfoById(String _id) {
		String sql = null;
		DBHelper db1 = null;
		sql = "select * from student where id =" + _id;// sql
		db1 = new DBHelper(sql);//创建DBHelper对象
		ResultSet ret = null;//创建结果集对象
		Students students = new Students();//创建对象
		try {
			ret = db1.pst.executeQuery();//正常来说,这个结果集只有一个对象
			while (ret.next()) {
				int id = ret.getInt(1);//第一列是id
				String name = ret.getString(2);//第二列是name
				int age = ret.getInt(3);//第三列是age
				int sex = ret.getInt(4);//第四列是sex
				int mobile = ret.getInt(5);//第五列是mobile
				students.setId(id);//设置id
				students.setName(name);//设置name
				students.setAge(age);//设置age
				students.setSex(sex);//设置sex
				students.setMobile(mobile);//设置mobile
			} //循环从结果集中获取数据并设置到对象中(正常来说,这个循环只执行一次)
			ret.close();//关闭对象
			db1.close();//关系数据库连接
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // 
		return students;//返回结果
	}
}

这个类提供了两个方法获取数据,一个方法是获取数据库中学生表中的所有数据,一个根据id参数获取某一个学生的数据。这里用到了PreparedStatement对象,如果对这个对象了解更多,请看JDBC教程

最后补上,例子下载地址

由于篇幅问题,下篇文章将继续来详解demo项目的代码! 博文中如果有误,欢迎指出! java web开发(五) 接口开发补坑2已经推出了!欢迎大家收看!

 

最近才开通了微信公众号,欢迎大家关注。

 

 

 

 

  • 16
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Java Web API 接口开发实例可以分为以下步骤: 1. 设计 API 接口:定义 API 接口的请求和响应数据格式、接口地址、请求方法等。 2. 编写 API 接口实现代码:根据设计好的接口定义编写具体的 API 实现代码,处理请求数据并生成响应数据。 3. 部署 API 接口代码:将 API 实现代码部署到服务器上,使其可以被其他应用程序或服务用。 4. 测试 API 接口:使用 API 试工具对接口进行测试,验证接口的功能和正确性。 5. 文档编写和发布:编写 API 接口的文档,并发布到合适的文档平台上,方便其他开发者使用和集成。 具体实现中,可以使用 Java 的框架(如 Spring、Spring Boot 等)来简化 API 接口开发和部署过程。同时,还可以使用常见的数据库(如 MySQL、MongoDB 等)来存储和管理 API 接口所需的数据。 ### 回答2: Java Web API接口开发实例 Java Web API是Web应用程序中最常用的一种技术。它通过一组标准和协议来允许Web应用程序与Web服务器之间相互通信。Java Web API通常被用于开发RESTful API接口,这种接口主要是基于HTTP协议和HTTP方法,以实现数据的传输和服务的用。 下面将介绍一个Java Web API接口开发的实例。本实例主要实现的是一个简单的学生信息管理系统。 Step 1:准备工作 在开始开发Java Web API接口前,需要做好以下准备工作: 1.安装JDK和Eclipse开发环境。 2.下载并安装Tomcat Web Server。 3.使用Eclipse创建一个新的Java Web项目。 4.添加必要的依赖库。 Step 2:定义数据模型 在Java Web API接口中,需要使用数据模型来表示RESTful的资源。本例中定义的数据模型是学生信息,其中包括学生姓名、学号、性别、班级等信息。 Step 3:创建RESTful资源 在Java Web API接口中,需要使用RESTful风格的资源来实现数据的增删改查等操作,以此来实现对学生信息的管理。本例中,我们将使用以下HTTP方法来进行操作: 1.GET:获取学生信息列表和指定学号的学生信息。 2.POST:添加新的学生信息。 3.PUT:修改指定学号的学生信息。 4.DELETE:删除指定学号的学生信息。 Step 4:实现接口 根据RESTful接口的定义,我们需要分别实现以下请求: 1.获取学生信息列表:主要使用GET方法来实现,返回JSON格式的学生信息列表。 2.获取指定学号的学生信息:同样使用GET方法来实现,返回JSON格式的学生信息。 3.添加新的学生信息:使用POST方法来实现,在请求体中包含要添加的学生信息,返回成功或失败信息。 4.修改指定学号的学生信息:使用PUT方法来实现,在请求体中包含要修改的学生信息,返回成功或失败信息。 5.删除指定学号的学生信息:使用DELETE方法来实现,返回成功或失败信息。 Step 5:测试接口 使用Postman等工具来测试Java Web API接口的正确性,主要需要测试请求和响应的数据格式以及各类异常情况的处理。 总结 Java Web API接口开发Web应用程序中不可或缺的一部分。对于想要开发基于Web的应用程序的开发者来说,精通Java Web API接口开发是必不可少的技能之一。掌握了Java Web API的开发技术,可以极大地提升Web应用程序的性能和用户体验。 ### 回答3: Java Web API 接口开发实例的目的是为了解决 Web 应用之间的数据交互问题。在这个过程中,使用基于 JavaWeb API 接口对外提供数据交换接口,这样不仅能够使不同平台、不同语言的应用程序间进行数据交互,而且能够兼容现有的系统,提高系统的整体性能。 Java Web API 接口开发需要关注以下几个方面: 1. 接口设计 接口设计是 Java Web API 接口开发的一个重要环节,需要根据数据交换的需求设计 RESTful API 。RESTful API 是一种基于 HTTP 规范的 Web API 设计,它具有简洁、灵活、可扩展等特点,在实现Web API 接口开发时,能够快速创建符合规范的接口。 2. 安全性 由于 Web API 接口经过公网传输,因此安全性是 Web API 接口开发不可忽视的因素。在接口开发中通常采用 Token 认证机制,来确保用户的身份安全,同时也需要考虑防止 SQL 注入等攻击,提高安全性。 3. 数据库操作 Java Web API 接口开发需要对底层数据库进行操作,常用的数据库包括 MySQL、PostgreSQL 等。在 API 接口开发中通常采用 ORM 框架来简化数据库操作,例如 MyBatis、Hibernate 等开源框架。 4. 使用 RESTful 工具包 使用 RESTful 工具包能够大大降低 Web API 接口开发的难度。常用的 RESTful 工具包包括 Jersey、Spring Web MVC 等,这些工具包提供了快速构建 RESTful API 接口的能力,同时也支持 JSON、XML 等常用的数据格式,便于数据交换。 综上所述,Java Web API 接口开发是实现跨平台、跨语言、实时数据交换的重要手段。在接口开发中需要关注接口设计、安全性、数据库操作和使用 RESTful 工具包等方面,这样才能够高效地实现数据交换接口,提高系统整体性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值