JSP实现网站新闻管理系统_第1页
JSP实现网站新闻管理系统_第2页
JSP实现网站新闻管理系统_第3页
JSP实现网站新闻管理系统_第4页
JSP实现网站新闻管理系统_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP实现网站新闻管理系统本章主要内容新闻管理系统总体设计新闻管理系统数据库设计新闻管理系统的基本框架新闻系统各功能模块的设计与实现新闻系统的部署和发布13.1系统总体设计系统功能及模块(1)浏览新闻用户能够通过浏览器查看新闻,如果有多条新闻,要求可以分页显示(2)新闻的录入(发布)要求是通过浏览器来完成,并且可以编辑新闻的格式(3)新闻的修改要求通过浏览器来完成(4)删除新闻根据需要,可以删除新闻(5)系统验证对系统进行管理前,必须经过登陆系统验证。用户不必登陆即可随便查看新闻,系统管理员必须要经过身份验证才能管理系统根据功能需求,系统包括如下模块:(1)新闻浏览主页面(2)新闻浏览最终页面(3)系统管理主页面(4)发布新闻模块(5)修改新闻模块(6)删除新闻模块新闻管理系统新闻浏览主页面新闻浏览最终页面系统管理主页面发布新闻模块修改新闻模块删除新闻模块系统实现方案

开发数据库应用系统一般来说有两种数据库体系结构:C/S(Client/Server,客户机/服务器)结构和B/S结构(Browser/Server,浏览器/服务器)结构。C/S是Client/Server的缩写,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。客户端需要安装专用的客户端软件B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。用户界面完全通过WWW浏览器实现,主要事务逻辑在服务器端实现。浏览器通过WebServer同数据库进行数据交互。

