欣欣的留言板項目====超級觸動的dbUtil實現留言板

来源:http://www.cnblogs.com/chengzixin/archive/2017/05/06/6819051.html
-Advertisement-
Play Games

留言板管理系統 我的完成效果圖: 提交後: 我的留言板基本架構如圖: 創建留言板資料庫: 剛開始我的前臺主頁中寫留言信息表單: 開始建立後臺Java類中層次我先在我的實體層里寫了一個實體類實現增加的實體類如圖: 寫我Dao層里的BaseDao工具類 在Dao層里寫一個實現類: 在我的實現包里寫一個實 ...


留言板管理系統

我的完成效果圖:

提交後:

   我的留言板基本架構如圖:

創建留言板資料庫:

剛開始我的前臺主頁中寫留言信息表單:

<body>
<h1>留言板</h1>
<form action="提交後的頁面地址"  method="post" >
      留言者:<input type="text" name="author" />
      留言的內容:<input type="text" name="content" rows="100 "cols="120"/>
    <input type="submit" value="提交信息"/>
</form>
</body>

開始建立後臺Java類中層次
我先在我的實體層里寫了一個實體類實現增加的實體類如圖:

public class MessageBorad {
    private int id;

    private String message;

    private String author;

    private Date pastTime;
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Date getPastTime() {
        return pastTime;
    }

    public void setPastTime(Date pastTime) {
        this.pastTime = pastTime;
    }

}

寫我Dao層里的BaseDao工具類

public class BaseDao{

     public static final String driver="com.mysql.jdbc.Driver";
     public static final String url="jdbc:mysql://localhost:3306/資料庫名字";
     public static final String username="root";
     public static final String password="1234";

     public Connection con;
     public PreparedStatement ps;
     public ResultSet rs;

     static{
            Class.forname(driver);
     } 
     public Connection getConnection() throws Exception{
           if(con==null||con.isClosed()){
             con=DriverManager.getConnection(url,username,password);   
     }
           return con;
     }
     public void closeResources() throws Exception{
           rs.close();
           ps.close();
           con.close();
     }
    //執行增刪改
    public int exeuteUpdate(String sql,Object...Objs) throws Exception{
          con=getConnection();
          ps=con.prepareStatement(sql);
          for(int i=0;i<objs.length;i++){
             ps.setObject(i+1,objs[i]);
     }
          int count=ps.executeUpdate(); 
          return count;
     }
  //獲取結果集ResultSet
    public ResultSet executeQuery(String sql,Object...Objs) throws Exception{
          con=getConnection();
          ps=con.prepareStatement(sql);
         for(int i=0;i<objs.length;i++){
          ps=setObject(i+1,objs[i]);
      }
          rs=ps.executeQuery();
          return rs;
     }
    public int delete(int id) throws Exception{
         return 0;
     }
}

在Dao層里寫一個實現類:
  

public interface ImessageBorad{
//所有我介面里的方法:
     public boolean addMessage(String message,String author,Date paseTime) throws Exception;
//分頁的集合方法
     public List<Object[]> boradList(int pageIndex,int pageSize) throws Exception;
//分頁的總數
    public int messageCount() throws Exception;
}

在我的實現包里寫一個實現類:
用我的dbutil的時候,加入一個dbutil的jar包,鏈接資料庫也需要jar包,中間的是文件上傳的Jar包:

我的實現類的引用:

開始寫我的類:

public class ImpMessageBorad implements ImessageBorad {
      con=bd.getConection();
      DbUtils ut=new DbUtil();
      QueryRunner  qr=new QueryRunner();
      BaseDao bd=new BaseBao();
      ArrayListHandler al=new ArrayListHandler();
      public boolean addMessage(String boradContent, String author, Date time) throws Exception {
        int num=qr.update(con,"insert into message(message,author,pastTime) values (?,?,?)",boradContent,author,DateTime);
       if(num>0){
          flag=true;
      }
          ut.closeQuietly(con);
  }
       public List<Object[]> boradList(int pageIndex,int pageSize) throws Exception{
       String sql="select * from message limit ?,?";
       Object[] parameters={
              (pageIndex)';
              (pageSize);
      };
     return qr.query(con,sql,parameters,al);
  
}
public int messageCount() throws Exception{
   string sql="select count(1) as co from message";
   int num=0;
   ResultSet rs=bd.executeQuery(sql);
   if(rs.next()){
        num=rs.getInt("co");
   }
      return num;
      }

}

service 就是調用我的Dao層里的方法和實現

所以直接寫我的servlet調用我的service里的方法:

 

