资源描述
课 程 设 计
课程名称
WEB技术
题 目
新闻管理网站
系 部
专 业
班 级
学 号
学生姓名
任课老师
年
12
月
18
日
摘要
大数据时代,能否正确快速掌握更多信息是事半功倍关键。网络普及给大家值天下事提供了特殊便利渠道。
本新闻管理系统重视和新闻浏览者互操作性和对新闻信息资源管理操作性,采取JSP+MySQL数据库架构实现。
新闻系统分为两大模块,分别是用户管理模块和管理员管理模块。用户管理是友好操作界面,供用户浏览、查询使用。包含:浏览新闻、查询新闻、评论新闻等功效;管理员模块是提供给管理员,其中包含:删除新闻、编辑新闻管理、添加新闻管理等。使管理员从繁琐手工操作中解脱出来,并提升了办公效率。
目录
第一章 需求分析 1
1.1 JSP介绍 1
1.2 功效需求 1
1.3 开发及运行环境 1
1.3.1 硬件平台 1
1.3.2 软件要求 1
第二章 新闻公布网站 3
2.1网站结构设计 3
2.2目标设计 3
2.3系统功效分析和设计 4
第三章 数据库结构设计 5
3.1 数据库需求分析 5
3.2数据库逻辑设计 5
3.2.1用户注册信息表user_reg 5
3.2.2新闻列表news 5
3.2.3评论信息表leaveword 6
第四章 一般用户模块 7
4.1 注册index.jsp 8
4.2 注册不成功regsubmit.jsp 9
4.3 注册成功regok.jsp 10
4.4 登录logland.jsp 11
4.5 checkuser.jsp 13
4.6 登录成功succ.jsp 13
4.7 用户界面userMain.jsp 14
4.8 评论leaveword.jsp 16
4.9 登录失败fail.jsp 18
4.10 注销logout.jsp 19
第五章 新闻管理模块 20
5.1登录adminlogin.jsp 21
5.2审核adminpass.jsp 22
5.3管理manegerMain.jsp 23
5.4添加新闻add.jsp 24
5.5 padd 27
5.6删除delete.jsp 28
5.7编辑edit.jsp 29
5.2 update.jsp 31
5.3查看show.jsp 32
总结 34
JSP课程设计评分表 35
第一章 需求分析
1.1 JSP介绍
Java Sever Page(简称JSP)是基于Java技术,用于创建可支持跨平台及跨Web服务器Web服务器端应用程序(即所谓动态网页)。它是由Sun Microsystem企业提倡,由多家企业合作而建立一个动态网页技术标准,其网址为:
JSP正式公布于1999年6月,是基于Java Servlet和整个Java体系Web开发技术。在传统网页(即扩展名为.html文件)中加入Java程序片(Scriplet)和JSP标识(tag)即可组成一个常规JSP网页(其扩展名为.jsp)。
1.2 新闻网站功效需求分析
在线新闻网站是现在广泛用于网上新闻工具之一。互联网新闻方便快捷,不受地域、时间限制。大数据时代,能否正确快速掌握更多信息是事半功倍关键。网络普及给大家值天下事提供了特殊便利渠道,新闻网站正是迎合这一社会需求应运而生。
新闻网站关键提供了基础用户注册,用户登录,浏览新闻,评论新闻等功效。用户在使用浏览新闻,能够方便使用这些简易功效。也为管理者提供了添加新闻、删除新闻、编辑新闻等功效使管理者能简单方便有效管理新闻公布。
1.3 开发及运行环境
1.3.1 硬件平台
CPU: Pentium 4 2.0GHz以上
内存:512MB以上容量
显卡:32MB或以上显存之AGP接口显卡
1.3.2 软件要求
操作系统:Windows 7 旗舰版
运行环境:Tomcat/ jdk1.6
开发工具:MyEclipse / MySQL Sever 5.0
第二章 新闻公布网站
2.1 网站结构设计
一个新闻网站应包含用户注册、管理员管理新闻两种功效。网站设计结构图2.1-1所表示。
图2.1-1
2.2目标设计
在线新闻网站所要实现功效以下。
l 用户注册
u 用户注册信息
u 用户登录验证
u 用户查看新闻
u 用户评论新闻
u 用户注销
l 管理员管理新闻网站
u 管理员登录
u 管理员查看新闻
u 添加新闻
u 编辑新闻
u 删除新闻
2.3系统功效分析和设计
在线新闻网站共分为两个模块:用户查看模块和管理员修改模块,其功效模块划分图2.3-1所表示:
新闻网站
管理员管理新闻
用户查看新闻
管理员登录
编辑新闻
添加新闻
添加新闻
评论新闻
用户登录
用户注册
删除新闻
浏览新闻
图2.3-1
第三章 数据库结构设计
依据系统功效设计要求和模块划分,本网站数据库关键存放用户注册信息、新闻信息和评论信息。
3.1 数据库需求分析
新闻网站关键包含以下数据项和数据结构。
1.用户注册信息:user_id(自动编号)、用户名、密码。
2.新闻列表:id(自动编号)、标题、作者、内容。
3 .评论信息:word_id(自动编号)、评论者姓名、评论内容、评论时间、所评新闻id和留言者id。
3.2 数据库逻辑设计
3.2.1、用户注册信息表user_reg
图3.2-1所表示:
图3.2-1
3.2.2、新闻列表news
图3.2-2所表示:
图3.2-2
3.3.3、评论信息表
图所表示:
图3.3-3
第四章 一般用户模块
网友注册模块包含一下多个子模块。
l 用户注册:
u index.jsp
u checkuser.jsp
l 用户登录验证:
u logland.jsp
u succ.jsp
u userMain.jsp
u leaverword.jsp
u fail.jsp
u logout.jsp
已经有账号,直接登录
各页面直接关系图:
Logland.jsp
用户登录
index.jsp
用户注册
checkuser.jsp
是否登录成功
check.jsp
是否注册成功
是
否
是
否
regsubmit.jsp
注册不成功
regok.jsp
注册成功
fail.jsp
登录不成功
succ.jsp
登录成功
show.jsp
阅读新闻
Leaveword.jsp
评论新闻
userMain.jsp
用户主页面
图4-1
4.1 index.jsp
4.1.1 页面示例
图4.1-1为用户注册第一步所看到页面
图4.1-1
4.1.2 页面中需要填写HTML表单元素
该页面中有2个需要填写表单元素,如表4.1-1所表示
名称
表单元素类型
含义
最大长度
user_name
text
用户登录名称
16
password
password
用户登录密码
16
表4.1-1
4.1.3 页面所包含数据库表信息
此页面仅向系统提交用户注册名称和代码,并没有包含到数据库表操作。
4.1.4 页面代码分析
<!-- 首先导入部分必需packages -->
<%@page import="java.sql.*" %>
<%String user_id=(String)session.getValue("user_id");
String user_id1="1";
//假如管理员名称为空session.getValue("user_id")不等于1说明用户已经登录过,不能再注册用户
if(!user_id.equals(user_id) && user_id !=null){
response.sendRedirect("havereg.htm");
} %>
4.2 regsubmit.jsp
4.2.1 页面示例
图4.2-1为用户注册不成功看到界面:
图4.2-1
4.2.2 页面中需要填写HTML表单元素
页面中无需填写HTML表单元素。
4.2.3 页面所包含数据库表信息
页面中包含到用户数据库表user_reg操作。
4.2.4 页面代码分析
<%
//转换由表单读取数据内码到GB2312
request.setCharacterEncoding("GB2312");
//取得提交表单用户名和密码
String user_name = request.getParameter("user_name");
String pword=request.getParameter("passssword");
//假如提交密码为空提醒错误,终止程序实施
if(pword==null){
out.print("数据有错!");
}else{
String sql="select *frorm scott.user_reg where user_name='"+user_name+"'";
//创建统计集对象,在用户表中查询用户是否存在
ResultSet rs=stmt.executeQuery(sql);
//在用户表中查询用户不存在
if(!rs.next()){
//添加一条统计
stmt.executeUpdate("INSERT INTO scott.user_reg(user_id,user_name,pword) VALUES(scott.user_regid.nextval,'"+user_name+"','"+pword+"')");
String sql1="select *from scott.user_reg where user_name='"+user_name+"'";
//取得用户ID号
Result rs1=stmt.executeQuery(sql1);
if (rs1.next()){
//将用户ID给予session("user_id")
session.putValue("user_id",rs1.getString("user_id"));
response.sendRedirect("regok.jsp");
}
}else{
%>
}
4.3 regok.jsp
4.3.1 页面示例
图4.3-1为用户注册成功所看到页面
图4.3-1
4.3.2 页面中需要填写HTML表单元素
页面中无需填写HTML表单元素。
4.3.3 页面所包含数据库表信息
此页面并没有包含到数据库表操作。
4.3.4 页面代码分析
<form action="userMain" method="get" name="" id=""">
<p></p>
<label style="background-color:#660033"><h1>欢迎进入湖南商学院新闻网站 </h1>
</label>
<br />
<textarea rows="15" cols="50"><h2>恭喜您,您已经成功提交申请!</h2>
<br />
请点击[继续]以浏览新闻
</textarea> <br />
<span> <strong> <span class="STYLE3"><a href="userMain.jsp">继续</a></span></strong></span><span class="STYLE3"> </span> <span class="STYLE5"><a href="index.jsp">退出</a></span>
</form>
4.4 logland.jsp
4.4.1 页面示例
图4.4-1为用户登录时所看到界面。
图4.4-1
4.4.2页面中需要填写HTML表单元素
页面中有两个需要用户填写填写HTML表单元素,如表4.4-1。
名称
表单元素类型
含义
最大长度
user_name
text
用户登录名称
16
password
password
用户登录密码
16
表4.4-1
4.4.3 页面所包含数据库表信息
此页仅向系统提交用户登录名称和密码,并没有包含到数据库表操作。
4.4.4 页面代码分析
<form action="checkuser.jsp" method="post">
<fieldset style="width:350px; height:auto;text-align:left;background-color:skyblue">
<legend><span class="STYLE2">用户登录</span></legend>
<br />
<span style="text-align:right">还没有账号?<a href="usezhuce.jsp">注册</a> </span>
<p></p>
<label><span class="STYLE3">帐号:</span></label>
<br />
<input type="text" tabindex="2" accesskey="z" value="请在这里输入" size="20" style="width:200px" maxlength="6"/><span style="color:red;font-size:12px">* 帐号只为6位
</span>
<p></p>
<label><span class="STYLE3">密码:</span></label>
<br />
<input type="password" tabindex="1" accesskey="m" size="20" style="width:200px" maxlength="12"/>
<br />
<center>
<hr />
<input type="submit" style="height:30px;font-size:16px" value=" 登录 "/>
<input type="reset" style="height:30px;font-size:16px" value=" 重置 "/>
</center>
</fieldset>
</form>
4.5 checkuser.jsp
4.5.1 页面示例
此页为登录中转页面,无页面示例。
4.5.2 页面中需要填写HTML表单元素
此页为检验用户是否输入正确账号和密码登录,没有需要填写HTML元素。
4.5.3 页面所包含数据库表信息
此页是用户登录后进入数据库判定,没有包含到数据库表操作。
4.5.4 页面代码分析
<%
String uname = request.getParameter("username");
String upwd = request.getParameter("password");
String sql = "select * from usinfo where username='" + uname
+ "' and password='" + upwd + "'";
%>
<%
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, "root",
"123456");
Statement smt = conn.createStatement();
ResultSet rs=smt.executeQuery(sql);
if (rs.next()) {
session.setAttribute("user", uname);
response.sendRedirect("userMain.jsp");
} else
response.sendRedirect("fail.jsp");
} catch (Exception e) {
out.print(e.getMessage());
}
%>
4.6 succ.jsp
4.6.1 页面示例
此页为登录中转页面,无页面示例。
4.6.2 页面中需要填写HTML表单元素
此页为用户查看新闻页面,没有需要填写HTML元素。
4.6.3 页面所包含数据库表信息
此页是用户登录后进入新闻列表,没有包含到数据库表操作。
4.6.4 页面代码分析
<from action=userMain.jsp" method="post">
<%
if(session.getAttribute("user")==null){
%>
您没有登录,请<a href="index.jsp">登录</a>
<%}else{ %>
欢迎您, <%=session.getAttribute("user")%>
<a href="logout.jsp">注销</a>
<%}
%> <%
if(session.getAttribute("user")==null){
%>
您没有登录,请<a href="index.jsp">登录</a>
<%}else{ %>
欢迎您, <%=session.getAttribute("user")%>
<a href="logout.jsp">注销</a>
<%}
%>
4.7 userMain.jsp
4.7.1 页面示例
图4.7-1为登录成功后所看到页面效果
图4.7-1
4.7.2 页面中需要填写HTML表单元素
此页为用户查看新闻页面,没有需要填写HTML元素。
4.7.3 页面所包含数据库表信息
此页是用户登录后进入新闻列表,没有包含到数据库表操作。
4.7.4 页面代码分析
<body class="STYLE5">
<span align="left"> <span class="STYLE8"> <span class="STYLE8">欢迎进入湖南商学院新闻网站</span></span></span>
<p></p>
<img src="file:///E:\JSP课程设计\CPweb\图片\myLOGO.jpg" style="width: 400px; height: 165px;"><img src="file:///E:\JSP课程设计\CPweb\图片\myLOGO.jpg" style="width: 400px; height: 165px;"><img src="file:///E:\JSP课程设计\CPweb\图片\myLOGO.jpg" style="width: 400px; height: 165px;"><br>
<center>
<p class="STYLE1">新闻列表</p>
<br>
</center>
欢迎您, <%=session.getAttribute("user")%>
<hr>
<%
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String sql = "select * from news";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, "root",
"123456");
Statement smt = conn.createStatement();
ResultSet rs = smt.executeQuery(sql);
while (rs.next()) {
%><table>
<tr>
<td> <a href="show.jsp?id=<%=rs.getInt(1)%>" class="STYLE7"><%=rs.getString("title")%></a></td>
<td><a href="leaveword.jsp?id=<%=rs.getInt(1)%>" class="STYLE7">评论</a></td>
</tr>
</table>
<br>
<%
}
%>
<%
} catch (Exception e) {
out.println(e.getMessage());
}
%><form action="logout.jsp" method="post" ">
<input type="submit" name="Submit" value="注销" style="width:100px;heigth:50px"/>
</body>
4.8 leaveword.jsp
4.8.1 页面示例
图4.8-1为用户评论新闻界面。
图4.8-1
4.8.2 页面中需要填写HTML表单元素
该页面中有2个HTML表单元素需要用户填写,如表4.8-1所表示。
名称
表单元素类型
含义
最大长度
word
text
评论内容
500
表4.8-1
4.8.3 页面所包含数据库表信息
此页包含到数据库表leaveword操作。
4.8.4 页面代码分析
<%request.setCharacterEncoding("GB2312") ;
String user_id1 = (String)session.getValue("user_id");
//判定Session变量是否超时
if((user_id1==null)|(user_id1=="")){
response.sendRedirect("timeout.htm");
}
//判定此用户是否已经注册,session("user_id1")为1说明没有,则不能留言
String user_id2="1";
if(user_id1.equals(user_id2)){
response.sendRedirect("notreg.htm");
}
String user_id=request.getParameter("user_id");
String netname=request.getParameter("netname");
//取得取得用户档案具体信息
String sql="select * from student.sno where user_id='"+user_id1+"' ";
ResultSet rs_lar=stmt.executeQuery(sql);
if(rs_lar.next()){
netname = rs_lar.getString("netname");
String word =request.getParameter("word");
//假如留言内容不为空
if (word!=null){
//添加一条留言统计
stmt.executeUpdate("INSERT INTO scott.leaveword(id,netname,word,for_id,user_id)VALUE(scott.leavewordid.nextval,'"+netname+"','"+word+"','"+user_id+"''"+user_id1+"') ");
out.print("<script language='javascript'>");
out.print("history.go(-2);");
out.print("</script>");
}
}
%>
4.9 fail.jsp
4.9.1 页面示例
用户登录失败界面图4.9-1所表示
图4.9-1
4.9.2页面中需要填写HTML表单元素
页面中有两个需要用户填写填写HTML表单元素,如表4.9-1所表示。
名称
表单元素类型
含义
最大长度
user_name
text
用户登录名称
16
password
password
用户登录密码
16
表4.9-1
4.9.3 页面所包含数据库表信息
此页仅向系统提交用户重新登录名称和密码,并没有包含到数据库表操作。
4.9.4 页面代码设计
<body>
<center>
<form action="checkuser.jsp" method="post">
<fieldset style="width:350px; height:auto; text-align:left; background-color:skyblue">
<legend><span class="STYLE2">用户登录</span></legend>
<br />
<span style="text-align:right">还没有账号?<a href="../../0_/">注册</a> </span>
<center><p class="STYLE4">登录失败,请重新登录!</p></center>
<label><span class="STYLE3">帐号:</span></label>
<br />
<input type="text" tabindex="2" accesskey="z" value="请在这里输入" size="20" style="width:200px" maxlength="6"/><span style="color:red;font-size:12px">* 帐号只为6位
</span>
<p></p>
<label><span class="STYLE3">密码:</span></label>
<br />
<input type="password" tabindex="1" accesskey="m" size="20" style="width:200px" maxlength="12"/>
<br />
<center>
<hr />
<input type="submit" style="height:30px;font-size:16px" value=" 登录 "/>
<input type="reset" style="height:30px;font-size:16px" value=" 重置 "/>
</center>
</fieldset>
</form>
</center>
</body>
4.10 logout.jsp
4.10.1 页面示例
此页为用户注销页面,注销后跳转到登录页面,无页面示例。
4.10.2 页面中需要管理者用户填写HTML表单元素
页面中无需填写HTML表单元素。
4.10.3 页面包含到数据库表信息
此页仅用户注销,没有包含到数据库表操作。
4.10.4 页面代码分析
<%
session.invalidate();
response.sendRedirect("logland.jsp");
%>
第五章 新闻管理模块
新闻管理模块包含一下多个子模块
l 管理员登录模块:
u 管理员登录:adminlogin.jsp
u 审核账号:adminpass.jsp
u 管理员管理页面:manegerMain.jsp
u 重新登录:adminlogin.jsp
l 管理新闻模块:
u 添加新闻:add.jsp、 padd.jsp
u 删除新闻:delete.jsp
u 编辑新闻:edit.jsp、update.jsp
u 查看新闻:show.jsp
各个页面之间关系图5-1所表示:
adminlog.jsp
管理员登录
adminpass.jsp
审核
不经过
经过
adminlogin.jsp
重新登录
manegerMain.jsp
管理界面
show.jsp
查
看
新
闻
edit.jsp
编
辑
新
闻
delete.jsp
删
除
新
闻
add.jsp
添
加
新
闻
图5-1
5.1 adminlogin.jsp
5.1.1 页面示例
管理员登录页面效果图5.1-1所表示。账号和密码全部为admin。
图5.1-1
5.1.2 页面中需要管理者用户填写HTML表单元素
该页面中有2个需要用户填写表单元素,如表5.1-1所表示
名称
表单元素类型
含义
最大长度
admin_name
text
用户登录账号
12
admin_password
password
用户登录密码
12
表5.1-1
5.1.3 页面所包含数据库表信息
此页仅向系统提交管理员用户账号和密码,没有包含到数据库表操作。
5.1.4 页面代码分析
此处仅提供用户输入账号信息,在下一页会判定用户提交账号和信息是否正确。
<form action="manegerMain.jsp" method="post" name="" id="" >
<fieldset style="width:350px; height:auto;text-align:left;background-color:#0066FF">
<legend><span class="STYLE2">管理用户登录</span></legend>
<p></p>
<label><span class="STYLE3">超级用户帐号:</span></label>
<br />
<input type="text" tabindex="2" accesskey="z" value="请在这里输入" size="20" style="width:200px" maxlength="6"/><span style="color:red;font-size:12px">* 帐号只为6位
</span>
<p></p>
<label><span class="STYLE3">超级用户密码:</span></label>
<br />
<input type="password" tabindex="1" accesskey="m" size="20" style="width:200px" maxlength="12"
展开阅读全文