13.2系统数据库设计数据库需求分析根据本系统功能要求,新闻管理系统需要以下数据项(1)新闻资料新闻标题、新闻内容、发布日期、发布人(2)用户密码资料用户名、密码、是否为管理员、姓名数据表设计设计两个表,分别为新闻文章表和用户表,这两个表的结构如下所示:列名数据类型是否为空说明IDInt否记录编号,标识属性TITLEVarchar(100)否文章标题BODYVarchar(8000)否文章内容ADDDATEVarchar(30)否发布日期ADDUSERVarchar(10)是发布人新闻文章表(article)列名数据类型是否为空说明IDInt否记录编号,标识属性USER_IDVarchar(15)否用户名USER_PASSWORDVarchar(15)否用户密码ISMASTERchar(1)否是否为管理员USER_NAMEVarchar(10)是用户姓名用户表(password)以上两个数据表,我们将其放在数据库newmanage中。13.3系统基本框架新闻管理系统的功能是用户可以通过浏览器查看新闻,管理员也可以通过浏览器发布和管理新闻。新闻管理系统的基本结构图如下所示:管理员登陆系统login.jsp,chklogin.jsp公共模块common.jspconnectdb.jsp系统管理主页面Main.jsp删除新闻模块delarticle.jsp发布新闻模块Addarticle.jspSaveartile.jsp修改新闻模块editarticle.jspeditartileover.jsp新闻浏览最终页面article.jsp新闻浏览主页面index.jsp本系统的程序目录结构如下所示:目录newsystem目录WEB_INF目录incomingIndex.jsparticle.jsplogin.jsp,chklogin.jspmain.jsp,addarticle.jspsavearticle.jspeditarticle.jspeditarticleover.jspdelarticle.jsp目录adminCommon.jspConnectdb.jspcheck.jspcodefilter.jsp目录libmsbase.jarMsutil.jarmssqlserver.jar13.4公共模块设计公共模块一共包含4个JSP文件和一个CSS文件:”common.jsp”、“connectdb.jsp”、“check.jsp”、“codefilter.jsp”、style.csscommon.jsp:包含其他JSP文件中需要导入的JAVA类和包,这样其他的JSP文件就可以只需要将”common.jsp”文件包含进来即可,而不必逐一包含Java类和包。connectdb.jsp:用来连接数据库check.jsp:用来判断是否是以系统管理员的身份登陆系统,防止非法用户直接进入系统管理后台对系统进行破坏codefilter.jsp:用于对新闻文章的内容进行转换,将一般格式与HTML格式之间的转换,如一般格式的回车换行,在HTML中就是一个<br>标记等。13.4.1“common.jsp”文件内容如下:<%@pageimport="java.io.*"%><%@pageimport="java.util.*"%><%@pageimport="java.sql.*"%><%@pageimport="java.util.*"%><%@pageimport="java.text.*"%>其他JSP文件只需要加载这个文件即可。13.4.1“connectdb.jsp”文件<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://localhost:1433;databaseName=newsmanage";Connectioncon=DriverManager.getConnection(url,"sa","lily");Statementsmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs;Stringsql;Stringtitle="网站新闻管理系统";%>变量title是一个全局变量,将在包含“connectdb.jsp”的JSP文件中使用。“check.jsp”文件程序代码如下:<%if((String)session.getValue("Enter")!="true"){Stringerrmsg="error2";response.sendRedirect("login.jsp?errmsg="+errmsg);}%>“codefilter.jsp”文件源代码如下所示:<%!StringReplace(Stringstr_source,Stringstr_original,Stringstr_new){if(str_source==null)returnnull;StringBufferoutput=newStringBuffer();intlengOfsource=str_source.length();intlengOfold=str_original.length();intposStart=0;intpos;while((pos=str_source.indexOf(str_original,posStart))>=0){output.append(str_source.substring(posStart,pos));output.append(str_new);posStart=pos+lengOfold;}if(posStart<lengOfsource){output.append(str_source.substring(posStart));}returnoutput.toString();}StringtoHtml(Strings){s=Replace(s,"<","<");s=Replace(s,">",">");s=Replace(s,"&","&");s=Replace(s,"\t","");s=Replace(s,"\r\n","\n");s=Replace(s,"\n","<br>");s=Replace(s,""," ");s=Replace(s,"'","'");s=Replace(s,"\\","\");returns;}StringunHtml(Strings){ s=Replace(s," ",""); s=Replace(s,"<br>","\n"); returns;}%>定义了3个方法:Replace()方法是内部方法,供其他两个方法调用的,其他程序只调用toHtml()和unHtml()方法。Replace()方法功能是:将某个字符串中的特殊子串替换为其他的字符子串,它共有3个参数,str_source表示蒸个字符串,str_original表示要替换的原来的子串,str_new表示要替换的新子串。方法返回的是替换后的整个字符串toHtml():将一般格式的字符串转换为html格式的字符串,unHtml()方法则相反。“Style.css”文件A:link{ FONT-SIZE:9pt; COLOR:#000000; TEXT-DECORATION:underline}A:hover{ FONT-SIZE:9pt; COLOR:#ff0000; TEXT-DECORATION:underline}A:visited{ FONT-SIZE:9pt; COLOR:#0000ff; TEXT-DECORATION:underline}.text{ FONT-SIZE:9pt; COLOR:#000000; TEXT-DECORATION:none}.title{ FONT-SIZE:16px; COLOR:#000000; TEXT-DECORATION:none}.body{ FONT-SIZE:12pt; COLOR:#000000; TEXT-DECORATION:none}【新闻浏览】主界面index.jsp主界面<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="incoming/common.jsp"%><%@includefile="incoming/connectdb.jsp"%><html><head><title><%=title%></title><linkhref="incoming/style.css"rel="stylesheet"type="text/css"></head><bodybgcolor="#FFFFFF"><tablewidth=438border=1align=centercellPadding=0cellSpacing=0bordercolor="#999999"><tbody><trbgcolor="#CCCCCC"><tdheight="38"align=centerbgcolor="#CCCCCC"><fontsize="+6"face=""color="#990000"><%=title%></font><fontSIZE="3"COLOR="#ffffff"><B></B></FONT></TD></tr>

<tralign="center"></tr><tr><tdheight="28"><tablewidth="100%"height="100%"border="0"cellpadding="0"cellspacing="0"><tr><%smt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);sql="SELECT*FROMarticle";rs=smt.executeQuery(sql);while(rs.next()){%><tdwidth="11%"height="20"align="center"><divalign="center"><SPANclass="text"></SPAN></div></td><tdwidth="86%"><ahref="article.jsp?id=<%=rs.getInt("ID")%>"target="_blank"><%=rs.getString("TITLE")%></a></td></tr><%}%></table></td></tr></tbody></table></body></html>【新闻浏览最终页面】主界面Article.jsp页面:<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="incoming/common.jsp"%><%@includefile="incoming/connectdb.jsp"%><html><head><title><%=title%></title><linkhref="incoming/style.css"rel="stylesheet"type="text/css"><bodybgcolor="#CCCCCC"text=#000000leftMargin=0topMargin=0marginwidth="0"marginheight="0"><tableheight="710"cellSpacing=0cellPadding=0width=700align=centerborder=0><tbody><tr><tdheight="710"vAlign=top><tableheight=66cellSpacing=0cellPadding=0width=775border=0><tbody><tr>

