欣欣的留言板項目====超級觸動的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
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...