JavaEE使用三層架構(顯示層、商務邏輯層、資料訪問層)實現資料的增刪改查

來源:互聯網
上載者:User

標籤: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使用三層架構(顯示層、商務邏輯層、資料訪問層)實現資料的增刪改查

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.