//先解決亂碼問題:
 ImessageBoradService msg=new MessageBoradServiceImp();
     request.setCharacterEncoding("utf-8");
     response.setCharacterEncoding("utf-8");
  if(“da”.equest.getParameter("action")){
      String boradContent=request.getParameter("name");
      String author=request.getParameter("message");
      Date dt=new Date();
      try{
         if(msg.addMessage(boradContent, author, dt)){
               request.setAttribute("success", "添加成功");
           request.getRequestDispatcher("/index.jsp").forward(request, response);
         }else {
            request.setAttribute("success", "添加失敗");
            request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

}

}
int pageSize=2;
        int pageIndex=0;
        if("ww".equals(request.getParameter("ca"))){
            String index=request.getParameter("pageIndex");
            System.out.println(index);
            if(index.equals("0")){
                pageIndex=pageIndex+pageSize;
            
            
            }else{
                System.out.println(2);
                int in=Integer.parseInt(index);
                pageIndex=in+pageSize;
                System.out.println(3);
            }
        }
        
        if("ws".equals(request.getParameter("ca"))){
            String index=request.getParameter("pageIndex");
            System.out.println(index);
            if(index.equals("0")){
                
                pageIndex=0;
            }
            else {
                int in=Integer.parseInt(index);
                
                pageIndex=in-pageSize;
            }
            
            
        }
        request.setAttribute("pageIndex", pageIndex);
        try {
         request.setAttribute("list", msg.boradList(pageIndex, pageSize))    ;
         request.getRequestDispatcher("/index.jsp").forward(request, response);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

  } 


在我的前臺頁面中form表單:

<h1>留言板:</h1>
    <br>
    <%
        List<Object[]> list=(List<Object[]>)request.getAttribute("list");
        
        for(Object[] object:list){
            
            %>
            <p style="backcolor:red">作者:<%=object[2] %>  <%=object[0] %>樓</p>
                 <lable>內容</lable>
                 <label><%=object[1] %></label>
                 <p> <%=object[3] %></p>
            <%
            }
            
    %>
    
    <br>
    <a href="MessageServlet?ca=ww&&pageIndex=${pageIndex}">下一頁</a>
    <a href="MessageServlet?ca=ws&&pageIndex=${pageIndex}">上一頁</a>
  
<form action="MessageServlet?action=da" method="post">
 
        請輸入你的姓名:<br><input type="text" name="name"><br>

        留言內容:<br><textarea rows="15" cols="20" name="message"></textarea><br><br>       
        <input type="submit" value="提交信息"><br>
    </form>
     <label style="color:red">${success }</label>
 

                                                                                                                                                      我還在這裡  奮鬥著   你在哪裡  在奮鬥嗎  地獄的鐮刀

 

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目的:1、學好linux,隨著大數據,雲等應用,開源軟體將占領市場,這些應用都是基於linux的。 2、通過RHCE認證考試 原因:1、人的自律很困難,必須付出代價(交錢上課完成作業)等方式強迫自己學習。(自己也喜歡學習linux) 2、本人年齡偏大40歲,但認為學習不可放鬆,活到老學到老。 正題: ...
  • Linux 中的基本命令與目錄結構 目錄 一、Linux 基本目錄結構 二、基本命令 三、瀏覽目錄 四、中間命令 五、更改密碼 六、環境變數和 shell 變數 七、命令路徑 八、文本編輯器 九、獲取線上幫助 十、shell 輸入輸出 十一、操作進程 十二、更改文件許可權 十三、歸檔和壓縮 一、Lin ...
  • 最近工作碰到一個問題,我和一個同伙負責開發一個管理系統,基於原來的代碼上進行修改,每當他修改之後,我要再修改都要和他確定是不是最新的文件,才能進行修改。非常影響工作的效率,所以在網上找了關於svn的使用。下麵開始svn的安裝和部署,解決開發中代碼的同步問題。 在Linux上安裝很簡單。 第一。先查看 ...
  • 方法1 : 在/etc/rc.local文件中添加 方法 2: 在搜索中找到 startup application 打開界面添加命令即可 ...
  • 原理是將SS轉化成http代理提供命令行終端使用。 1. privoxy安裝 2. privoxy配置 打開配置文件 加入下麵這兩項配置項 第一行設置privoxy監聽任意IP地址的8118埠。第二行設置本地socks5代理客戶端埠,註意不要忘了最後有一個空格和點號。 3. privoxy啟動 ...
  • 前言 在Python官方文檔的標準庫章節中,第一節是簡介,第二節就是Built_in Functions,可見內建函數是Python標準庫的重要組成部分,而有很多內建函數我們平時卻很少用到或根本就不知道原來還有這麼好用的函數居然直接就可以拿來用。 Built_in Funtions 接下來為大家介紹 ...
  • 記憶體映射文件時利用虛擬記憶體實現來將一個文件或者文件的一部分映射到記憶體中,然後整個文件就可以當作數組一樣的訪問,這個比傳統的文件操作要快得多,Java 使用記憶體映射文件首先需要從文件中獲取一個channel(通道),通道時磁碟文件的一個抽象,他使得我們可以訪問諸如記憶體映射、文件加鎖機制以及文件間快速數... ...
  • 01 複雜度1:最大子列和問題 Description: 給定K個整數組成的序列{N​1​​, N2, ..., N​k​​},“連續子列”被定義為{N​i, N​i+1​​, ..., N​j},其中1≤i≤j≤K。“最大子列和”則被定義為所有連續子列元素的和中最大者。例如給定序列{ 2, 11, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...