posts - 26,  comments - 14,  trackbacks - 0

              基于數據庫的Java Web

          現今所有的 Web都是基于數據庫的,可見數據庫在Web中的開發時如此的重要。然而基本上所有的網站都是要求客戶登陸的時候都必須事先注冊賬號,這樣才能進入網頁,訪問其中的頁面,資源。。開發基于數據庫的Web程序時,涉及到多個用戶同時請求與數據庫建立"連接"的問題,但多用戶并發處理目前還是一個難點。該文在對傳統數據連接模式的分析基礎上,采用了一種基于對象的數據連接池的設計方案。通過連接對象放置預先建立的若干"連接",根據一定的策略管理這些"連接",防止"連接"過多內存開銷過大,及連接排隊過長問題。并用JAVA實現了該方案,在實際應用中提供了一個高效的連接管理策略,提高了Web數據庫應用系統的性能。

            一:在此我通過一個實際的例子談談我最近最Web得心得,首先我們建立一個javaWeb項目在Myeclipse下。首先建立好數據庫連接,即建立一個Vo對象User類,如下:
          package vo;
          /*
           
          用戶名稱:<input type="text" name="username"><br>
          用戶密碼:<input type="password" name="password"><br>
          用戶愛好:<input type="checkbox" name="hobby" value="1">游泳
            <input type="checkbox" name="hobby" value="2">足球<br>
          用戶性別:<input type="radio" name="gender" value="male">男
            <input type="radio" name="gender" value="female">女
            <input type="radio" name="gender" value="secret">保密<br>
          用戶職位:<select name="position">
            <option value="CEO">CEO</option>
            <option value="CFO">CFO</option>
            <option value="CTO">CTO</option>
            </select><br>
          用戶簡歷:<textarea rows="5" cols="20" name="resume"></textarea>
                 <input type="submit" value="注冊">
                 */
          public class User {
           
           private int id;
           private String userName;
           private String passWord;
           private String hobby;
           private String gender;
           private String position;
           private String resume;
           public int getId() {
            return id;
           }
           public void setId(int id) {
            this.id = id;
           }
           public String getUserName() {
            return userName;
           }
           public void setUserName(String userName) {
            this.userName = userName;
           }
           public String getPassWord() {
            return passWord;
           }
           public void setPassWord(String passWord) {
            this.passWord = passWord;
           }
           public String getHobby() {
            return hobby;
           }
           public void setHobby(String hobby) {
            this.hobby = hobby;
           }
           public String getGender() {
            return gender;
           }
           public void setGender(String gender) {
            this.gender = gender;
           }
           public String getPosition() {
            return position;
           }
           public void setPosition(String position) {
            this.position = position;
           }
           public String getResume() {
            return resume;
           }
           public void setResume(String resume) {
            this.resume = resume;
           }
           

          }


          二:這樣我們建立好了實體對象之后,現在我們來建立UserDAO接口和DAOFactory兩個類如下:

          package dao;

          import vo.User;

          public interface UserDAO {
           
           //建立一個接口
           
           void save(User user);

          }


           

          package factory;

          import impl.UserDaoImpl;
          import dao.UserDAO;

          public class DAOFactory {
           public static UserDAO getUserDAOInstance(){
            
            
            return new UserDaoImpl();
           }

          }


          三:現在我們來建立ConnectionUtil類,這里我才用我們最常用的一種方法來連接數據庫Database即:

          package db;

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.util.Properties;

          public class ConnectionUtil {

            public Connection openConnection() {
            
            String driver = "";
            String url = "";
            String user = "";
            String password = "";
            Properties prop = new Properties();   //實例化一個配置文件的對象
            Connection conn = null;
            try {
             // 加載屬性文件
             prop.load(this.getClass().getClassLoader().getResourceAsStream(
               "DBConfig.properties"));
             driver = prop.getProperty("driver");
             url = prop.getProperty("url");
             user = prop.getProperty("user");
             password = prop.getProperty("password");
             // Class.forName加載驅動
             Class.forName(driver);
             // DriverManager獲得連接
             conn = DriverManager.getConnection(url,
               user, password);
             return conn;
            } catch (Exception e) {
             e.printStackTrace();
            }
            return null;
           }
          }

          四:是實現Java程序與數據庫的鏈接層建立一個UserDaoImpl類:


          package impl;

          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.SQLException;

           

          import vo.User;
          import dao.UserDAO;
          import db.ConnectionUtil;

          public class UserDaoImpl implements UserDAO{
           //實現接口UerDAO

           public void save(User user) {
            
            
            //實現接口類中的方法
            ConnectionUtil cu=new ConnectionUtil();//初始化連接的數據庫
            Connection conn=cu.openConnection();
            String sql = "insert into User(username,password,hobby,gender,position,resume) values(?,?,?,?,?,?)";
            try {
             PreparedStatement pstmt = conn.prepareStatement(sql);
             
             pstmt.setString(1, user.getUserName());
             pstmt.setString(2, user.getPassWord());
             pstmt.setString(3, user.getHobby());
             pstmt.setString(4, user.getGender());
             pstmt.setString(5, user.getPosition());
             pstmt.setString(6, user.getResume());
             
             pstmt.executeUpdate();
            } catch (SQLException e) {
             e.printStackTrace();
            }finally{
             try {
              conn.close();//關閉連接數據庫
             } catch (SQLException e) {
              e.printStackTrace();
             }
            }
           }
           }



          五:是通過網站往數據庫中加載數據,如下:


           

          package com.bx.Servletform;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import dao.UserDAO;

          import factory.DAOFactory;

          import vo.User;

          public class RegisterServlet extends HttpServlet {
           
            
           public void doPost(HttpServletRequest request,HttpServletResponse response)
           throws ServletException,IOException{
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            String[] hobby=request.getParameterValues("hobby");
            String gender=request.getParameter("gender");
            String resume=request.getParameter("resume");
            String position=request.getParameter("position");
            User user=new User();
            user.setUserName(username);
            user.setGender(gender);
            user.setPassWord(password);
            user.setPosition(position);
            user.setResume(resume);
            String hobbyStr="";
            if(hobby!=null&&hobby.length>0){
             for(int i=0;i<hobby.length;i++){
              hobbyStr=hobby[i]+":";
             }
            }
            user.setHobby(hobbyStr);
            UserDAO udao=DAOFactory.getUserDAOInstance();
            udao.save(user);
            PrintWriter out=response.getWriter();
            out.println("Hello World Servlet james");
            System.out.println("username |"+username);
            System.out.println("password |"+password);
            System.out.println("gender |"+gender);
            System.out.println("resume |"+resume);
            System.out.println("position |"+position);
            if(hobby!=null&& hobby.length>0){
             for(int i=0;i<hobby.length;i++){
              System.out.println(hobby[i]);
             }
            }
            //實現頁面的跳轉
            if(username!=null && username.equals("james")){
             
             request.getRequestDispatcher("/success.html").forward(request, response);
            
               }else{
            request.getRequestDispatcher("/failure.jsp").forward(request, response);
            
           }
           }


          現在我們來配置一下register,jsp吧,如下:

          <form action="/Servlet_Form_Project/form" method="post">
          <!--form 中有兩個最為重要的屬性-->
              用戶名稱:<input type="text" name="username"><br>
              用戶密碼:<input type="password" name="password"><br>
              用戶愛好:<input type="checkbox" name="hobby" value="1">游泳
                <input type="checkbox" name="hobby" value="2">足球<br>
              用戶性別:<input type="radio" name="gender" value="male">男
                <input type="radio" name="gender" value="female">女
                <input type="radio" name="gender" value="secret">保密<br>
              用戶職位:<select name="position">
                <option value="CEO">CEO</option>
                <option value="CFO">CFO</option>
                <option value="CTO">CTO</option>
                </select><br>
              用戶簡歷:<textarea rows="5" cols="20" name="resume"></textarea><br/>
                     <input type="submit" value="注冊">
             </form>


          試圖效果如下:
           


          現在我們來配置一下WEB.xml如下所示:
           <servlet>
                   <servlet-name>RegisterServlet</servlet-name>
                  <servlet-class>com.bx.Servletform.RegisterServlet</servlet-class>
           <!-- this is servlet -->
           </servlet>
           <servlet-mapping>
                  <servlet-name>RegisterServlet</servlet-name>
                  <url-pattern>/form</url-pattern>
              </servlet-mapping>


          在此我們已經完成了Java Web與數據庫的連接:至此我們可以開始comcat,在瀏覽器中輸入連接的地址即:http://localhost:8080/Servlet_Form_Project/register.jsp
          得到頁面為:
             
          這時候我們可以查看數據庫中是否在如了我們輸入的數據即:

           

          posted on 2010-12-09 20:55 龍ぜ殘劍 閱讀(4397) 評論(2)  編輯  收藏

          FeedBack:
          # re: Java Web與數據庫相連接
          2010-12-10 11:10 | 小說庫
          很好的帖子,感謝分享  回復  更多評論
            
          # re: Java Web與數據庫相連接
          2016-02-26 18:12 | ss
          dd  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          <2016年2月>
          31123456
          78910111213
          14151617181920
          21222324252627
          282912345
          6789101112

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 响水县| 龙岩市| 荥阳市| 湖南省| 榆树市| 通海县| 平山县| 宿迁市| 延津县| 平湖市| 会昌县| 梅河口市| 永顺县| 余干县| 绥芬河市| 杭锦后旗| 德兴市| 措美县| 滕州市| 沾益县| 收藏| 英山县| 和田县| 石首市| 邯郸市| 西丰县| 姜堰市| 汉寿县| 子长县| 黄浦区| 曲阜市| 五华县| 紫金县| 汉寿县| 贡嘎县| 湖北省| 阳春市| 长乐市| 嘉禾县| 平果县| 鹤山市|