<tdcolSpan=4height=66><divalign=right><tablewidth=774height="60"border=0align=centercellpadding=0cellspacing=0><tbody><tr><thheight="60"bgcolor="#FFFFFF"><fontsize="+6"face=""color="#000000"><%=title%></font></th></tr></tbody></table><tablecellSpacing=0cellPadding=0width=774align=centerborder=0><tbody><tr><tdbgColor=#990033height=5></td></tr></tbody></TABLE></div></td></tr></tbody></table>

<tableheight=600cellSpacing=0cellPadding=0width=774align=centerbgColor=#FFFFFFborder=0><tbody><tralign="center"><% intid=(null==request.getParameter("id")?1:(Integer.parseInt(request.getParameter("id")))); sql="SELECT*FROMarticleWHEREID="+id+""; rs=smt.executeQuery(sql); rs.next();%><tdvAlign=bottomwidth=13height=600> </td><tdvAlign=topwidth=749height=600><tablewidth=749height="654"border=0cellpadding=0cellspacing=0><tbody><tr><tdwidth=749height="76"align="center"class="title"><b><b><%=rs.getString("TITLE")%><hralign="center"width="50%"noshade></td></tr>

<tr><tdheight="506"valign="top"class="body"><%=rs.getString("BODY")%></td></tr><tr><tdheight="72"valign="top"> </td></tr></tbody></table></TD><tdvAlign=topwidth=12> </td></tr></tbody></table></td></tr></tbody></table></body></html>后台管理系统新闻管理系统的后台管理用来发布、修改、删除新闻。只有拥有相应权限的管理员才能管理系统管理员登陆系统login.jsp,chklogin.jsp公共模块common.jspconnectdb.jsp系统管理主页面Main.jsp删除新闻模块delarticle.jsp发布新闻模块Addarticle.jspSaveartile.jsp修改新闻模块editarticle.jspeditartileover.jsp新闻浏览最终页面article.jsp新闻浏览主页面index.jsp<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"%><%Stringerrmsg=request.getParameter("errmsg");request.getSession(true);Stringchk="false";session.putValue("Enter",chk);%><html><head><title><%=title%>管理员登录</title><bodybgcolor="#FFFFFF"><scriptlanguage="JavaScript">管理员登陆登陆系统login.jsp作用:用来让管理员输入用户名和密码<!--functioncheckdata(){ if(form.userid.value.length<1||form.userid.value.length>15){ alert("\请输入正确的用户名!") returnfalse; } if(form.password.value.length<1||form.password.value.length>15){ alert("\请输入正确的登录密码!") returnfalse; } }--></script><formaction=chklogin.jspname="form"method="post"onSubmit="returncheckdata()"><tablewidth="350"height="151"border="0"align="center"cellpadding="0"cellspacing="0"><trbgcolor="#6699CC"><tdwidth="20%"height="28"> </td><tdwidth="49%"align="center"><fontsize="2">管理员登录</font></td><tdwidth="31%"> </td></tr>

<trbgcolor="#6699CC"><tdheight="26"align="right"><fontsize="2"class="depfont">用户名:

</font></td><td><inputname="userid"type="text"id="userid"></td><tdrowspan="2"><inputtype="submit"name="Submit"value="登录"></td></tr><trbgcolor="#6699CC"><tdheight="26"align="right"><fontsize="2">密

码:</font></td><td><inputname="password"type="password"id="password"></td></tr><trbgcolor="#6699CC"class="depfont"><tdheight="31"colspan="3"align="center"><fontsize="2"color="#CC3333"><%if(errmsg!=null&&errmsg.equals("error1"))out.print("您输入用户名或者密码不正确!请重新输入!");elseif(errmsg!=null&&errmsg.equals("error2"))out.print("请先登陆!");%></font></td></tr></table></form></body></html>login.jsp页面运行结果:Checklogin.jsp文件

作用:与数据库连接验证此用户是否是管理员。<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"<%Stringuserid=request.getParameter("userid");Stringpassword=request.getParameter("password");

