zoukankan      html  css  js  c++  java
  • 动态网页技术--JSP(2)

    数据库直连 ----  JDBC:

                    加载驱动DriverManger-----获得Connection对象-----创建一个Statement----使用结果集(ResultSet)对象

    数据连接池 ----  JNDI:

              开发步骤:

                 1:配置数据源   

                在Tomcat下配置路径 tomcat---conf---context.xml

                   配置内容:Ip   端口号  实例名  数据库用户名  密码

                   功能代码:

                                              <Resource

                    name="jdbc/abc"         //数据源名称,一般以jdbc为前缀

                  type="javax.sql.DataSource"     

                                               username="Pioneer.HengYu"

                                               password="Pioneer.HengYu"

                                               url="jdbc:oracle:thin:@localhost:1521:XE"

                                              driverClassName="oracle.jdbc.driver.OracleDriver"

                                              maxIdle="2000"           //最大连接数

                                              maxWait="5000"         //最大等待时长

                                              maxActive="400"/>     //最大活跃数

                 2:配置web应用和连接池的映射   在项目web.xml中配置

     1 web.xml中配置映射
     2 
     3 <?xml version="1.0" encoding="UTF-8"?>
     4 <web-app version="2.5" 
     5     xmlns="http://java.sun.com/xml/ns/javaee" 
     6     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     7     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     8     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     9   <welcome-file-list>
    10     <welcome-file>index.jsp</welcome-file>
    11   </welcome-file-list>
    12   
    13     <!--连接池的映射 -->    
    14       <resource-ref>
    15           <description>JNDI</description>
    16           <res-ref-name>jdbc/abc</res-ref-name>
    17           <res-type>javax.sql.DataSource</res-type>
    18           <res-auth>Container</res-auth>     
    19       </resource-ref>
    20   
    21 
    22 </web-app>

    需求查询所有客户信息

    数据库建表,起名 T_client

     

    路径

    创建实体类

     1 实体类Client
     2 
     3 package client;
     4 
     5 public class Client {  //客户对象  ---对应客户表       对象的属性---表中的字段        一行记录---一个对象
     6     
     7       String  clientNo;
     8       String  clientName;
     9       String  sex;
    10       String  birthday;
    11       String  certificateNO;
    12       String  telNO;
    13       String  clientType;
    14       String  cardNo;
    15       
    16     public String getClientNo() {
    17         return clientNo;
    18     }
    19     public void setClientNo(String clientNo) {
    20         this.clientNo = clientNo;
    21     }
    22     public String getClientName() {
    23         return clientName;
    24     }
    25     public void setClientName(String clientName) {
    26         this.clientName = clientName;
    27     }
    28     public String getSex() {
    29         return sex;
    30     }
    31     public void setSex(String sex) {
    32         this.sex = sex;
    33     }
    34     public String getBirthday() {
    35         return birthday;
    36     }
    37     public void setBirthday(String birthday) {
    38         this.birthday = birthday;
    39     }
    40     public String getCertificateNO() {
    41         return certificateNO;
    42     }
    43     public void setCertificateNO(String certificateNO) {
    44         this.certificateNO = certificateNO;
    45     }
    46     public String getTelNO() {
    47         return telNO;
    48     }
    49     public void setTelNO(String telNO) {
    50         this.telNO = telNO;
    51     }
    52     public String getClientType() {
    53         return clientType;
    54     }
    55     public void setClientType(String clientType) {
    56         this.clientType = clientType;
    57     }
    58     public String getCardNo() {
    59         return cardNo;
    60     }
    61     public void setCardNo(String cardNo) {
    62         this.cardNo = cardNo;
    63     }
    64     public Client() {
    65         
    66     }
    67     public Client(String clientNo, String clientName, String sex,
    68             String birthday, String certificateNO, String telNO,
    69             String clientType, String cardNo) {
    70         
    71         this.clientNo = clientNo;
    72         this.clientName = clientName;
    73         this.sex = sex;
    74         this.birthday = birthday;
    75         this.certificateNO = certificateNO;
    76         this.telNO = telNO;
    77         this.clientType = clientType;
    78         this.cardNo = cardNo;
    79     }
    80 
    81 }

    通过JNDI连接数据库

     1 ClientJNDI类
     2 
     3 package client;
     4 
     5 import java.sql.Connection;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.sql.Statement;
     9 import java.util.ArrayList;
    10 import java.util.List;
    11 
    12 import javax.naming.Context;
    13 import javax.naming.InitialContext;
    14 import javax.naming.NamingException;
    15 import javax.sql.DataSource;
    16 
    17 public class ClientJNDI {
    18 
    19     // 查询
    20     public List getClient() {
    21         
    22         // 创建集合
    23         List<Client> clientList = new ArrayList<Client>();
    24      
    25         // 通过数据库连接池连接数据库,查询        
    26         Context c1;
    27         DataSource    ds=null;
    28         Connection   con=null;
    29         Statement   sta=null;
    30         ResultSet   rs=null;
    31         try {
    32             c1 = new InitialContext();// 实例化上下文空间对象
    33             ds=(DataSource)c1.lookup("java:comp/env/jdbc/abc");   //通过名字找到空闲的数据源
    34             con=ds.getConnection();  //通过数据源得到连接对象
    35             System.out.println("数据库连接池已连接");  
    36             
    37             sta=con.createStatement();
    38             String  sql="select  *  from  t_client  order by  client_no   desc";  //默认升序,倒序加desc
    39             rs=sta.executeQuery(sql);
    40             
    41             //将rs中的数据取出存放到list里
    42             while(rs.next()){    
    43                  
    44                 String   clientNo=rs.getString("client_no");
    45                 String   clientName=rs.getString("client_name");
    46                 String   sex=rs.getString("sex");
    47                 String   birthday=rs.getString("birthday");
    48                 String   certificateNO=rs.getString("CERTIFICATE_NO");
    49                 String   telNO=rs.getString("tel_no");
    50                 String   clientType=rs.getString("client_type");
    51                 String   cardNo=rs.getString("card_no");
    52                 
    53                 //封装客户对象
    54                 Client  client=new Client(clientNo, clientName, sex, birthday, certificateNO, telNO, clientType, cardNo);
    55                 
    56                 //将客户对象存入集合中
    57                 clientList.add(client);
    58             }
    59             
    60         } catch (NamingException e) {
    61             // TODO Auto-generated catch block
    62             e.printStackTrace();
    63         } catch (SQLException e) {
    64             // TODO Auto-generated catch block
    65             e.printStackTrace();
    66         }finally{
    67             
    68               try {
    69                 if(rs!=null){                  
    70                       rs.close();
    71                   }
    72             } catch (SQLException e) {   
    73                 // TODO Auto-generated catch block
    74                 e.printStackTrace();
    75             } 
    76        
    77               try {
    78                 if(con!=null &&! con.isClosed()){                      
    79                       con.close();                      
    80                   } 
    81             } catch (SQLException e) {  
    82                 // TODO Auto-generated catch block
    83                 e.printStackTrace();
    84             } 
    85         
    86         }
    87 
    88         return clientList;
    89     }
    90 
    91 }

    页面上取值

     1 查询到数据显示的页面client.jsp
     2 
     3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     4 <%@page import="client.ClientJNDI"%>
     5 <%@page import="client.Client"%>
     6 <%
     7     String path = request.getContextPath();
     8     String basePath = request.getScheme() + "://"
     9             + request.getServerName() + ":" + request.getServerPort()
    10             + path + "/";
    11 %>
    12 
    13 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    14 <html>
    15     <head>
    16         <base href="<%=basePath%>">
    17 
    18         <title>My JSP 'client.jsp' starting page</title>
    19 
    20         <meta http-equiv="pragma" content="no-cache">
    21         <meta http-equiv="cache-control" content="no-cache">
    22         <meta http-equiv="expires" content="0">
    23         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    24         <meta http-equiv="description" content="This is my page">
    25         <!--
    26     <link rel="stylesheet" type="text/css" href="styles.css">
    27     -->
    28 
    29     </head>
    30 
    31     <body>&nbsp; 
    32     
    33         <!-- 调用JNDI获得数据, 显示客户信息 -->
    34 
    35         <table border="1"  width="1000">
    36             <tr>
    37                 <td>
    38                     客户编号
    39                 </td>
    40                 <td>
    41                     客户姓名
    42                 </td>
    43                 <td>
    44                     客户性别
    45                 </td>
    46                 <td>
    47                     客户生日
    48                 </td>
    49                 <td>
    50                     客户身份证号
    51                 </td>
    52                 <td>
    53                     客户电话号
    54                 </td>
    55                 <td>
    56                     客户类型
    57                 </td>
    58                 <td>
    59                     卡号
    60                 </td>
    61             </tr>
    62             <%
    63                 ClientJNDI clientJNDI = new ClientJNDI();
    64                 List clientList = clientJNDI.getClient();
    65 
    66                 //循环List,并显示数据
    67                 for (int i = 0; i < clientList.size(); i++) {
    68                     Client c = (Client) clientList.get(i);
    69             %>
    70             <tr>
    71                 <td><%=c.getClientNo()%></td>
    72                 <td><%=c.getClientName()%></td>
    73                 <td><%=c.getSex()%></td>
    74                 <td><%=c.getBirthday()%></td>
    75                 <td><%=c.getCertificateNO()%></td>
    76                 <td><%=c.getTelNO()%></td>
    77                 <td><%=c.getClientType()%></td>
    78                 <td><%=c.getCardNo()%></td>
    79             </tr>
    80 
    81             <%
    82                 }
    83             %>
    84 
    85         </table>
    86 
    87 
    88     </body>
    89 </html>

     输入 http://localhost:8088/myJNDI/client.jsp 路径 测试结果

  • 相关阅读:
    C# 操作Orcle数据库
    WinDbg排查CPU高的问题
    NetCore微服务实战体系:日志管理
    NetCore微服务实战体系:Grpc+Consul 服务发现
    解惑求助-关于NetCore2.2中间件响应的问题
    EF Join连接查询的坑
    给DataTable添加行的几种方式
    [C#] 折腾海康威视的人体测温 模组
    [WPF 学习] 15.播放百度合成的语音
    [WPF 学习] 14.PlaceHolder的简单实现
  • 原文地址:https://www.cnblogs.com/Pioneer-HengYu/p/6646250.html
Copyright © 2011-2022 走看看