1、JSP软件实验实验报告 ——简易网站新闻管理系统 实验名称:简易网站新闻管理系统 班 级:计科0702班 完毕人:何传喜(1508)幺轶群(1535) 鲍张鹏(1501)张立明(1538) 完毕时间:-11-16 简易网站新闻管理系统 一、 系统总体设计 构建一种简易新闻管理系统,顾客可以通过浏览器访问系统、查看新闻。对于新闻管理也是通过浏览器完毕。这个系统具备操作以便、快捷长处。 1.1系统功能及模块 新闻管理系统应当具备如下功能: (1) 浏览新闻 顾客可以通过浏
2、览器查看新闻,如果有多条新闻,规定可以分页显示。 (2) 新闻发布 规定是通过浏览器来完毕,并且可以编辑新闻格式。 (3) 新闻修改 规定通过浏览器完毕。 (4) 删除新闻 依照需要,可以删除新闻。 (5) 系统验证 对系统进行管理前,必要通过登录系统验证。顾客不必登录就可以随便查看新闻,系统管理员必要要通过身份验证才干管理系统。 依照上述功能需求,系统涉及如下模块: (1) 新闻浏览主页面 (2) 新闻浏览最后页面 (3) 系统管理主页面 (4) 发布新闻模块 (5) 修改新闻模块 (6) 删除新闻模块 1.2系统实现方案 本系统是通过网页浏览器进行访问,因
3、此本系统采用B/S构造。B/S构造式一种以Web技术为基本数据库体系构造,它把老式C/S构造中服务器某些分解为一种数据服务器和与一种或各种应用服务器,从而构成一种三层构造客户服务器体系构造。本系统采用JSP技术,JSP容器采用Tomcat6.0,后台数据库管理系统采用MySqL。 二、 系统数据库设计 2.1数据库需求分析 依照本系统功能需求,新闻管理系统需要如下数据项。 (1) 新闻资料 新闻标题、新闻内容、发布日期、发布人。 (2) 顾客密码资料 顾客名、密码、与否为管理员、姓名。 2.2数据表设计 依照上面需求分析,共设计两个表,分别为新闻文章表和顾客表。 表2-1新
4、闻文章表(article) 列名 数据类型 与否可空 备注 ID Int N TITLE Varchar(100) N 文章标题 BODY Varchar(8000) N 文章内容 ADDDATE Varhar(30) N 发布日期 ADDUSER Varchat(10) Y 发布人 表2-2顾客表(userpassword) 列名 数据类型 与否可空 备注 ID Int N USER_ID Varchat(15) N 顾客名 USER_PASSWORD Varchar(15) N 顾客密码 ISMASTE
5、R Char(1) N 与否为管理员 USER_NAME Varchar(10) Y 是 2.3数据库初始化 数据表和数据表建立后,就要初始化数据库。由于在使用新闻管理系统时,需要登录到管理页面,进行发布新闻等管理操作,这就需要一种管理员顾客,因此要在顾客表userpassword中添加一条记录。 图1.向数据库表userpassword中添加记录 三、 系统基本框架 新闻管理系统功能是顾客可以通过浏览器查看新闻,管理员也是通过浏览器发布和管理新闻。新闻管理系统基本构造图如图2所示。 图2 系统基本架构 为了重复使用代码,可以将许多页面都是用公共代码放在一种
6、JSP文献夹中,当其她文献需要调用这些代码时,是用
7、开新闻浏览最后界面“article.jsp”查看新闻。由于新闻标题和内容都存在数据库中,因此最后新闻页面时依照数据库中记录动态生成。 只有管理员才干输入对的顾客名和密码,通过登录系统:“login.jsp”和“chklogin.jsp”,才干登录到系统管理主页面“main.jsp”。在这个主页面中,管理员可以发布新闻、修改新闻和删除新闻。 在Tomcat服务器安装目录下webapps子目录下,创立系统应用目录news。在news目录下除了WEB-INF目录外,还应创立目录incoming、admin和images。其中,incoming下存储公共模块jsp文献。admin目录下存储与系统管
8、理员管理操作有关jsp文献。images目录下存储本系统用到图片及图像资源。 四、 各功能模块设计和实现 4.1公共模块设计 公共模块是将系统其她页面中重复使用代码集合起来,成为一种或者各种文献,这样,要使用重复代码时,只需要将公共模块包括进来就行了。 公共模块一共有4个jsp文献和一种css文献:“common.jsp”、“connectdb.jsp”、“check.jsp”、“coderfiter.jsp”和“style.css”。前4个文献时纯粹嵌入式Java代码,没有HTML脚本,CSS文献用来定义样式表。 4.1.1“common.jsp”文献 “common.
9、jsp”文献包括其她jsp文献中需要导入Java类和包。程序清单如下: <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> 4.1.2“connectdb.jsp”文献 “connectdb.jsp”文献重要用来连接数据库以及声明有关变量。程序清单如下: <% Class.forName("org.gjt.mm.my
10、sql.Driver").newInstance(); String url="jdbc:mysql://localhost:3306/newsmanage"; Connection con= DriverManager.getConnection(url,"root","sa"); Statement smt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs; String sql; String title = "网站新闻管理系统"; %>
11、 4.1.3“check.jsp”文献 “check.jsp”文献用来判断与否以系统管理员身份登录系统,防止非法顾客登录到系统管理后台对系统进行破坏,程序清单如下: <% if((String)session.getValue("Enter")!="true") { String errmsg="error2"; response.sendRedirect("login.jsp?errmsg="+errmsg); } %> 4.1.4“coderfiter.jsp”文献 “coderfiter.jsp”文献用于对新闻文章内容进行格式转
12、换,即在普通格式与HTML格式之间转换。程序清单如下: <%! String Replace(String str_source,String str_original,String str_new) { if(str_source == null) return null; StringBuffer output = new StringBuffer(); int lengOfsource = str_source.length(); int lengOfold = str_original.length(); int posStart
13、 0; int pos; 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(posS
14、tart));
}
return output.toString();
}
String toHtml(String s)
{
s = Replace(s,"<","<");
s = Replace(s,">",">");
s = Replace(s,"&","&");
s = Replace(s,"\t"," ");
s = Replace(s,"\r\n","\n");
s = Replace(s,"\n","
");
s = Replace(s,"
15、"," ");
s = Replace(s,"'","'");
s = Replace(s,"\\","\");
return s;
}
String unHtml(String s)
{
s = Replace(s," "," ");
s = Replace(s,"
","\n");
return s;
}
%>
4.1.5“style.css”文献
“style.css”文献中,可以定义本web应用程序用到所有样式表,其脚本如下:
A:link {
FONT-SIZE:9pt;
16、 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;
17、COLOR:#000000; TEXT-DECORATION:none } .body { FONT-SIZE:12pt; COLOR:#000000; TEXT-DECORATION:none } body { background-image:url(../images/bg.jpg); } 4.2新闻浏览主页面 新闻浏览主页面“index.jsp”是顾客浏览新闻主页面,该页面作用是将所有新闻标题以列表形式显示出来,代码如下: <%@page contentType="text/html;charset=gb2312"%> <%@ include fi
18、le="incoming/common.jsp"%> <%@ include file="incoming/connectdb.jsp"%>
| 网站新闻管理系统 | ||
20、>
|
22、果 4.3新闻浏览最后页面 读者在新闻浏览主页面“index.jsp”中单击感兴趣新闻标题时,就会打开新闻浏览最后页面“article.jsp”,查看新闻内容; “article.jsp”文献任务就是接受主页面传入新闻ID,然后以此ID在数据库新闻文章表article中查找符合条件记录,然后取出新闻标题、新闻内容等信息,并显示在“article.jsp”页面上。程序清单如下: <%@ page contentType="text/html;charset=gb2312" %> <%@ include file="incoming/common.jsp"%> <%@ include
23、file="incoming/connectdb.jsp"%>
|
||||||||||||
32、理系统后台管理用来发布、修改、删除新闻。拥有相应权限管理员才干管理系统,因此新闻管理系统需要管理员登录系统。登录系统重要涉及两个JSP文献:“login.jsp”和“chklogin.jsp”。 4.4.1“login.jsp”文献 “login.jsp”文献重要用来让管理员输入顾客名和密码,其代码如下: <%@page contentType="text/html;charset=gb2312"%> <%@ include file="../incoming/common.jsp"%> <%@ include file="../incoming/connectdb.jsp"%>
33、<% String errmsg = request.getParameter("errmsg"); request.getSession(true); String chk = "false"; session.putValue("Enter",chk); %>
39、sp”文献 在图5所示页面中,管理员输入顾客名和密码后,单击“登录”按钮,提交表单,就会打开“chklogin.jsp“页面。检查输入顾客名和密码与否对的。代码如下: <%@page contentType="text/html;charset=gb2312"%> <%@ include file="../incoming/common.jsp"%> <%@ include file="../incoming/connectdb.jsp"%> <% String userid = request.getParameter("userid"); String passwor
40、d = request.getParameter("password"); sql = "SELECT * FROM userpassword WHERE USER_ID='"+userid+"' AND USER_PASSWORD='"+password+"'"; rs = smt.executeQuery(sql); if (!rs.next()) { String errmsg="error1"; response.sendRedirect("login.jsp?errmsg="+errmsg); return; }
41、 request.getSession(true); String chk="true"; session.putValue("Enter",chk); session.putValue("username",rs.getString("USER_NAME")); response.sendRedirect("main.jsp"); %> 图6 顾客名和密码输入错误 4.5系统管理主页面 当管理员输入对的顾客名和密码后,就进入了系统管理主页面“main.jsp“。系统管理主页面”main.jsp“是系统后台管理中心,通过该页面就可以发布、
42、修改、删除新闻。 “main.jsp”代码如下: <%@page contentType="text/html;charset=gb2312"%> <%@ include file="../incoming/common.jsp"%> <%@ include file="../incoming/connectdb.jsp"%> <%@ include file="../incoming/check.jsp"%>
| 系统管理后台 44、 |
|
| 发布新闻
刷新 主页
<%
Statement _smt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UP 45、DATABLE); ResultSet _rs; String _sql; _sql="SELECT * FROM article"; _rs = _smt.executeQuery(_sql); while(_rs.next()) { %> |
|
| ">编辑新闻 )">删除新闻 | |
48、sp”页面将添加新闻保存到数据库news中数据表artice中。 4.6.1“addarticel.jsp”文献 程序代码如下: <%@page contentType="text/html;charset=gb2312"%> <%@ include file="../incoming/common.jsp"%> <%@ include file="../incoming/connectdb.jsp"%> <%@ include file="../incoming/check.jsp"%>
49、ink href="../incoming/style.css" rel="stylesheet" type="text/css">