1.首先在newlist界面增加三個圖表,帶上事件
newlist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*,java.text.*,com.xx17.cys.entity.*" import="java.sql.*,org.apache.commons.dbcp2.*" import="javax.naming.*,javax.sql.*" pageEncoding="UTF-8"%> <%
//List<News> newslist = new ArrayList<News>(); List newslist = new ArrayList(); News news; /*= new News(1,"今天是星期四","gfsggfsg",201,"2019-3-13",0); newslist.add(news); news = new News(2,"又可以上web課啦!","gfsggfshgffdhg",104,"2019-3-14",0); newslist.add(news); String newstitle[]={"今天是星期四!","又可以上web課啦!","下午公休,嘿嘿!","人生啊,如此艱難!","現在是上午9點20分"}; String newsdate[]={"2019-3-13","2019-3-14","2019-3-15","2019-3-16","2019-3-17"}; */ /*數據庫連接池*/ /*BasicDataSource ds = new BasicDataSource(); String url="jdbc:mysql://localhost:3306/bookstore?user=root&password=caiyishuai"; url += "&useUnicode=true&characterEncoding=utf8"; ds.setDriverClassName(url); ds.setUsername("root"); ds.setPassword("caiyishuai"); ds.setMaxTotal(30); ds.setMinIdle(5); ds.setMaxWaitMillis(10000); ds.setRemoveAbandonedTimeout(100); ds.setRemoveAbandonedOnBorrow(true); ds.setRemoveAbandonedOnMaintenance(true); */ /*使用靜態數據庫連接池*/ Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/bookstore"); //建立連接池連接 Connection conn = ds.getConnection(); /*Class.forName("com.mysql.jdbc.Driver"); ////驅動程序名 String url = "jdbc:mysql://localhost:3306/bookstore"; //數據庫名 String username = "root"; //數據庫用戶名 String password = "caiyishuai"; //數據庫用戶密碼 Connection conn = DriverManager.getConnection(url, username, password); //連接狀態*/ if(conn != null){ out.print("數據庫連接成功!"); Statement stmt = conn.createStatement(); //創建結果集合,集合與表的結構類似 ResultSet rs = stmt.executeQuery("select * from t_news"); //rs.last //out.println("記錄數:"+rs.getRow()); while(rs.next()){ //System.out.println("rs"+rs); news = new News(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(5),rs.getString(4),1); newslist.add(news); } } /*建立連接 Connection conn = DriverManager.getConnection(url); 創建語句環境 Statement stmt = conn.createStatement(); 創建結果集合,集合與表的結構類似 ResultSet rs = stmt.executeQuery("select * from t_news"); rs.last out.println("記錄數:"+rs.getRow()); Class.forName("com.mysql.jdbc.Driver").newInstance(); com.mysql.jdbc.Driver d = new com.mysql.jdbc.Driver String url="jdbc:mysql://localhost:3306/bookstore?" +"user=root&password=caiyishuai&useUnicode=true&characterEncoding=utf8"; List<News> newslist = new ArrayList<News>(); News news; while(rs.next()){ news = new News(1,rs.getString(1),rs.getString(2),rs.getInt(4),rs.getString(3),1); newslist.add(news); }*/
%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>新聞列表</title> </head> <body> <link href="css/style.css" rel="stylesheet" type="text/css"/> <jsp:include page="head.jsp?col=1"></jsp:include> <div id="main" class="layout"> <% SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日"); java.util.Date today = new java.util.Date(); out.print(formatter.format(today)); //out.print(today.toLocaleString()); //int id =Integer.parseInt(str); %> <table width="1000" border="1" cellpadding="0" cellspacing="0" style="border-collapse:collapse;"> <tr> <th>序號</th> <th>標題</th> <th>日期</th> <th>點擊</th> <th></th> </tr> <% String[] color={"red","orange","yellow","green","blue","purple","pink","black","brown"};%> <% for(int font_size=1;font_size<7;font_size++) {%> <br> <font color="<%= color[font_size-1] %>" size="<%= font_size %>"> 智慧的帥帥,么么噠! </font> <%} News n; %> <% for(int i=0;i<newslist.size();i++){ n=(News)newslist.get(i);%> <tr> <td><%=i+1%></td> <td><a href="news.jsp?nid=<%=n.getNews_id()%>"> <%=n.getNews_title()%></a></td> <td><%=n.getNews_date()%></td> <td><%=n.getNews_read()%></td> <td> <a href="addnews.do?action=mod&nid=<%=n.getNews_id()%>"> <img src="images/mod.png" width=40 > </a> <a href="addnews.do?action=del&nid=<%=n.getNews_id()%>"> <img src="images/del.png" width=40> </a> </td> </tr> <%} %> </table> <a href="addnews.do?action=add"><img src="images/new.png" width=40 ></a> </div> <%@ include file="foot.jsp" %> </body> </html>
2.在NewsServlet,java里寫判斷條件等等
package com.xx17.cys.servlet; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.xx17.cys.entity.News; import com.xx17.cys.javabean.NewsBean; /** * Servlet implementation class NewsServlet */ @WebServlet("/addnews.do") public class NewsServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public NewsServlet() { super(); // TODO Auto-generated constructor stub } protected void addNews(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher rd; rd = request.getRequestDispatcher("addNews.jsp"); rd.forward(request, response); } protected void modNews(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nid = request.getParameter("nid"); NewsBean nb = new NewsBean(); News news = nb.getNewsById(nid); request.setAttribute("news", news); RequestDispatcher rd; rd = request.getRequestDispatcher("modnews.jsp"); rd.forward(request, response); } protected void delNews(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nid = request.getParameter("nid"); NewsBean nb = new NewsBean(); nb.del(nid); RequestDispatcher rd; rd = request.getRequestDispatcher("newslist.jsp"); rd.forward(request, response); } protected void getNews(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void insNews(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nt = request.getParameter("ntitle"); String nc = request.getParameter("ncontent"); String ntop = request.getParameter("ntop"); Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nd = sdf.format(now); int nr = 100; NewsBean nb = new NewsBean(); nb.add(nt,nc,nd,nr,ntop); response.sendRedirect("newslist.jsp"); /*RequestDispatcher rd; rd = request.getRequestDispatcher("newslist.jsp"); rd.forward(request, response);*/ } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String act = request.getParameter("action"); if(act.equals("add")) { addNews(request, response); }else if(act.equals("mod")) { modNews(request, response); }else if(act.equals("del")) { delNews(request, response); }else if(act.equals("show")) { getNews(request, response); }else if(act.equals("save")) { insNews(request, response); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
3.增加新聞,點擊后跳轉到addNews.jsp界面
addNews.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <link href="css/style.css" rel="stylesheet" type="text/css"/> <jsp:include page="head.jsp?col=1"></jsp:include> <div style="width:1000px; margin:auto; heigth:500px;"> <form action="addnews.do?action=save" method="post"> <table width="1000" border="1" cellpadding="5"> <tr> <td width="200">標題:</td> <td width="800"><input name="ntitle" size="80"></td> </tr> <tr> <td>內容:</td> <td><textarea name="ncontent" cols="80" rows="10"></textarea></td> </tr> <tr> <td></td> <td><input type="checkbox" name="ntop" value="1">置頂</td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="保存"> <input type="button" value="返回" onclick="location.href='newslist.jsp'"> </td> </tr> </table> </form> </div> </body> <%@ include file="foot.jsp" %> </html>
NewsBean.java
package com.xx17.cys.javabean; import java.sql.ResultSet; import com.xx17.cys.entity.News; public class NewsBean { public void add(String nt, String nc, String nd, int nr, String ntop) { String sql = "insert into t_news(ntitle,ncontent,ndate,"; sql += "nread,ntop) values('"+nt+"','"+nc+"','"+nd; sql += "',"+nr+","+ntop+")"; System.out.println("here: "+sql); DBBean db = new DBBean(); db.getConnection(); db.executeUpdata(sql); } public News getNewsById(String nid) { News n = new News(); String sql = "select * from t_news where nid="+nid; DBBean db = new DBBean(); db.getConnection(); ResultSet rs = db.executeQuery(sql); try { if(rs.next()) { n.setNews_id(rs.getInt(1)); n.setNews_title(rs.getString(2)); n.setNews_content(rs.getString(3)); n.setNews_top(rs.getInt(6)); } }catch(Exception e) { e.printStackTrace(); } return n; } public void del(String nid) { String sql = "delete from t_news where nid="+nid; System.out.println("here: "+sql); DBBean db = new DBBean(); db.getConnection(); db.executeUpdata(sql); } }
DBBean.java
package com.xx17.cys.javabean; import java.sql.*; import javax.naming.*; import javax.sql.*; public final class DBBean { private Connection conn; private Statement stmt; private ResultSet rs; public DBBean() { } //建立數據庫連接 public Connection getConnection() { try { /*使用靜態數據庫連接池*/ Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/bookstore"); //建立連接池連接 conn = ds.getConnection(); }catch(Exception e) { e.printStackTrace(); } return conn; } // 提取SQL生成記錄集 public ResultSet executeQuery(String sql) { try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); System.out.println("返回結果集"); }catch(Exception e) { e.printStackTrace(); } return rs; } // 提取SQL添加記錄 public int executeUpdata(String sql){ int result = 0; try{ stmt = conn.createStatement(); System.out.println(sql); result = stmt.executeUpdate(sql); }catch(Exception e){ e.printStackTrace(); } return result; } }
3.刪除數據