版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《WEB數(shù)據(jù)庫系統(tǒng)開發(fā)》</p><p><b> ——新聞發(fā)布系統(tǒng)</b></p><p> 班 級: 計科092班 </p><p> 姓 名: </p><p> 學(xué) 號: </p>
2、<p> 指導(dǎo)教師: </p><p> 時 間: 2012-6-1 </p><p><b> 需求分析</b></p><p><b> 項目概述</b></p><p> 當(dāng)今社會是一個信息化的社會,新聞作為信息的
3、一部分,有著信息量大、類別繁多、形式多樣等特點。新聞發(fā)布系統(tǒng)由此提出,簡單地說,新聞發(fā)布系統(tǒng)就是充當(dāng)一個網(wǎng)絡(luò)新聞媒介的功能,主要對新聞的管理功能。隨著網(wǎng)絡(luò)的快速發(fā)展和普及,越來越多的用戶習(xí)慣上網(wǎng)瀏覽新聞。本系統(tǒng)的主要目的就是為用戶提供一個方便、及時的網(wǎng)上新聞發(fā)布、瀏覽平臺。利用本系統(tǒng),用戶可以直接在網(wǎng)上發(fā)布新聞信息并根據(jù)自己的需要對新聞進(jìn)行檢索。</p><p><b> 需求分析</b>
4、</p><p> 1.2.1 功能需求描述</p><p> 新聞發(fā)布系統(tǒng)的主要目的是為用戶提供一個方便的、可快速瀏覽當(dāng)前最新新聞的界面,并且也可以隨時發(fā)布最新的訊息以達(dá)到信息共享的目的。因此要為用戶提供方便易用的使用界面,同時也為具有更高權(quán)限的管理用戶提供添加、刪除新聞的系統(tǒng)維護(hù)功能。</p><p> 1.2.2 基本功能</p><
5、;p> 1 查看新聞功能:任何用戶均可以使用查看新聞功能。首頁顯示不同欄目的最新幾條新聞,用戶通過在系統(tǒng)導(dǎo)航欄上單擊“新聞中心”超鏈接,可以進(jìn)入查看所有新聞的頁面,查看新聞,并且使用分頁顯示的效果,每頁顯示20條新聞,用戶可通過單擊下方的上下頁及首尾頁按鈕來跳轉(zhuǎn)到任意一頁瀏覽。并且顯示的所有新聞按發(fā)布的時間降序排列,以保證最新發(fā)布的新聞位于最前面。用戶通過單擊每條新聞的標(biāo)題可以查看到新聞的詳細(xì)內(nèi)容。</p><
6、;p> 2新聞搜索功能:任何用廣均可以使用新聞搜索功能。通過在“查詢類別”下拉列表框中選擇按新聞的標(biāo)題、內(nèi)容、作者和發(fā)布日期等不同的查詢方式來搜索符合條件的新聞。這里提供的是模糊搜索功能,即只要在查詢字段中包含用戶輸入的關(guān)鍵字內(nèi)容就認(rèn)為是符合查詢條件的記錄。查詢結(jié)果同樣以分頁的方式顯示。</p><p> 3 下載中心:任何用戶均可以使用下載功能。用戶通過在系統(tǒng)導(dǎo)航欄上單擊“下載中心”超鏈接可以進(jìn)入下載
7、頁面。該頁面顯示所有可供瀏覽者下載的文件,點擊文件名即可下載相應(yīng)的文件</p><p> 4留言功能:為了了解網(wǎng)站訪問者對站點的意見,本系統(tǒng)提供留言功能,所有用戶都可以通過導(dǎo)航欄上的“我要留言”鏈接進(jìn)入留言板系統(tǒng)進(jìn)行留言,無需注冊,只需填寫留言內(nèi)容、主題、用戶名即可進(jìn)行留言。 </p><p> 5后臺管理功能:當(dāng)管理員登錄后臺管理后,可以進(jìn)行新聞管理操作,包括發(fā)布新聞,對現(xiàn)有新聞的修
8、改和刪除;對文件的管理操作,包括文件上傳、下載、刪除等;用戶管理操作,對管理員用戶的增加、刪除及修改個人信息等;圖片管理操作,包括對圖片的上傳、刪除等;留言管理操作,包括對留言的回復(fù)、審核、刪除等操作。管理員可通過單擊“安全退出”按鈕來安全退出。</p><p><b> 概要設(shè)計</b></p><p> 在前面對用戶需求的分析和研究的過程中,對于本系統(tǒng)中幾個主
9、要的功能模塊大致有了一個抽象的認(rèn)識。下面將通過概要設(shè)計,給出新聞發(fā)布系統(tǒng)的模塊結(jié)構(gòu)、流程描述和用戶界面布局。</p><p> 2.1 開發(fā)與設(shè)計的總體思想</p><p> 新聞發(fā)布系統(tǒng)面向各個層次的網(wǎng)絡(luò)用戶,為了使它適合更多的用戶使用,系統(tǒng)的界面設(shè)計應(yīng)該盡量做到簡潔、友好、方便、易用,用戶不需要專門的學(xué)習(xí)便可熟練操作。</p><p> 首頁主要分為七個
10、板塊:圖片新聞、熱點新聞、最新公告、圖片掠影、天氣預(yù)報、下載中心、友情鏈接。首頁頭部logo有自動切換功能,管理員進(jìn)入后臺后,左邊為導(dǎo)航條,分別有:用戶管理、新聞管理、文件管理、圖片管理、留言管理,右邊為相應(yīng)操作界面。</p><p> 本系統(tǒng)采用B/S模式,服務(wù)器端使用JSP進(jìn)行動態(tài)網(wǎng)頁的開發(fā)。并使用struts2的MVC模式,使用第三方文本編輯插件fckeditor。</p><p>
11、; 2.2 系統(tǒng)模塊結(jié)構(gòu)圖</p><p> 依據(jù)需求分析結(jié)果,新聞發(fā)布系統(tǒng)可以分為六個模塊:數(shù)據(jù)庫訪問模塊、新聞查看模塊、新聞管理模塊、上傳管理模塊、留言管理模塊和用戶管理模塊,如圖2—1所示。</p><p> 2-1系統(tǒng)模塊結(jié)構(gòu)圖</p><p><b> 2.3 模塊設(shè)計</b></p><p>
12、1、數(shù)據(jù)庫訪問模塊:利用JavaBean封裝對數(shù)據(jù)庫的操作,主要包括連接數(shù)據(jù)庫、添加、修改、刪除、查詢數(shù)據(jù)表、關(guān)閉連接等功能。當(dāng)JSP頁面中需要訪問數(shù)據(jù)庫時直接調(diào)用這個JavaBean即可。數(shù)據(jù)庫訪問模塊功能樹如圖2—2所示。</p><p> 2-2數(shù)據(jù)庫訪問模塊</p><p> 2、新聞查看模塊:新聞查看模塊提供分頁顯示全部新聞的功能,用戶通過單擊每條新聞的標(biāo)題可以查看到本條新聞
13、的詳細(xì)內(nèi)容。還可以通過輸入查詢類別和查詢關(guān)鍵字來選擇符合條件的新聞瀏覽。新聞查看模塊功能樹如圖2—3所示。</p><p><b> 2-3新聞查看模塊</b></p><p> 3、新聞管理模塊:新聞管理模塊包括修改新聞和刪除新聞的功能。在進(jìn)入管理模塊前,需要以合法的管理員身份登錄。新聞管理模塊功能樹如圖2—4所示。</p><p>&l
14、t;b> 2-4新聞管理模塊</b></p><p> 4、上傳管理模塊:上傳管理模塊包括文件上傳、下載、刪除功能,需以管理員身份進(jìn)入系統(tǒng)才能操作。</p><p> 留言管理模塊:留言管理模塊包括留言查看、審核、回復(fù)、刪除功能需</p><p> 以管理員身份進(jìn)入系統(tǒng)才能操作。</p><p> 6、用戶管理模塊
15、:用戶管理模塊包括對系統(tǒng)管理員得添加、刪除及個人信息修改功能,需提供管理員權(quán)限才能進(jìn)行操作。</p><p><b> 2.4 功能圖</b></p><p> 根據(jù)以上分析,可得系統(tǒng)功能圖如下所示:</p><p><b> 2.5 數(shù)據(jù)庫設(shè)計</b></p><p> 本系統(tǒng)主要涉及四
16、張表:管理員表(admin)、新聞表(news)、文件表(upload)、留言表(messages)。采用MySql數(shù)據(jù)庫。</p><p> 新聞:主要屬性有Id、類別、關(guān)鍵字、發(fā)布人、文章來源、新聞內(nèi)容、瀏覽次數(shù)、新聞標(biāo)題以及發(fā)布時間。</p><p> 管理員表:主要屬性有Id、姓名、密碼。</p><p> 上傳文件表:主要屬性有Id、文件存放路徑、文
17、件名稱、上傳時間。</p><p> 留言表:主要屬性有Id、主題、內(nèi)容、回復(fù)內(nèi)容、留言時間、留言人、心情、頭像、父級留言Id、留言人Email</p><p> 存儲新聞信息的news表。表結(jié)構(gòu)如表2-1所示。</p><p> 表2-1 數(shù)據(jù)表news的結(jié)構(gòu)</p><p> admin數(shù)據(jù)表存儲管理員的信息,表的結(jié)構(gòu)如表2-2所
18、示。</p><p> 表2-2 數(shù)據(jù)表admin的結(jié)構(gòu)</p><p> 存儲上傳文件的信息upload表,表結(jié)構(gòu)如2-3所示。</p><p> 表2-3 數(shù)據(jù)表upload的結(jié)構(gòu)</p><p><b> 存儲留言信息的表</b></p><p><b> 表2-4 留言
19、表:</b></p><p><b> 詳細(xì)設(shè)計</b></p><p><b> 3.1 數(shù)據(jù)庫訪問</b></p><p><b> 功能:連接數(shù)據(jù)庫</b></p><p> 實現(xiàn):使用JDBC驅(qū)動,寫一個工具類,提供加載驅(qū)動、建立連接、釋放資源的靜態(tài)
20、方法,要用時直接通過類名.方法名調(diào)用。</p><p> package com.king.utils;</p><p> import java.sql.Connection;</p><p> import java.sql.DriverManager;</p><p> import java.sql.ResultSet;<
21、;/p><p> import java.sql.SQLException;</p><p> import java.sql.Statement;</p><p> public final class DBConnector {</p><p> private static String url=”jdbc:mysql://loca
22、lhost:3306/newssys”;</p><p> private static String user = "root";</p><p> private static String password = "root";</p><p><b> static{</b></p>
23、;<p><b> try {</b></p><p> Class.forName("com.mysql.jdbc.Driver");</p><p> } catch (ClassNotFoundException e) {</p><p> e.printStackTrace();</p&g
24、t;<p><b> }</b></p><p><b> }</b></p><p> public static Connection getConnection() throws SQLException{</p><p> return DriverManager.getConnection(
25、url,user,password);</p><p><b> }</b></p><p> public static void free(ResultSet rs,Statement st,Connection con){</p><p><b> try {</b></p><p>
26、 if(rs!=null)</p><p> rs.close();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p><b> try {</b>
27、</p><p> if(st!=null)</p><p> st.close();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> } finally{</p><p><b
28、> try {</b></p><p> if(con!=null)</p><p> con.close();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }<
29、;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> 3.2 新聞瀏覽
30、</b></p><p> 功能:通過點擊新聞查看新聞的詳細(xì)內(nèi)容</p><p> 實現(xiàn):點擊新聞后根據(jù)新聞ID查詢出新聞詳細(xì)內(nèi)容,封裝至新聞的JavaBean中,傳至JSP頁面,取出數(shù)據(jù)顯示</p><p> public News getNewsDetail(String news_id){</p><p> News
31、 news = new News();</p><p><b> try {</b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prepareStatement("select * from news where news_id=?");
32、</p><p> ps.setString(1, news_id);</p><p> rs = ps.executeQuery();</p><p> while(rs.next()){</p><p> news.setNews_id(rs.getInt(1));</p><p> news.setNe
33、ws_type(rs.getString(2));</p><p> news.setNews_keys(rs.getString(3));</p><p> news.setNews_author(rs.getString(4));</p><p> news.setNews_origin(rs.getString(5));</p><p
34、> news.setNews_content(rs.getString(6));</p><p> news.setNews_title(rs.getString(7));</p><p> news.setNews_read(rs.getShort(8));</p><p> news.setNews_time(rs.getString(9));&l
35、t;/p><p><b> }</b></p><p> ps = con.prepareStatement("update news set news_read=? where news_id=?");</p><p> ps.setInt(1, news.getNews_read()+1);//將閱讀次數(shù)加1</
36、p><p> ps.setString(2, news_id);</p><p> ps.executeUpdate();</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{&l
37、t;/b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p><p> return news;</p><p><b> }</b></p><p><b> 3.3 新聞
38、管理</b></p><p> 3.3.1 發(fā)布新聞:</p><p> 功能:管理員在后臺發(fā)布新聞。</p><p> 實現(xiàn):將新聞的信息存入數(shù)據(jù)庫,添加成功則返回true,否則返回false</p><p> public boolean addArticle(String news_type, String news
39、_title,</p><p> String news_keys, String news_author, String news_content,</p><p> String news_origin, String news_time, int news_read){</p><p> boolean b = false;</p><
40、;p> String sql = "insert into news values (null,?,?,?,?,?,?,?,?)";</p><p><b> try {</b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prep
41、areStatement(sql);</p><p> ps.setString(1, news_type);</p><p> ps.setString(2, news_keys);</p><p> ps.setString(3, news_author);</p><p> ps.setString(4, news_origin
42、);</p><p> ps.setString(5, news_content);</p><p> ps.setString(6, news_title);</p><p> ps.setInt(7, news_read);</p><p> ps.setString(8, news_time);</p><p
43、> int result = ps.executeUpdate();</p><p> if (result != 0) {</p><p><b> b = true;</b></p><p><b> }</b></p><p> } catch (SQLException e)
44、 {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p><p><b&g
45、t; return b;</b></p><p><b> }</b></p><p> 3.3.2 編輯新聞:</p><p><b> 功能:修改新聞內(nèi)容</b></p><p> 實現(xiàn):根據(jù)新聞的ID,修改新聞信息。成功則返回true,否則返回false </p&g
46、t;<p> public boolean editArticle(String news_type, String news_title,String news_keys, String news_author, String news_content,String news_origin, String news_time, int news_read,String news_id){</p><
47、p> boolean b = false;</p><p> String sql = "update news set news_type=?,news_keys=?,news_author=?,news_origin=?,news_content=?,news_title=?,news_read=?,news_time=? where news_id=?";</p>
48、<p><b> try {</b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prepareStatement(sql);</p><p> ps.setString(1, news_type);</p><p>
49、ps.setString(2, news_keys);</p><p> ps.setString(3, news_author);</p><p> ps.setString(4, news_origin);</p><p> ps.setString(5, news_content);</p><p> ps.setString(
50、6, news_title);</p><p> ps.setInt(7, news_read);</p><p> ps.setString(8, news_time);</p><p> ps.setString(9, news_id);</p><p> int result = ps.executeUpdate();</
51、p><p> if (result != 0) {</p><p><b> b = true;</b></p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace(
52、);</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p><p><b> return b;</b></p><p>
53、;<b> }</b></p><p> 3.3.3 刪除新聞:</p><p><b> 功能:刪除指定新聞</b></p><p> 實現(xiàn):根據(jù)該新聞ID刪除記錄,成功返回true,否則返回false.</p><p> public boolean deleteNews(String
54、 news_id){</p><p> boolean b = false;</p><p><b> try {</b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prepareStatement("delete fro
55、m news where news_id=?");</p><p> ps.setString(1, news_id);</p><p> if(ps.executeUpdate()!=0){</p><p><b> b=true;</b></p><p><b> }</b>&
56、lt;/p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><
57、b> }</b></p><p><b> return b;</b></p><p><b> }</b></p><p> 3.3.3 搜索新聞:</p><p> 功能:根據(jù)關(guān)鍵字搜索新聞</p><p> 實現(xiàn):接收搜索關(guān)鍵字,對新聞進(jìn)行
58、模糊搜索,并將搜索結(jié)果封裝到一個PageModel的Bean中,該Ban存放了搜索結(jié)果的所有信息,返回至JSP頁面后即可取出相應(yīng)信息并顯示。</p><p> public PageModel<News> searchNews(String key,int pageNow){</p><p> PageModel<News> newsModel = new Pa
59、geModel<News>();</p><p> ArrayList<News> newsList = new ArrayList<News>();</p><p> int totalRecord=0;</p><p><b> try {</b></p><p> con
60、 = DBConnector.getConnection();</p><p> ps = con.prepareStatement("select count(*) from news where news_title like ?");</p><p> ps.setString(1, "%"+key+"%");</
61、p><p> rs = ps.executeQuery();</p><p> if(rs.next()){</p><p> totalRecord = rs.getInt(1);</p><p><b> }</b></p><p> ps = con.prepareStatement(
62、"select * from news where news_title like ? limit ?,?");</p><p> ps.setString(1, "%"+key+"%");</p><p> ps.setInt(2, pageSize*(pageNow-1));</p><p> p
63、s.setInt(3, pageSize);</p><p> rs = ps.executeQuery();</p><p> while(rs.next()){</p><p> News news = new News();</p><p> news.setNews_id(rs.getInt(1));</p>&
64、lt;p> news.setNews_type(rs.getString(2));</p><p> news.setNews_keys(rs.getString(3));</p><p> news.setNews_origin(rs.getString(5));</p><p> news.setNews_title(rs.getString(7)
65、);</p><p> news.setNews_time(rs.getString(9));</p><p> newsList.add(news);</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.p
66、rintStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p><p> newsModel.setList(newsList);</
67、p><p> newsModel.setPageNow(pageNow);</p><p> newsModel.setPageSize(pageSize);</p><p> newsModel.setTotalRecords(totalRecord);</p><p> return newsModel;</p><
68、;p><b> }</b></p><p><b> 3.4 上傳管理</b></p><p> 3.4.1 上傳文件</p><p> 功能:實現(xiàn)文件上傳,可一次上傳多個文件,并對文件大小、類型進(jìn)行過濾</p><p> 實現(xiàn):使用apache的common-fileupload組
69、件實現(xiàn),將文件上傳至服務(wù)器,同時在數(shù)據(jù)庫中存儲相應(yīng)文件的信息。</p><p><b> 1、上傳至服務(wù)器:</b></p><p> package com.king.action;</p><p> import java.io.File;</p><p> import java.io.FileInputS
70、tream;</p><p> import java.io.FileOutputStream;</p><p> import java.io.InputStream;</p><p> import java.io.OutputStream;</p><p> import java.util.Date;</p>&
71、lt;p> import java.util.List;</p><p> import org.apache.struts2.ServletActionContext;</p><p> import com.king.dao.UploadManager;</p><p> import com.king.utils.DateFormatEditor
72、;</p><p> import com.opensymphony.xwork2.ActionSupport;</p><p> public class UploadAction extends ActionSupport {</p><p> private List<File> file;//file對應(yīng)于表單的file</p
73、><p> private List<String> fileFileName;</p><p> private List<String> fileContenType;</p><p> private String savePath;</p><p> private int id;</p>
74、<p> UploadManager uploadManager = new UploadManager();</p><p> public int getId() {</p><p> return id;</p><p><b> }</b></p><p> public void setI
75、d(int id) {</p><p> this.id = id;</p><p><b> }</b></p><p> public String getSavePath() {</p><p> return savePath;</p><p><b> }</b
76、></p><p> public void setSavePath(String savePath) {</p><p> this.savePath = savePath;</p><p><b> }</b></p><p> public List<File> getFile() {&l
77、t;/p><p> return file;</p><p><b> }</b></p><p> public void setFile(List<File> file) {</p><p> this.file = file;</p><p><b> }<
78、/b></p><p> public List<String> getFileFileName() {</p><p> return fileFileName;</p><p><b> }</b></p><p> public void setFileFileName(List<S
79、tring> fileFileName) {</p><p> this.fileFileName = fileFileName;</p><p><b> }</b></p><p> public List<String> getFileContenType() {</p><p> ret
80、urn fileContenType;</p><p><b> }</b></p><p> public void setFileContenType(List<String> fileContenType) {</p><p> this.fileContenType = fileContenType;</p>
81、;<p><b> }</b></p><p> @SuppressWarnings("deprecation")</p><p><b> @Override</b></p><p> public String execute(){</p><p>&l
82、t;b> try{</b></p><p> for(int i = 0;i < file.size();++i){</p><p> if(file.get(i).length()!=0){</p><p> InputStream is = new FileInputStream(file.get(i));</p>
83、<p> String root = ServletActionContext.getRequest().getRealPath(this.getSavePath());</p><p> File destFile = new File(root,this.getFileFileName().get(i));</p><p> String time = new Date
84、FormatEditor().dateEditor2(new Date());</p><p> if(uploadManager.savePath(null,this.getFileFileName().get(i), time)){</p><p> OutputStream os = new FileOutputStream(destFile);</p><p
85、> int length = 0;</p><p> byte[] buffer = new byte[400];</p><p> while((length = is.read(buffer)) >0){</p><p> os.write(buffer, 0, length);</p><p><b>
86、}</b></p><p> is.close();</p><p> os.close();</p><p> ServletActionContext.getRequest().setAttribute("state", "uploadFileSucc");</p><p> r
87、eturn SUCCESS;</p><p><b> }else{</b></p><p> return ERROR;</p><p><b> }</b></p><p><b> }else{</b></p><p> return E
88、RROR;</p><p><b> }</b></p><p><b> }</b></p><p> }catch(Exception e){</p><p> e.printStackTrace();</p><p> return ERROR;</p&
89、gt;<p><b> }</b></p><p> return SUCCESS;</p><p><b> }</b></p><p><b> }</b></p><p> 2、文件信息存入數(shù)據(jù)庫:</p><p> pu
90、blic boolean savePath(String filePath,String name,String time) {</p><p> boolean flag = false;</p><p> String sql = "insert into upload values (null,?,?,?)";</p><p><
91、b> try {</b></p><p> con = DBConnector.getConnection();</p><p> pstmt = con.prepareStatement(sql);</p><p> pstmt.setString(1, filePath);</p><p> pstmt.set
92、String(2, name);</p><p> pstmt.setString(3, time);</p><p> int result = pstmt.executeUpdate();</p><p> if(result != 0) {</p><p> flag = true;</p><p>&l
93、t;b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, pstmt, con);&
94、lt;/p><p><b> }</b></p><p> return flag;</p><p><b> }</b></p><p> 3.4.2 刪除文件</p><p> 功能:刪除服務(wù)器中供下載的文件</p><p> 實現(xiàn):刪除服
95、務(wù)器中供下載的文件,并刪除數(shù)據(jù)庫中相應(yīng)的記錄</p><p> package com.king.action;</p><p> import java.io.File;</p><p> import org.apache.struts2.ServletActionContext;</p><p> import org.omg.
96、CORBA.Request;</p><p> import com.king.dao.UploadManager;</p><p> import com.opensymphony.xwork2.ActionSupport;</p><p> public class DeleteFileAction extends ActionSupport {</
97、p><p> private int id;</p><p> public int getId() {</p><p> return id;</p><p><b> }</b></p><p> public void setId(int id) {</p><p&
98、gt; this.id = id;</p><p><b> }</b></p><p><b> @Override</b></p><p> public String execute() throws Exception {</p><p> UploadManager manage
99、r = new UploadManager();</p><p> String path = ServletActionContext.getRequest().getRealPath("/upload/file");</p><p> System.out.println(manager.getFileNameById(this.getId()));</p
100、><p> File file = new File(path,manager.getFileNameById(this.getId()));</p><p><b> try{</b></p><p> if(manager.deleteFile(this.getId())){</p><p> file.dele
101、te();//刪除磁盤上的文件</p><p> ServletActionContext.getRequest().setAttribute("state", "deleteFileSuc");</p><p><b> }</b></p><p> }catch(Exception e){<
102、;/p><p> e.printStackTrace();</p><p> ServletActionContext.getRequest().setAttribute("state", "deleteFileFail");</p><p> return ERROR;</p><p><b&
103、gt; }</b></p><p> return SUCCESS;</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.5 留言管理</b></p><p><b>
104、 功能:刪除留言</b></p><p> 實現(xiàn):根據(jù)后臺指定要刪除留言的Id,在數(shù)據(jù)庫中刪除留言及其下級留言</p><p> public boolean deleteMessage(String id){</p><p> boolean b = false;</p><p><b> try {<
105、/b></p><p> con = DBConnector.getConnection();</p><p> ps =con.prepareStatement("delete from messages where pid=?");</p><p> ps.setString(1, id);</p><p>
106、; ps.executeUpdate();</p><p> ps = con.prepareStatement("delete from messages where Id=?");</p><p> ps.setString(1, id);</p><p> if(ps.executeUpdate()==1){</p>
107、<p><b> b = true;</b></p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</
108、b></p><p> DBConnector.free(rs, null, con);</p><p><b> }</b></p><p><b> return b;</b></p><p><b> }</b></p><p>&l
109、t;b> 3.6 用戶管理</b></p><p> 3.6.1 添加用戶</p><p> public boolean addUser(String username,String password){</p><p> boolean b = false;</p><p><b> try {<
110、;/b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prepareStatement("insert into admin(name,password) values(?,?)");</p><p> ps.setString(1, username);
111、</p><p> ps.setString(2, password);</p><p> if(ps.executeUpdate()==1){</p><p><b> b = true;</b></p><p><b> }</b></p><p> } cat
112、ch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p>
113、;<p><b> return b;</b></p><p><b> }</b></p><p> 3.6.2 刪除用戶</p><p> public boolean delUser(String userid){</p><p> boolean b = false;
114、</p><p><b> try {</b></p><p> con = DBConnector.getConnection();</p><p> ps = con.prepareStatement("delete from admin where Id=?");</p><p> ps
115、.setString(1, userid);</p><p> if(ps.executeUpdate()==1){</p><p><b> b = true;</b></p><p><b> }</b></p><p> } catch (SQLException e) {</p
116、><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> DBConnector.free(rs, ps, con);</p><p><b> }</b></p><p><b> retu
117、rn b;</b></p><p><b> }</b></p><p><b> 3.7 建立數(shù)據(jù)庫</b></p><p> 本系統(tǒng)采用MySql6.0數(shù)據(jù)庫</p><p> 3.7.1 表admin:</p><p> CREATE TABLE
118、`admin` (</p><p> `Id` int(11) NOT NULL AUTO_INCREMENT,</p><p> `name` varchar(20) NOT NULL DEFAULT '',</p><p> `password` varchar(30) DEFAULT NULL,</p><p>
119、 PRIMARY KEY (`Id`)</p><p> ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk;</p><p> 3.7.2 表news:</p><p> CREATE TABLE `news` (</p><p> `news_id` int(11) NOT N
120、ULL AUTO_INCREMENT,</p><p> `news_type` varchar(10) NOT NULL,</p><p> `news_keys` varchar(50) DEFAULT '',</p><p> `news_author` varchar(30) DEFAULT '',</p>
121、<p> `news_origin` varchar(80) DEFAULT '',</p><p> `news_content` longtext NOT NULL,</p><p> `news_title` varchar(100) NOT NULL,</p><p> `news_read` int(11) DEFAUL
122、T '0',</p><p> `news_time` varchar(20) NOT NULL,</p><p> PRIMARY KEY (`news_id`)</p><p> ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=gbk;</p><p> `3.
123、7.3 表upload:</p><p> CREATE TABLE `upload` (</p><p> `id` int(11) NOT NULL AUTO_INCREMENT,</p><p> `path` varchar(100) DEFAULT NULL,</p><p> `name` varchar(30) NOT
124、NULL,</p><p> `time` varchar(30) NOT NULL,</p><p> PRIMARY KEY (`id`)</p><p> ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;</p><p><b> 總結(jié)</b>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- web高級程序課程設(shè)計---新聞發(fā)布系統(tǒng)
- java-web新聞發(fā)布系統(tǒng)課程設(shè)計
- jsp新聞發(fā)布課程設(shè)計---新聞發(fā)布系統(tǒng)
- 新聞發(fā)布系統(tǒng)課程設(shè)計
- 新聞發(fā)布系統(tǒng)課程設(shè)計
- 新聞發(fā)布系統(tǒng)課程設(shè)計
- 新聞發(fā)布系統(tǒng)課程設(shè)計
- web應(yīng)用基礎(chǔ)課程設(shè)計-----新聞管理與發(fā)布系統(tǒng)
- jsp課程設(shè)計-新聞發(fā)布系統(tǒng)
- java課程設(shè)計-- 新聞發(fā)布系統(tǒng)
- java課程設(shè)計報告《新聞發(fā)布系統(tǒng)》
- web課程設(shè)計--校內(nèi)新聞系統(tǒng)的設(shè)計與開發(fā)
- jsp課程設(shè)計(論文)-新聞發(fā)布系統(tǒng)
- web校園新聞系統(tǒng)課程設(shè)計
- 基于web的新聞發(fā)布系統(tǒng)(計算機(jī)網(wǎng)絡(luò)課程設(shè)計)
- 《web系統(tǒng)開發(fā)課程設(shè)計》
- jsp課程設(shè)計---基于jsp的新聞發(fā)布系統(tǒng)
- 基于web的新聞發(fā)布管理系統(tǒng)
- 基于jspjava新聞發(fā)布系統(tǒng)設(shè)計和開發(fā)
- web課程設(shè)計--課程管理系統(tǒng)
評論
0/150
提交評論