留言板管理系統 我的完成效果圖: 提交後: 我的留言板基本架構如圖: 創建留言板資料庫: 剛開始我的前臺主頁中寫留言信息表單: 開始建立後臺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>
我還在這裡 奮鬥著 你在哪裡 在奮鬥嗎 地獄的鐮刀