Servlet处理请求,通过JDBC访问数据库,最终返回json数据

IDE:IntelliJ IDEA、web服务器:tomcat 8.5.24
jar包:
servlet-api.jar
mysql-connector-java-5.1.45-bin.jar //mysql连接驱动
json-lib-2.3.jar // json数据封装

// json-lib-2.3.jar的依赖
ezmorph-1.0.6.jar
commons-logging-1.1.1.jar
commons-lang-2.5.jar
commons-collections-3.2.1.jar
commons-beanutils-1.8.0.jar

一、本地mysql

表sell的简单结构为:

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| sell_id   | int(11)     | NO   | PRI | NULL    |       |
| user_name | varchar(10) | YES  |     | NULL    |       |
| price     | int(11)     | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+

二、项目:FullServletDemo

初始化项目时勾选创建webapp。
导入tomcat中的servlet的jar包,为了部署的方便,将jar包放到项目中,在web/WEB-INF/lib中。

代码实现:

package com.company;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

@WebServlet(name = "JsonServlet")
public class JsonServlet extends HttpServlet {

    private static final long servialVersionUID = 1L;

    static  {

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/json;charset=utf-8");

        PrintWriter out = response.getWriter();

        try {

            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "c");
            Statement st = con.createStatement();

            ResultSet rs = st.executeQuery("select * from sell");

            JSONArray jArray = new JSONArray();
            JSONObject jo = new JSONObject();
            while (rs.next()) {
                jo.put("sell_id", rs.getInt("sell_id"));
                jo.put("user_name", rs.getString("user_name"));
                jo.put("price", rs.getInt("price"));

                jArray.add(jo);
            }

            out.println(jArray);

            rs.close();
            st.close();
            con.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

web.xml配置




    
        FullServletDemo
        com.company.JsonServlet
    

    
        FullServletDemo
        /json
    

具体结构如下:


Servlet处理请求,通过JDBC访问数据库,最终返回json数据_第1张图片
image.png

部署到tomcat:将项目中web目录复制到tomcat的webapps中,重命名为FullServletDemo,并在FullServletDemo目录中创建classes目录,把编译后的class文件和包复制到classes。

保证mysql服务开启,重启tomcat服务。

用浏览器、postman等访问 http://127.0.0.1:8080/FullServletDemo/json ,返回从数据库中获取的以json形式展示的数据。

参考:利用 Servlet 访问数据库返回 JSON 数据 - 会拉网线的攻城狮 - 博客园
下载: jar包

你可能感兴趣的:(Servlet处理请求,通过JDBC访问数据库,最终返回json数据)