【菜鳥之旅】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(這個對應這兒自己)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM