如何在jsp上查询并显示数据库mysql的数据表格
需要在jsp上实现查询数据库的表格(就是通过用户输入查询表格)
总体的思路:
1.首先用户在jsp中输入需要查询的对象并跳转Servlet。
2.Servlet在后台接收到数据。
3.Servlet与数据库建立连接,并且在Servlet输入 sql代码与用户输入的信息 去查询Mysql数据库里的表格。
4.在Servlet中接收数据库查询到的信息。
5.再通过跳转跳转到一个新的jsp页面中,并在页面中输出查询出来的表格。
总体上的思路已经写明了,那么接下来我们就按照步骤一步一步往下做。
我们需要的有:
一个用于输入的jsp页面 ,
一个用于建立连接和接收数据的Servlet,
一个用于打印数据的jsp页面
一.首先写一个用于接收用户数据的表单
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <table> <form action="FirstSql"> 这里的FirstSql是连接到下面的Servlet的 <input type="text" value="1" name="idcard_w">输入框 <input type="submit" name="Submit">提交表单按钮 </form> </table> </body> </html>
效果如下
首先这里需要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暂时不写,是需要用户输入的)查询以后的结果是这样的
然后编写创建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<Map> list =new ArrayList<Map>();//创建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 "+ "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="+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中,将表格打印出来
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> <style> th, tr, td, table { border: 1px solid red; } </style> </head> <body> <table> <tr> <th>name</th> <th>desc</th> <th>contact<th> </tr> <c:forEach items="${key_list}" var="usr" varStatus="idx"> <tr> <td>${usr.name}</td><td>${usr.desc}</td> <td>${usr.contact}</td> </tr> </c:forEach> </table> </body> </html>
到这里程序已经基本完成,剩下就是测试了
在这里输入1提交
页面则会跳转到如下界面
如果提交2的话
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。