sql="SELECT*FROMuserpasswordWHEREUSER_ID='"+userid+"'ANDUSER_PASSWORD='"+password+"'";rs=smt.executeQuery(sql);if(!rs.next()){ Stringerrmsg="error1"; response.sendRedirect("login.jsp?errmsg="+errmsg); return;}request.getSession(true);Stringchk="true";session.putValue("Enter",chk);session.putValue("username",rs.getString("USER_NAME"));response.sendRedirect("main.jsp");%>当管理员输入正确的用户名和密码后,就进入了系统管理主页面”main.jsp”。系统管理主页面”main.jsp”是系统后台管理的中心,通过该页面可以发布、修改、删除新闻。<%@pagecontentType="text/html;charset=utf-8"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"%><%@includefile="../incoming/check.jsp"%><html><head><title><%=title%>管理</title><linkhref="../incoming/style.css"rel="stylesheet"type="text/css"></head><bodybgcolor="#FFFFFF"><tablewidth=500border=1align=centercellPadding=0cellSpacing=0bordercolor="#999999"><tbody><trbgcolor="#CCCCCC">

main.jsp代码<tdcolspan=2align=center><FONTSIZE="3"COLOR="#ffffff"><B><fontcolor="#000000">系统管理后台</font></B></FONT></TD></tr><tralign="center"><tdcolspan="2"><ahref="addarticle.jsp">发布新闻</a><ahref="javascript:this.location.reload()">刷新</a> <ahref="../index.jsp">主页</a><% Statement_smt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet_rs; String_sql; _sql="SELECT*FROMarticle"; _rs=_smt.executeQuery(_sql); while(_rs.next()) { %><divalign="right"></div></td></tr><tr><tdheight="20"><divalign="left"><SPANclass="text"></SPAN><ahref="editarticle.jsp?id=<%=_rs.getInt("ID")%>"><%=_rs.getString("TITLE")%></a></div></td>

<tdalign=centerwidth=29%><ahref=“editarticle.jsp?id=<%=_rs.getInt(”ID“)%>”>编辑新闻</a> <ahref="javascript:del(<%=_rs.getInt("ID")%>)">删除新闻</a></td></tr><%}%></tbody></table><scriptlanguage="JavaScript"><!--functiondel(id){if(confirm("你确信要删除吗?"))top.location="delarticle.jsp?id="+id}</script></body></html>【发布新闻】模块由两个文件组成:”addarticle.jsp”和”savearticle.jsp”用户在”addarticle.jsp”页面中添加新闻,然后提交表单,通过“savearticle.jsp”页面将添加的新闻保存到数据库newmanage的数据表article中。<%@pagecontentType="text/html;charset=utf-8"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"%><%@includefile="../incoming/check.jsp"%><html><head><title><%=title%>管理</title><linkhref="../incoming/style.css"rel="stylesheet"type="text/css"></head><scriptLanguage="JavaScript">functioncheck_input(theForm){if(theForm.newstitle.value==""){alert("请输入新闻标题");theForm.newstitle.focus();return(false);}

if(theForm.newsbody.value==""){alert("请输入新闻的内容");theForm.newsbody.focus();return(false);}if(theForm.newstitle.value.length>100){alert("新闻的标题长度应小于50个字.");theForm.newstitle.focus();return(false);}}</script><body><tableborder="1"width=750align=centercellpadding=0cellspacing=0><formmethod="POST"action="savearticle.jsp"onsubmit="returncheck_input(this)"><tralign="center"bgcolor="#CCCCCC"height=25><tdheight="42"colspan=2><FONTCOLOR="#ffffff"><FONTSIZE="5"COLOR="#ffcc00"><B><fontcolor="#000000">发布新闻</font></B></FONT><fontcolor="#000000"class="text"><B>

**为必填项目</B></font></FONT></TD></tr>

<tr><tdwidth="30%"align="center"class="text"><B>新闻标题</B></td><tdwidth="70%"class="text"><inputname=newstitleTYPE="text"id="newstitle"size=70maxlength=255>

**不得超过50个汉字

</TD></tr><tr><tdheight="407"align="center"> <B>内容</B><BR><br><liclass="text">请在此填写新闻的内容<BR></td><td><textareaname="newsbody"cols="95%"rows="30"wrap="VIRTUAL"class="smallarea"id="newsbody"title="请在此填写新闻的内容"></textarea>**</td></tr><tr><tdheight="80"colspan=2align=center><FONTcolor=#000000><inputname=Submittype=submitvalue="发布">

<inputname=Submit2type=resetvalue="清除

