【菜鸟之旅】jsp + tomcat + java 实现简单的从后台传递数据到前台

通过网上查找资料和求助大神帮助,终于完成了简单的数据有后台传递到前台的操作。

左图,是网页显示结果,右图是数据库中的数据。

工程目录结构

 

 数据库实体类 主要包含了数据库中对应的表的字段(Table.java)。

 1 package demo4.entity;
 2 
 3 public class Table {
 4 
 5     private String id;
 6     private String name;
 7     private int age;
 8     private String sex;
 9     
10     public Table(){}
11     
12     public Table(String id, String name, int age, String sex){
13         this.id = id;
14         this.name = name;
15         this.age = age;
16         this.sex = sex;
17     }
18 
19     public String getId() {
20         return id;
21     }
22 
23     public void setId(String id) {
24         this.id = id;
25     }
26 
27     public String getName() {
28         return name;
29     }
30 
31     public void setName(String name) {
32         this.name = name;
33     }
34 
35     public int getAge() {
36         return age;
37     }
38 
39     public void setAge(int age) {
40         this.age = age;
41     }
42 
43     public String getSex() {
44         return sex;
45     }
46 
47     public void setSex(String sex) {
48         this.sex = sex;
49     }
50     
51     
52 }

数据库操作类: (TableDao.java)

package demo4.dao;

import java.sql.*;
import java.util.*;

import demo4.entity.*;

public class TableDao {
    
    public List readTable(){
        List<Table> list = new ArrayList<Table>();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        
        try {
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo01","root","root");
            String sql = "select * from user_info";
            stat = conn.prepareStatement(sql);
            rs=stat.executeQuery();
            while(rs.next()){
                
                String id = rs.getString("id");
                String name =  rs.getString("name");
                int age = rs.getInt("age");
                String sex = rs.getString("sex");
                
                Table t1 = new Table(id, name, age, sex);
                list.add(t1);
                
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs!=null){
                    rs.close();
                }
                if(stat!=null){
                    stat.close();
                }
                if(conn!=null){
                    conn.close();
                }
                
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
        }
        
        return list;
    }

}

页面(index.jsp):

<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
  <%@page import="demo4.dao.TableDao,demo4.entity.Table"%>
  <%
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  %>
<!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>Show Table</title>
</head>
<style>
.bbody{
 margin-left:300px;
 margin-top:100px
}
.bbody > table {
 height:200px;
 width:400px;
}
td{
 text-align:center;
}

</style>
<body>
<div class="bbody">
    <table border="1">
        <tr >
            <td>Id</td>
            <td>Name</td>
            <td>Age</td>
            <td>Sex</td>
        </tr>
         <%
            TableDao dao=new TableDao();
            List<Table> list =dao.readTable();  
            for(Table tl:list)
            {%>
          <tr>
              <td><%=tl.getId() %></td>
              <td><%=tl.getName() %></td>
              <td><%=tl.getAge() %></td>
              <td><%=tl.getSex() %></td>
           </tr>
             <%}
                   %>
    </table>
    </div>
</body>
</html>

PS:

  第一:首先选择List集合作为返回值,能够更好的管理这些数据。

  第二:DriverManager类,Connection接口,Statement接口,ResultSet接口, 这是JDBC链接数据库需要的类和接口。

      其中Statement 和 这次选择的PreparedStatement 区别:

        PreparedStatement用于使用绑定变量重用执行计划,是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程

        使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处。

  第三:Class.forName("XXX.XXX.XXX.XXXXX")的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段

      在Class.forName加载完驱动类,开始执行静态初始化代码时,会自动新建一个Driver的对象,并调用DriverManager.registerDriver把自己注册到DriverManager中去。

      这是因为在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己。

  第四:这是我自己遇到的一个问题,就是程序运行时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver……  这个错误

                   原因是在我自己对应的Tomcat中没有对应的MySQL-connection的jar包,

      所以解决办法也就是:向Tomcat的lib中导入jar包:mysql-connector-java-5.1.43-bin.jar(这个对应这儿自己)

 

posted @ 2017-08-23 14:32  Icebtfyl  阅读(4582)  评论(0编辑  收藏  举报