• 【助教】Java获取数据库数据展示


    本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子.

    实际上,我们要解决以下两个问题:

    • Java与数据库交互(以JDBC为例)
    • 数据展示在前台页面(以Servlet+JSP为例)

    数据结构:

    学生表(student)
    student_id : 学号(主键,字符,非空)
    student_name:学生姓名(字符,非空)
    student_age:学生年龄(整型,非空)

    附:数据库脚本和初始化数据(MySQL为例):

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `student`
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
      `student_id` varchar(255) NOT NULL,
      `student_name` varchar(255) NOT NULL,
      `student_age` int(11) NOT NULL,
      PRIMARY KEY (`student_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of student
    -- ----------------------------
    INSERT INTO `student` VALUES ('1', 'zhangsan', '20');
    INSERT INTO `student` VALUES ('2', 'lisi', '21');
    INSERT INTO `student` VALUES ('3', 'wangwu', '19');
    

    Java与数据库交互(以JDBC为例):

    import java.sql.*;
    
    public class Main {
    
        static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        static final String DB_URL = "jdbc:mysql://localhost/tt";
    
    
        static final String USER = "root";
        static final String PASS = "root";
    
        public static void main(String[] args) throws Exception {
            Connection conn = null;
            Statement stmt = null;
    
            //STEP 2: Register JDBC driver
            Class.forName(JDBC_DRIVER);
    
            //STEP 3: Open a connection
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
    
            //STEP 4: Execute a query
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT student_id, student_name, student_age FROM student";
            ResultSet rs = stmt.executeQuery(sql);
    
            //STEP 5: Extract data from result set
            while(null != rs && rs.next()){
    
                String studentId  = rs.getString("student_id");
                String studentName = rs.getString("student_name");
                int student_age = rs.getInt("student_age");
    
    
                System.out.println("student_id: " + studentId);
                System.out.println("student_name: " + studentName);
                System.out.println("student_age: " + student_age);
                System.out.println("-----------");
            }
    
            rs.close();
            stmt.close();
            conn.close();
        }
    }
    

    需要注意:
    1.运行这个程序需要下载MySQL驱动包:

    http://www.mysql.com/downloads/

    2.这个程序肯定可以优化,利用之前学的封装,异常处理等知识优化一下这段代码。

    3.试着实现对数据库的其他操作,比如增删改。


    数据展示在前台页面(以Servlet+JSP为例):

    输入页面input.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>从前台到后台</title>
    </head>
    <body>
    	<form action="HandleServlet">
    		<input type="text" id="studentName" name="studentName"> <input
    			type="submit" value="submit">
    	</form>
    </body>
    </html>
    

    新建Servlet:HandleServlet.java 配置其URL Mappings为:/HandleServlet
    在其doGet方法里面写以下代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String studentName = request.getParameter("studentName");
    		System.out.println("已经传到后台:"+studentName);
    		RequestDispatcher dispatcher = request.getRequestDispatcher("/output.jsp");
            request.setAttribute("studentName",studentName);// 传回前台
    		dispatcher .forward(request, response);
    		
    	}
    

    输出界面:output.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>从后台到前台</title>
    </head>
    <body>
    	欢迎:<%=request.getAttribute("studentName")%>
    </body>
    </html>
    

    将程序部署到Tomcat下,启动Tomcat,访问input,并输入学生名字,点击submit按钮,则:

    1.HandleServlet接收到学生名字的输入并打印在控制台。
    2.HandleServlet将学生名字传到output.jsp页面并展示出来。

    需要注意:

    1.代码肯定还可以优化,如:JSP页面可以采用JSTL标签来获取数据。
    2.Eclipse配置tomcat参考:

    http://jingyan.baidu.com/article/ca2d939dd90183eb6d31ce79.html

    到目前为止,将这一步和之前的与数据库连接结合起来,就可以实现页面展示在前台界面的功能,部分只实现静态页面的团队可以参考一下将自己的静态页面变为动态从数据库取数据的方式。

    若能将取数据的过程发布成服务(如:webservice),也会是一个不错的方向,有想法的童鞋,可以试试看。

  • 相关阅读:
    .NET 2.0 WinForm Control DataGridView 编程36计(一)
    Sql Server 日期格式化函数
    FastReport 金额大小写转换自定义函数
    vue.js 三种方式安装(vuecli)
    Android style
    android ui 布局性能优化
    android 手机分辨率
    TCP,IP,HTTP,SOCKET区别和联系
    android2.2 特性
    常见开放api平台OpenAPI
  • 原文地址:https://www.cnblogs.com/greyzeng/p/4543083.html
Copyright © 2020-2023  润新知