"></font></td></tr></form></TABLE></body></html>addarticle.jsp运行结果:<%@pagecontentType="text/html;charset=utf-8"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"%><%@includefile="../incoming/codefilter.jsp"%><%@includefile="../incoming/check.jsp"%><html><head><metaHTTP-EQUIV=REFRESHCONTENT='4;URL=main.jsp'><title><%=title%>管理</title><linkhref="../incoming/style.css"rel="stylesheet"type="text/css"></head><body><%try{Stringnewstitle=newString(request.getParameter("newstitle").getBytes("ISO8859_1"),"utf-8");Stringnewsbody=newString(request.getParameter("newsbody").getBytes("ISO8859_1"),"utf-8");java.util.Datecur_time=newjava.util.Date();SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");StringdateString=formatter.format(cur_time);Stringadduser=(String)session.getValue("username");sql="INSERTINTOarticle(TITLE,BODY,ADDDATE,ADDUSER)values(?,?,?,?)";

savearticle.jsp:将添加的新闻保存到数据库PreparedStatementprepstmt=null; prepstmt=con.prepareStatement(sql); prepstmt.setString(1,newstitle); prepstmt.setString(2,(toHtml(newsbody))); prepstmt.setString(3,dateString); prepstmt.setString(4,adduser); prepstmt.executeUpdate();}catch(Exceptione){ out.println("错误信息:"+e.getMessage());}%><tablewidth=381border="1"align=centercellpadding=0cellspacing=0bordercolor="#CCCCCC"><trheight=25><tdwidth="391"align=centerbgcolor="#999999"><fontcolor=red><B>新闻发布成功</B></font></td></tr> <trclass="text"><tdalign=center><BR>

本页面将在<b><spanid=last>3</span><ahref=javascript:countDown></a></b>秒钟后自动返回管理页面,您可以选择以下操作:<BR><BR><ahref="../index.jsp">返回新闻首页</a><br><ahref='addarticle.jsp'>继续发布新闻</a></TD></tr></table><script> function countDown(secs){last.innerText=secs;if(--secs>0)setTimeout("countDown("+secs+")",1000);}countDown(3);</script></body></html>savearticle.jsp运行结果【编辑新闻】模块由两个文件组成:”editarticle.jsp”和”editarticleover.jsp””editarticle.jsp”页面将待修改的新闻和内容显示出来,供管理员修改。“editarticleover.jsp”页面用于将修改后的新闻保存到数据库newmanage的数据表article中下面是editarticle.jsp源代码:<%@pagecontentType="text/html;charset=utf-8"%><%@includefile="../incoming/common.jsp"%><%@includefile="../incoming/connectdb.jsp"%><%@includefile="../incoming/codefilter.jsp"%><%@includefile="../incoming/check.jsp"%><html><head><title><%=title%>管理</title><linkhref="../incoming/style.css"rel="stylesheet"type="text/css"></head><scriptLanguage="JavaScript">functioncheck_input(theForm){if(theForm.newstitle.value==""){alert("请输入新闻标题.");theForm.newstitle.focus();return(false);}if(theForm.newsbody.value==""){alert("请输入新闻的内容.");theForm.newsbody.focus();return(false);}if(theForm.newstitle.value.length>100){alert("新闻标题长度应小于50个字.");theForm.newstitle.focus();return(false);}}</script><body><%intid=(null==request.getParameter("id")?1:(Integer.parseInt(request.getParameter("id"))));sql="SELECT*FROMarticleWHEREID="+id+"";rs=smt.executeQuery(sql);while(rs.next()){%><tableborder="1"width=784align=centercellpadding=0cellspacing=0><formmethod="POST"action="editarticleover.jsp?id=<%=id%>"onsubmit="returncheck_input(this)"><tralign="center"bgcolor="#CCCCCC"height=25><tdheight="42"colspan=2><FONTCOLOR="#ffffff"><FONTSIZE="5"COLOR="#ffcc00"><B><fontcolor="#000000">޸修改新闻</font></B></FONT><fontcolor="#000000"class="text"><B>

**为必填项目</B></font></FONT></TD></tr><tr><tdwidth="30%"align="center"class="text"><B>新闻标题</B></td><tdwidth="70%"class="text"><inputname=newstitleTYPE="text"id="newstitle"size=70maxlength=255value=<%=rs.getString("TITLE")%>>

**不得超过50个汉字

</TD></tr>

<tr><tdheight="407"align="center"> <B>内容</B><BR><br><liclass="text">请在此处填写新闻的内容<BR></td><td><textareaname="newsbody"cols="100"rows="30"wrap="VIRTUAL"class="smallarea"id="newsbody"title="请在此处填写新闻的内容"><%=unHtml(rs.getString("BODY"))%></textarea>**</td></tr><%}%><tr><tdheight="80"colspan=2align=center><FONTcolor=#000000><inputname=Submittype=submitvalue="修改">

<inputname=Submit2type=resetvalue="清除

"></font></t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论