zoukankan      html  css  js  c++  java
  • [Jweb] 数据库处理以及在 Servlet 中使用 Bean

    * 数据库处理以及在 Servlet 中使用 Bean *

    Know@05   Servlet 如何连接数据库

    bbs.sql
    create database bbs;
    use bbs;
    set names gbk; -- 解决乱码问题
    drop table if exists article;
    示例程序 : ShowRs.java

    Know@06   在 Servlet 中使用 Java_Bean
    广义javabean = 普通java类
    狭义javabean = 符合Sun JavaBean标准的类 
            (为了在图形化界面编程的组件可以捞来捞去而提出的javabean的概念,按标准规则来写)
    在Servlet中使用Bean和在通常程序中使用Bean类似
    *1), 属性名称第一个字母必须小写,一般private, 比如:private productId
    *2), 一般具有getters and setters
    *3), 要具有一个参数为空的构造方法
    *4), 但Bean不应具有GUI表现
    *5), 一般是用来实现某一业务逻辑或取得特定结果

    将数据库操作封装成一个类DB (非常好的思路,但是这个还封装得不够好)。
    示例 : ShowRsUseBean.java
          java适合做中间件,但是不太适合开发图形化的程序,但是也有用开发的。
    ShowRs.java
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    import java.io.*;
    import java.sql.*;
    //1.仔细检查连接串。
    //2.确认有没有这个表
    //3.如果出错了。先去后台看报错的信息。
    //4.确认mysql已经启动了。
    //5.把jdbc的驱动拷贝到tomcat
    
    public class ShowRs extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
    
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
    
            response.setContentType("text/html");
            response.setCharacterEncoding("gb2312"); // 分开写也不错!
            PrintWriter out = response.getWriter();
    
            out.println("<table border=1>");
            out.println("<tr><td>Content:</td></tr>");
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager
                        .getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
                stmt = conn.createStatement();
                rs = stmt.executeQuery("select * from article");
                while (rs.next()) {
                    out.println("<tr>");
                    out.println("<td>" + rs.getString("cont") + "</td>");
                    out.println("</tr>");
                }
                out.println("</table>");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (rs != null) {
                        rs.close();
                        rs = null;
                    }
                    if (stmt != null) {
                        stmt.close();
                        stmt = null;
                    }
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    
    DB.java
    import java.sql.*;
    
    public class DB {
        public static Connection getConn() {
            Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return conn;
        }
        
        public static Statement getStatement(Connection conn) {
            Statement stmt = null; 
            try {
                if(conn != null) {
                    stmt = conn.createStatement();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return stmt;
        }
        
        public static ResultSet getResultSet(Statement stmt, String sql) {
            ResultSet rs = null;
            try {
                if(stmt != null) {
                    rs = stmt.executeQuery(sql);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return rs;
        }
        
        public static void closeConn(Connection conn) {
            try {
                if(conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public static void closeStmt(Statement stmt) {
            try {
                if(stmt != null) {
                    stmt.close();
                    stmt = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public static void closeRs(ResultSet rs) {
            try {
                if(rs != null) {
                    rs.close();
                    rs = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    ShowRsUseBean.java
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    import java.io.*;
    import java.sql.*;
    
    public class ShowRsUseBean extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
    
            response.setContentType("text/html");
            response.setCharacterEncoding("gb2312");
            PrintWriter out = response.getWriter();
    
            out.println("<table border=1>");
            out.println("<tr><td>Content:</td></tr>");
    
            Connection conn = DB.getConn();
            Statement stmt = DB.getStatement(conn);
            String sql = "select * from t";
            ResultSet rs = DB.getResultSet(stmt, sql);
            try {
                while (rs.next()) {
                    out.println("<tr>");
                    out.println("<td>" + rs.getString("title") + "</td>");
                    out.println("</tr>");
                }
                out.println("</table>");
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
    
                DB.closeRs(rs);
                DB.closeStmt(stmt);
                DB.closeConn(conn);
            }
        }
    }
    



  • 相关阅读:
    Python 用SMTP发送邮件
    Python 用IMAP接收邮件
    E-mail Composition and Decoding
    用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)
    【日志】-2013.10.31
    21本计算机数学相关的免费电子书【转】
    WordPress搭建Personal Blog【转】
    一句话点亮你的人生
    【日志】-2013.10.28
    转载-smarty教程(基本语法)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786867.html
Copyright © 2011-2022 走看看