




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、;.Jsp課程設(shè)計新聞發(fā)布系統(tǒng)專 業(yè): 信息管理與信息系統(tǒng) 班 級: 10-02 學(xué) 號: 311009030217 姓 名: 指導(dǎo)老師: 2013/09/13.目 錄摘要2一 系統(tǒng)分析31.1 系統(tǒng)功能31.2 可行性分析3二 總體設(shè)計32.1 項目規(guī)劃32.2 系統(tǒng)功能結(jié)構(gòu)圖32.3 數(shù)據(jù)庫設(shè)計4三 詳細設(shè)計53.1 運行效果圖53.2 系統(tǒng)目錄83.3 系統(tǒng)核心源碼9四 總結(jié)24基于JSP的新聞發(fā)布系統(tǒng)摘 要:為了提高實踐能力,同時將所學(xué)知識付諸實踐,本次課程設(shè)計以實現(xiàn)新聞發(fā)布為主要設(shè)計目標,采用Eclipse作為開發(fā)平臺,Mysql作為數(shù)據(jù)庫服務(wù)器,Tomcat作為測試服務(wù)器,實現(xiàn)了對
2、新聞的瀏覽、發(fā)布、修改、刪除以及會員的注冊、登錄等功能,系統(tǒng)的實現(xiàn)采用MVC的設(shè)計模式,將頁面顯示與邏輯實現(xiàn)相分離,用jsp頁面負責(zé)與用戶的交互顯示,用servlet負責(zé)邏輯的控制和處理,同時也做了很多實用工具類完成了一個新聞發(fā)布系統(tǒng)所應(yīng)具有的基本功能,實現(xiàn)過程封裝了對數(shù)據(jù)庫和服務(wù)器實現(xiàn)的復(fù)雜邏輯操作,同時用javabean封裝實用工具類,使系統(tǒng)更具健壯性。系統(tǒng)捕獲了絕大多數(shù)的異常情況,具有較好的容錯性,杜絕了一般用戶直接操作數(shù)據(jù)庫的可能,能夠承受大量用戶同時瀏覽的壓力,滿足大部分新聞發(fā)布的需求。關(guān)鍵詞:Tomcat、Jsp、servlet、新聞發(fā)布、數(shù)據(jù)庫一、系統(tǒng)分析1.1 系統(tǒng)功能:會員注
3、冊的功能發(fā)布新聞的功能修改新聞的功能刪除新聞的功能權(quán)限分離的功能1.2 可行性分析本系統(tǒng)前臺頁面用列表顯示新聞的標題、新聞內(nèi)容,滿足了普通用戶瀏覽新聞、查看新聞信息的基本要求,同時對管理員和普通用戶顯示不同的權(quán)限內(nèi)容:普通注冊用戶可以瀏覽新聞,添加新聞;而管理員則除了具有普通會員的基本權(quán)限以外,還具有修改新聞,刪除新聞的權(quán)限。這種權(quán)限的分離更方便于對新聞系統(tǒng)的管理和維護,保證了系統(tǒng)的安全性。二、總體設(shè)計2.1 項目規(guī)劃新聞發(fā)布系統(tǒng)主要包括新聞列表、顯示新聞詳細信息、發(fā)布新聞、修改新聞、會員注冊、會員登錄和權(quán)限分離。2.2 系統(tǒng)功能結(jié)構(gòu)圖新聞發(fā)布系統(tǒng)功能結(jié)構(gòu),如下圖所示。新聞發(fā)布系統(tǒng)普通會員管理
4、員瀏覽新聞添加新聞瀏覽新聞添加新聞修改新聞刪除新聞會員注冊會員登錄2.3 數(shù)據(jù)庫設(shè)計本系統(tǒng)采用mysql數(shù)據(jù)庫,利用了Navicat for MySQL工具方便對數(shù)據(jù)庫的操作,本系統(tǒng)的數(shù)據(jù)庫名稱為dbnews:系統(tǒng)一共建立了兩張表news 表用于存儲新聞的相關(guān)信息userinfo 表用于存儲注冊的會員的相關(guān)信息三、詳細設(shè)計3.1 系統(tǒng)運行效果圖進入首頁瀏覽新聞頁面會員注冊頁面:普通會員登錄后的頁面 管理員登錄后的畫面 普通會員可以添加新聞填寫新聞內(nèi)容后點擊提交直接將內(nèi)容填寫到數(shù)據(jù)中,前臺列表調(diào)用數(shù)據(jù)庫,可以顯示當(dāng)前添加的新聞內(nèi)容。管理員管理新聞頁面管理員刪除新聞管理員修改新聞3.2 系統(tǒng)目錄本
5、系統(tǒng)的開發(fā)平臺選的是eclipse,采用MVC開發(fā)模式系統(tǒng)目錄結(jié)構(gòu)如下所示: Jsp頁面用來靜態(tài)顯示頁面;.hpu.dbUtil包用來處理與數(shù)據(jù)庫的連接交互等操作;.hpu.filter包用過濾器處理亂碼.hpu.listener包為session加監(jiān)聽器便于處理新聞列表顯示.hpu.servlet包用來處理表單提交的信息.hpu.tool包用來存儲javaBean的實用工具類3.3 系統(tǒng)核心源碼index.jsp采用html中的框架實現(xiàn)模塊分離,核心代碼如下:其中l(wèi)ist.jsp用于顯示新聞列表,核心代碼如下新聞動態(tài):.$p.tit
6、le共$sessionScope.page.pageTotal頁 | 當(dāng)前位于第$sessionScope.page.pageNow頁上一頁上一頁下一頁下一頁系統(tǒng)為從數(shù)據(jù)庫中獲取列表,第一次瀏覽時要獲得存儲新聞信息的page對象,所以會調(diào)用pageView這個servlet來處理,pageView.java的核心代碼如下:protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException doPost(req,resp);protected void
7、 doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String pageNow=req.getParameter(pageNow);Page page=new Page(DbTool.getRow(),DbTool.rowTotal();HttpSession session=req.getSession();if(pageNow=null)page.setPageNow(1);elsepage.setPageNow(Integer.parseInt(pag
8、eNow);String pagename = null;String tmp = req.getParameter(flag);if(tmp != null)int flag = Integer.parseInt(tmp);if(flag = 1)pagename = list.jsp;else if(flag =2)pagename = editnews.jsp;elsepagename = alternews.jsp;session.setAttribute(page, page);session.setAttribute(isFirst, false);req.getRequestDi
9、spatcher(pagename).forward(req,resp);news.jsp頁面用來顯示詳細的新聞內(nèi)容,包括初始化頁面,核心代碼如下:河南理工大學(xué)新聞中心歡迎您的到來!$sessionScope.vo.title 作者:$sessionScope.vo.author 時間:$vo.time $sessionScope.vo.content本站公告:河南理工大學(xué)新聞中心歡迎您!河南理工大學(xué)歡迎您!News.java中的VO是一個NewVO的值對象,用來存放每條新聞的詳細信息,其類型定義如下:public class NewVO private int id;privat
10、e String title;private String author;private String content;private String time;public void setOneNew(int id,String title,String author,String content,String time)this.id=id;this.author=author;this.content=content;this.time=time;this.title=title;public int getId() return id;public String getTitle()
11、return title;public String getAuthor() return author;public String getContent() return content;public String getTime() return time;Login.jsp頁面用來處理登錄相關(guān)信息,其中包含了用戶名以及密碼的js驗證,其核心代碼如下:body background=function fun(form)if(.value.length=0)alert(用戶名不能為空);.focus();return false;else if(form.
12、pass.value.length=0)alert(密碼不能空);form.pass.focus();return false;img src= width=200用戶登錄:賬戶:密碼:類別:會員登錄管理員登錄會員注冊$error歡迎您:$sessionS用戶注銷添加新聞管理新聞其中用到了.hpu.dbUtil包中的DbTool類,其核心代碼如下:public class DbTool public static String checkLogin(GetParam gp)Connection con=DbConnection.getConnection();Pr
13、eparedStatement ps=null;String sql=select * from userinfo where username=?;ResultSet rs=null;String name = gp.getParamValue(name);String pass = gp.getParamValue(pass);String classes = gp.getParamValue(classes);if(classes.equals(admin) & !name.equals(admin)return 沒有該用戶;tryif(con!=null)ps=con.prepareS
14、tatement(sql);ps.setString(1, name);rs=ps.executeQuery();if(rs.next()if(!rs.getString(2).equals(pass)con.close();return 密碼不正確;elsereturn rs.getString(3); /返回圖片路徑elsecon.close();return 沒有該用戶;catch(SQLException e)e.printStackTrace();return null;public static boolean add(GetParam gp,boolean isNews)Conn
15、ection con=DbConnection.getConnection();PreparedStatement ps=null;String sql=select * from userinfo where username=?;String sqlUser=insert into userinfo(username,pass,pic) values(?,?,?);String sqladd=insert into news(title,author,content,time) values(?,?,?,?);try if(!isNews)ps=con.prepareStatement(s
16、ql);ps.setString(1, gp.getParamValue(username);ResultSet rs=ps.executeQuery();if(rs.next()return false;String name=username,pass,pic;ps=con.prepareStatement(sqlUser);for(int i=0;iname.length;+i)for(int j=0;jgp.getSize();+j)if(namei.equals(gp.getParamName(j)ps.setString(i+1,gp.getParamValue(namei);ps
17、.executeUpdate();con.close();return true;elseps=con.prepareStatement(sqladd);String name=title,author,content,time;for(int i=0;iname.length;+i)for(int j=0;jgp.getSize();+j)if(namei.equals(gp.getParamName(j)ps.setString(i+1,gp.getParamValue(namei);ps.executeUpdate();con.close(); catch (SQLException e
18、) e.printStackTrace();return false;public static void update(GetParam gp, String id)Connection con=DbConnection.getConnection();PreparedStatement ps=null;String sqlupdate=update news set title=?,author=?,content=?,time=? where id = ?;try ps=con.prepareStatement(sqlupdate); catch (SQLException e1) e1
19、.printStackTrace();String name=title,author,content,time;for(int i=0;iname.length;+i)for(int j=0;jgp.getSize();+j)if(namei.equals(gp.getParamName(j)try ps.setString(i+1,gp.getParamValue(namei); catch (SQLException e) e.printStackTrace();try ps.setString(5, id);ps.executeUpdate();con.close(); catch (
20、SQLException e) e.printStackTrace();public static ArrayList getRow()ArrayList list=new ArrayList();Connection con=DbConnection.getConnection();String sql=select * from news order by id desc;ResultSet rs=null;try Statement st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()NewVO news=new
21、 NewVO();news.setOneNew(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5);list.add(news);con.close(); catch (SQLException e) e.printStackTrace();return list;public static int rowTotal()Connection con=DbConnection.getConnection();String sql=select count(*) from news ord
22、er by id desc;ResultSet rs=null;try Statement st=con.createStatement();rs=st.executeQuery(sql);rs.next();int count=rs.getInt(1);con.close();return count; catch (SQLException e) e.printStackTrace();return 0;public static NewVO getOneNews(long l)Connection con=DbConnection.getConnection();PreparedStat
23、ement ps=null;ResultSet rs=null;NewVO vo=new NewVO();String sql=select * from news where id=?;try ps=con.prepareStatement(sql);ps.setLong(1, l);rs=ps.executeQuery();if(rs.next()vo.setOneNew(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5);con.close();return vo; catch
24、(SQLException e) e.printStackTrace();return null;會員注冊的代碼如下:function fun(form)if(form.username.value.length=0)alert(用戶名不能為空);form.username.focus();return false;else if(form.pass.value.length=0)alert(密碼不能為空);form.pass.focus();return false;else if(form.passa.value.length=0)alert(確認密碼不能為空);form.passa.fo
25、cus();return false;else if(form.pass.value!=form.passa.value)alert(兩次密碼不一致);form.passa.focus();return false;body background=img src= width=100%用戶名:密碼:確定密碼:上傳頭像:用戶登錄$error其中用來對提交的表單進行處理的servlet-Reg.java核心代碼如下protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletExceptio
26、n, IOException HttpSession session=req.getSession();boolean isLogin=true;GetParam gp=new GetParam();gp.getParam(req);Part part=req.getPart(pic);gp.addKV(pic, FileSave.getPath(part, req);/添加用戶if(DbTool.add(gp, false)session.setAttribute(user,isLogin);session.setAttribute(name, gp.getParamValue(userna
27、me);session.setAttribute(pic,gp.getParamValue(pic);resp.sendRedirect(index.jsp);elsereq.setAttribute(error, 用戶已存在,請更換別的用戶名);RequestDispatcher rd=req.getRequestDispatcher(reg.jsp);rd.forward(req, resp);添加新聞addnews.jsp中套用了ckeditor對textarea進行修飾,核心代碼如下:function judge(form)if(form.title.value.length=0)al
28、ert(標題不能為空);form.title.focus();return false;標題:內(nèi)容:CKEDITOR.replace( cont );用來接收form表單的servlet-AddNews.java核心代碼如下:protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException HttpSession session=req.getSession();GetParam gp=new GetParam();gp.getParam(req
29、);String id = req.getParameter(id);gp.setValue(id, id);String content=req.getParameter(content);/gp.setValue(content, FiltHtml.filt(content);gp.setValue(content, content);Date t=new Date();SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd);String time=sdf.format(t);gp.addKV(time, time);String aut
30、hor=(String)req.getSession().getAttribute(name);gp.addKV(author, author);String tmp = req.getParameter(isAdd);int isAdd = Integer.parseInt(tmp);if(isAdd = 1)/添加新聞DbTool.add(gp, true); else/修改新聞DbTool.update(gp, id);/session.setAttribute(vo, DbTool.getOneNews(Long.parseLong(id);session.setAttribute(i
31、sFirst, true);resp.sendRedirect(index.jsp);對于顯示頁面,多采用EL表達式和JSTL表達式來實現(xiàn),簡化了用程序片來實現(xiàn)的復(fù)雜性,同時,為了解決中文亂碼問題,還增加了FilterEncoding過濾器,其核心代碼如下:public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException HttpServletRequest req=(HttpServletRequest )request;HttpSe
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高職現(xiàn)代學(xué)徒制協(xié)議書(2篇)
- 葡萄酒灌裝車間工藝流程培訓(xùn)
- 創(chuàng)業(yè)風(fēng)險與對策
- 初中歷史知識競賽題庫
- 電氣安全操作知識
- 2025年小學(xué)教師資格《綜合素質(zhì)》熱點問題分析題含答案及解析
- 2025年會計職稱考試《初級會計實務(wù)》財務(wù)管理基礎(chǔ)習(xí)題集及答案解析試卷
- 2025年消防執(zhí)業(yè)資格考試題庫:消防救援隊伍管理法規(guī)實戰(zhàn)演練試題
- 2025年美術(shù)教師編制考試模擬試卷:美術(shù)教學(xué)理論基礎(chǔ)知識試題
- 小學(xué)感恩教育主題班會
- 2025年宜賓興文縣招考聘用社區(qū)專職工作者7人高頻重點提升(共500題)附帶答案詳解
- 二 20以內(nèi)的退位減法 第1課時 十幾減9課件2024-2025人教版一年級數(shù)學(xué)下冊
- 減資協(xié)議書(2篇)
- 2025年山東能源集團權(quán)屬企業(yè)內(nèi)蒙古榮信化工限公司社會招聘高頻重點提升(共500題)附帶答案詳解
- 口腔科急救培訓(xùn)
- 退役軍人創(chuàng)業(yè)扶持協(xié)議
- 2025年中儲糧集團公司招聘筆試參考題庫含答案解析
- 保護母親河日關(guān)愛河湖保護母親河保衛(wèi)黃河課件
- 物業(yè)高壓配電室培訓(xùn)
- 安全生產(chǎn)管理制度-普貨運輸
- DB41T 1508-2017 化妝刷標準規(guī)范
評論
0/150
提交評論