eclipse 遍历mysql数据加查寻功能

来源:互联网 发布:svm推荐算法 编辑:程序博客网 时间:2024/05/02 05:04

环境:eclipse是j2ee LUNA版,MySQL是5.0.22

首先准备的是mysql的数据表

如下图

表的部分在前面说的很清楚了,这里就不在做解释了,需要的看的博友可以去我的博客里看看

现在准备的是4张表,实现的是一对多的关系

student表(有姓名年龄性别和地址,但是少了联系方式)


content表(这个是联系方式表)

表contact


表contact_desc


表contact_ext


注意搞清楚这几张表的关系,其实表contact_desc和contact_ext都是对contact的补充

现在先从navicat中用mysql语句查询结果


接下来就是在eclipse下编写Java代码了这里一样还是要导入mysql的jar包

servlet1.java中的代码

public class Jdbc2 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 = "root";//数据库密码
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>();
   String str = request.getParameter("num");//这句是从前台的form表单里获取到值后面就可以输入任意数字查询了




try {
System.out.println(str);
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="+str;//str是上面传的值
                

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);
list.add(map);
for (Map map1 :list) {
System.out.println(map1);
}

}//遍历结果集可以不写,只是方便在consle下查看不会输出到前端jsp页面
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("list",list);
request.getRequestDispatcher("/test1.jsp").forward(request, response);
}
}

jsp页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<form action="jdbc2">
<input type="test" name="num" value="">
<input type="submit" value="submit">
<tr>
<c:forEach items="${list}" var="usr" varStatus="idx">
<tr>
<td>${usr.name}</td><td>${usr.desc}</td><td>${usr.contact}</td>
</tr>
</c:forEach>
</table>


</body>
</html>

注意一下:这里是需要配置xml文件的

<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>com.servlet.servlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/servlet1</url-pattern>
  </servlet-mapping>

上面就是整个流程现在我们看jsp输出的结果

比如我现在查idcard为1的联系方式有哪些并且具体数字是多少



现在查询idcard为2的联系方式和具体数字



这样我们就完成一套的流程

数据从mysql——servlet——jsp也可以说成是从jsp页面输入查询条件到servlet——mysql,然后在返回的mysql——servlet——jsp

欢迎各路大神指正,小弟不胜感激。

原创粉丝点击