標籤:ref wss redirect line text strong jsp 產生 顯示
執行個體:
1、功能描述
實現一個簡易新聞發布系統,包括查看、添加、修改和刪除新聞等準系統
2、具體要求
(1) 建立資料庫 newssystem,建立表 news,要求如下:
(2) 程式運行時,顯示‘發布新聞’頁面( 1),輸入相關內容,單擊‘提交’按鈕,將新聞內容添加到資料庫
(3) 單擊圖 1 中的‘查看’按鈕,顯示‘查看新聞’頁面( 2),增加‘修改’和‘刪除’連結
(4) 單擊圖 2 中的‘update’連結,顯示‘修改新聞’頁面( 3),修改後單擊‘修改’按鈕確認,單擊‘查看’按鈕顯示‘查看新聞’頁面( 2)查看修改結果
(5) 單擊圖 2 中的‘delete’連結,刪除該條新聞,並顯示‘查看新聞’頁面顯示刪除後的內容( 4)
思路:三層架構剖析
顯示層:
都為jsp格式的檔案,網頁中顯示多少個頁面就有多少個jsp檔案
本執行個體有圖1、圖2、圖3共3個頁面,故要建立3個jsp檔案
商務邏輯層:
servlet來放置,裡面的檔案實現了增刪改查的功能
資料訪問層:
bean和dao兩個包來盛放
解題:按2.具體要求逐步推進
(1)略
(2)檔案執行順序為:AddNews--add.jsp--InsertNews
核心代碼(本例中出現的均為核心代碼):
AddNews
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("add.jsp").forward(request, response); }
add.jsp
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><h1>發布新聞</h1><form action="insert" method="post">標題:<input type="text" name="title"><br><input type="text" name="author"><br>來源:<input type="text" name="source"><br>內容:<textarea name="content"></textarea><br><input type="submit" value="提交"><a href="show">查看</a></form></body></html>
InsertNews
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //擷取參數(add.jsp中使用者輸入的內容) request.setCharacterEncoding("utf-8"); News data=new News(); data.setTitle(request.getParameter("title")); data.setAuthor(request.getParameter("author")); data.setSource(request.getParameter("source")); data.setContent(request.getParameter("content")); Date d=new Date(); data.setTime(d); //處理資料(將新內容添加到資料庫) try { new NewsDao().insert(data); } catch (Exception e) { e.printStackTrace(); } //跳轉(添加資料完畢後返回到add.jsp介面) response.sendRedirect("add"); }
(3)檔案執行順序為:Show--show.jsp
Show
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //擷取參數(沒有參數擷取) //處理資料(把資料庫表中所有內容查詢出來) ArrayList<News> list=new ArrayList<News>(); try { list=new NewsDao().select(); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("data", list);//將查詢到的內容裝到一個資料包裡,資料包的名字叫data //跳轉(轉到圖2所示頁面) request.getRequestDispatcher("show.jsp").forward(request, response); }
show.jsp
<body><h1>新聞顯示</h1><table border="1"><%ArrayList<News> list = (ArrayList<News>)request.getAttribute("data");//將Show中裝到資料包data裡的資料取出來for(News data : list){//用for迴圈遍曆%><tr><td><%=data.getNewsid() %></td><td><%=data.getTitle() %></td><td><%=data.getAuthor() %></td><td><%=data.getSource() %></td><td><%=data.getTime() %></td><td><a href="edit?id=<%=data.getNewsid()%>">修改</a></td>//指向EditNews(名為edit),帶有id的值<td><a href="delete?id=<%=data.getNewsid()%>" onclick="return confirm(‘確認要刪除<%=data.getTitle()%>嗎?‘)">刪除</a></td>//指向DeleteNews(名為delete),帶有id的值</tr> <%} %></table> </body>
(4)檔案執行順序為:EditNews--edit.jsp--UpdateNews
EditNews
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //擷取參數(擷取show.jsp中傳來的id值) String key=request.getParameter("id"); //處理資料 News data; try { data = new NewsDao().select(key); request.setAttribute("news", data); } catch (Exception e) { e.printStackTrace(); } request.getRequestDispatcher("edit.jsp").forward(request, response); }
edit.jsp
<body><form method="post" action="update"><h1>修改新聞</h1><%News data = (News)request.getAttribute("news");if(data != null){%><input type="hidden" name="newsid" value="<%=data.getNewsid() %>">標題:<input type="text" name="title" value="<%=data.getTitle() %>"><br><input type="text" name="author" value="<%=data.getAuthor() %>"><br>來源:<input type="text" name="source" value="<%=data.getSource() %>"><br>內容:<textarea name="content" ><%=data.getContent() %></textarea><br><input type="submit" value="提交"><input type="button" value="查看"><%}%></form></body>
UpdateNews
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //擷取參數 News data=new News(); data.setNewsid(Integer.parseInt(request.getParameter("newsid"))); data.setTitle(request.getParameter("title")); data.setAuthor(request.getParameter("author")); data.setSource(request.getParameter("source")); data.setContent(request.getParameter("content")); data.setTime(new Date(request.getParameter("time"))); //處理資料 try { new NewsDao().update(data); } catch (Exception e) { e.printStackTrace(); } //跳轉 response.sendRedirect("show"); }
(5)檔案執行順序為:DeleteNews(只執行一個檔案)
DeleteNews
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //擷取參數(show.jsp傳來的id) int newsid=Integer.parseInt(request.getParameter("id")); //處理資料 try { new NewsDao().delete(newsid); } catch (Exception e) { // TODO 自動產生的 catch 塊 e.printStackTrace(); } //跳轉(跳轉到圖2,通過Show間接跳轉到show.jsp) request.getRequestDispatcher("show").forward(request, response); }
JavaEE使用三層架構(顯示層、商務邏輯層、資料訪問層)實現資料的增刪改查