如何在jsp上查询并显示数据库mysql的数据表格

需要在jsp上实现查询数据库的表格(就是通过用户输入查询表格)

总体的思路:

1.首先用户在jsp中输入需要查询的对象并跳转Servlet

2.Servlet在后台接收到数据。

3.Servlet与数据库建立连接,并且在Servlet输入  sql代码与用户输入的信息  去查询Mysql数据库里的表格。

4.Servlet中接收数据库查询到的信息。

5.再通过跳转跳转到一个新的jsp页面中,并在页面中输出查询出来的表格。


总体上的思路已经写明了,那么接下来我们就按照步骤一步一步往下做。

我们需要的有:

一个用于输入的jsp页面 ,

一个用于建立连接和接收数据的Servlet,

一个用于打印数据的jsp页面


 一.首先写一个用于接收用户数据的表单




Insert title here


 这里的FirstSql是连接到下面的Servlet的输入框
提交表单按钮


效果如下

如何在jsp上查询并显示数据库mysql的数据表格_第1张图片


二.创建一个Servlet

   首先这里需要mysql数据库的数据,在Navicat中编写sql代码获取数据表格

SELECT student.`name`,contact_desc.`desc`,contact_ext.contact
FROM student
JOIN contact_ext ON contact_ext.idcard=student.idcard
JOIN contact_desc ON contact_desc.contact_type=contact_ext.contact_type
WHERE student.idcard=;(这里需要查询的ID暂时不写,是需要用户输入的)
查询以后的结果是这样的

如何在jsp上查询并显示数据库mysql的数据表格_第2张图片



然后编写创建Servlet


package com.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/FirstSql")
public class FirstSql extends HttpServlet{
	private static String jdbcDriver = "com.mysql.jdbc.Driver";// mysql连接驱动,无需改
	
	public static String jdbcUrl = "jdbc:mysql://localhost:3306/zdy";
	public static String jdbcUser = "root";//数据库用户名
	public static String jdbcPwd = "1111";//数据库密码
	private static Connection conn;
	public static Statement st;
	
	static {
		try {
			Class.forName(jdbcDriver);// 加载mysql驱动类
			conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPwd);
			// 驱动利用驱动地址,数据库用户名,密码创建连接
			st = conn.createStatement();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//以上基本是固定格式的
	
	
	
	protected void service(HttpServletRequest request, HttpServletResponse response) //
			throws ServletException, IOException {
		List list =new ArrayList();//创建list集合用于存入map的键值对集合
		
		String idcard_w = request.getParameter("idcard_w");//接收到前台传来的数据
		System.out.println(idcard_w);
	
		
		try {
			String sql ="SELECT student.`name`,contact_desc.`desc`,contact_ext.contact\r\n"+
					"FROM student\r\n"+
					"JOIN contact_ext ON contact_ext.idcard=student.idcard\r\n"+
					"JOIN contact_desc ON contact_desc.contact_type=contact_ext.contact_type\r\n"+
					"WHERE student.idcard="+idcard_w;
			//复制之前的sql代码    每行必须要转换为字符串然后加上换行符
			//						idcard_w是用户传入的数据用于查询用户需要的信息
			
			ResultSet rs = st.executeQuery(sql);
			//从数据库读取的内容,返回一个结果集。
			System.out.println("获取数据");
			while (rs.next()) {
				String name = rs.getString("name");
				String desc = rs.getString("desc");
				String contact = rs.getString("contact");
				//获取用循环接收数据库的表格信息
				
				Map map = new HashMap(); 
				map.put("name", name);			
				map.put("desc", desc);		
				map.put("contact", contact);
				//用键值对存入到map集合中
				System.out.println(map);
				list.add(map);//在将map集合对象存入list集合
				System.out.println("放入集合");
				for (Map map_1 :list) {
					System.out.println(map_1);
				}//在打印台遍历出数据查看是否有错误
				
			}//遍历结果集
		} catch (Exception e) {
			e.printStackTrace();
		}
	

		System.out.println("跳转");
		request.setAttribute("key_list",list);//将list集合数据放入到request中共享
		request.getRequestDispatcher("/index.jsp").forward(request, response);
		//跳转到index.jsp页面
	}
}



三.跳转到的index.jsp中,将表格打印出来




Insert title here



	
        
name desc contact
${usr.name}${usr.desc} ${usr.contact}


到这里程序已经基本完成,剩下就是测试了


在这里输入1提交

如何在jsp上查询并显示数据库mysql的数据表格_第3张图片


页面则会跳转到如下界面

如何在jsp上查询并显示数据库mysql的数据表格_第4张图片


如果提交2的话

如何在jsp上查询并显示数据库mysql的数据表格_第5张图片



你可能感兴趣的:(mysql)