jsp新闻发布标准系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

扬茨名曲久淨实验报告
课程名称:_________ 工程软件设计与实践课程考察

IN




一. 实验目的
通过一个学期对工程软件设计与实践课程的学习,其实质是增加大家的动
手能力,故此本学期采用小组开发制,希望大家对所学习的内容进行系统运用和巩固,进行了本次实践考察。

随着网络的快速发展和普及,越来越多的用户习惯上网浏览新闻。

本系统的主要LI的就是为用户提供一个方便及时的网上新闻发布、浏览平台。

利用本系统,用户可以直接在网上发布新闻信息并根据自己的需要对新闻进行检索。

本系统遵循软件工程标准,并按照工程软件规定的流程进行工程的开发。

本文档对我们本次实验的详细过程进行了清楚地撰写,本次任务是要实现一个新闻发布系统,系统的主要功能包括:新闻查看功能、新闻删除功能、发布新闻功能、管理员登录功能和新闻管理功能。

任何用户均可使用本系统来查看、删除、发布新闻。

用户可以通过单击每条新闻的标题来查看该条新闻的详细内容。

当用户作为系统管理员成功登录后,可以使用新闻管理功能。

新闻管理包括对现有新闻的修改和删除。

二. 实验设备和环境
1.实验设备:西安石油大学计算机机器以及各开发者本人的计算机。

2.实验环境:
A.硬件环境
处理器:IntelPeteum
内存:32WI或更高
硬盘空间:1GB
B.软件环境
操作系统:Windows 98/ME/2000/XP
Web 服务器:Tomcat7.0
软件:MyEclipse
C.数据库Mysql
开发语言:JSP、Java、Servlet
3.实验名称:新闻发布系统
4.开发者:杨雪(组长),王闯,何雪英,李文华,王卯
三. 实验内容与步骤
1.实验内容
新闻发布系统
2.任务分配
杨雪(组长):登录模块和数据库连接处理,以及最终整理文件进行系统改
进。

何雪英:修改新闻模块
王闯:增加新闻模块
李文华:删除新闻模块
王卯:查询显示模块
3.实验步骤
(1)需求功能描述
新闻发布系统的主要L1的是为用户提供一个方便的、可快速浏览当前最新新闻的界面并且也可以随时发布最新的讯息以达到信息共享的U的。

因此要为用户提供个方便易用的使用界面,同时也为具有更高权限的管理用户提供添加、删除和查找,修改功能。

A.查看新闻功能
任何用户均可以使用查看新闻功能。

用户进入系统后,就可以直接看到所有新闻列表,并且使用分页显示的效果,每页显示5条新闻,用户可通过单击下方的
“上一页”和“下一页S这里显示的所有新闻按发布的序号排列。

用户通过单击每条新闻的标题可以查看到新闻的详细内容,其中包含点击次数。

B.增加新闻功能
任何用户均可以使用发布新闻功能。

用户通过在系统下方单击“增加新闻"超链接可以进入发布新闻页面。

发布新闻时,需要填写新闻的标题、内容,发布时间取当前系统时间,不需要用户填写。

C.删除新闻功能
选中新闻的序号,单击删除按钮就可以进行新闻删除。

D.修改新闻功能
用户登录后,选中需要修改的新闻序号,即可弹出修改界面,进行标题与内容的修改。

(2)代码设计与模块显示
A.用户登录
源代码:
<%3pagecontencType= rr text/h tmlo charset=gbk rr*>
<html>
<head>
</head>
<body>
<center>
<h2> 用户登录</h2><hr><br>
<f ormaction= "LoginServlet rr me^hod= "post rr>
用户名:<inputtype= rr name= u userncLme r,xbr>
密&nbsp o &nbsp o码:<inpuctype= "password rr name = "pwd,f><br> <inpuctype= f,sub2ni t rr value="提交"〉
<inpu* type= n reset rr value="重送”〉
</form>
<f ontcolor= fr red ff>
<%
String result=(String)request ・§3七直七七匕匚匕口七总(n err n) if (result!=null)
{
if("pwderr"・ equals(result))
{
%>
密码不正确,请重新输入!!
<%
}
if{"nouser"・ equals(result))
{
%>
对不起,此用户不存在!!
<%
}
}
%>
</font>
</cencer>
</body>
Java代码:
package news ・ control。

import j ava ・ io ・IOExceptiono
import j ava ・ io ・ Printwritero
import j avax ・ servlet ・ ServletExceptiono
import javax ・ servlet ・ http ・
import javax ・ servlet ・ http ・
import j avax ・ servlet ・ http ・ HttpSorvletRmsponseo
import nex-js ・ logic ・ loginlogicBwario
public class LoginServlet extends HttpServlet {
public LoginServlet; () {
super ()o
}
public void destroy() {
super ・destroy()«
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request ・ gmtParammtE工("username n)。

String password=request ・ gmtParammtE工("pwd")。

loginlogicBean
loginBean=new loginlogicBean ()o String result= loginBean ・verify(usmrnams
password)。

if(H ok H.equals(result))
{
request ・ gmtSession()・ setAttribute(n user n r username)«
request ・ getRequestDispatcher(H/main/list ・ j sp")・ forward(request, response)o }else if(H PWDERR” ・equals(result))
{
request ・ setAttribute (n err n , n p\-jderr n )。

request ・匕(n index ・ j sp H)・ forward(request z response)。

}
else
reques t ・ set At tribute (f,err " r n nouser H )。

request ・ gmtRmqumstDispatchoM(n index ・ j sp")・ forward(request z response)o
}
}
public void init () throws ServletException { }
模块:
用户登录
B.显示新闻
源代码:
<%3pageconten,cType= tf te>:t/h tmlo charset=gbk rr*>
<%3pageimporc= "news・data ・NewsDataBean rr%>
<html>
<head>
</head>
<%
NewsDataBean bean=(NewsDataBean)request ・butm("bean")o
%>
<body>
<center>
<f ontsize= rr^rr color= "2red"> 显示新闻 v/f ont><hr>
<table>
<匸工〉<七&>标题:</td><td><%=bean ・ gEtNEWstitlm () %></td></*r>
<tr><td>nt
|0]:<hr><br>vbr></td><td><%=bean•getNewsdate() %><hr><br><br></td></tr> V匸工内容:</td><td><%=bean ・ gmtNEWsoontEnt() %></cd></tr>
<匸工><匸01>点击次数:</td><td><%=bean ・ gEtNmwsoount () %></td></cr> </table>
<ahref = ,r javasaript:history ・ baok ()">返回 v/a>
</center>
</body>
</html>
Java代码:
package nex-zs ・ control。

import j ava ・ io ・lOExceptiono
import j ava ・ io ・Print?7riter«
import j avax ・ servlet ・ServletException<»
import javax ・ servlet ・ http ・ HttpSmrvleto
import javax ・ servlet ・ http ・ HttpSmrvle
import j avax ・ servlet ・ http ・ HttpServletResponseo
import nex-js ・ data ・ NewsDataBman。

import nex-js ・ logic ・ NewsLogicBwario
public class DetailServlet ends HttpServlet {
public DetailServlet; () {
super ()o
}
public void destroy() {
super ・dmstzroy () «
}
public void doGet(HttpServletRequest request f HttpServletResponse response)
throws ServletException, IOException {
int
newsid=Integer ・parselnt(request ・ getParameter("newsid"))o
NewsDataBean bean=ne;7 Nev/sLogicBean ()・detail (nevzsid) o if (bean !=
null) {
request ・ setAttribute("bean", bean)。

request ・gmtRequestDispatch©匕(n main/detail・ j sp n)・ forward(request z
response)。

} else {
request ・ gmtRequestDispatche匕(n main/error ・ j sp H)・ forward(request r
response)o
}
public void init () throws ServletException {
} 模块:
登录成功!
欢迎root进入本系统!
下一页末页
増加新闻修改新闻删除新闻
登录成功!
欢迎YOOt进入本系统!
序号[新闻标题
66 gfhj(2011-12-04)
首贝上一页
増加新闸修改新I可删除新闻
显示新闻
标题: gdvdsf
T间:2011-12-12
内容:fghnf 点击次数;5
返回
C.增加新闻
源代码:
<%3pageconten,cType= rr text/h tmlo charset=gbk rr%>
<html>
<head>
<scrip,ctype= n text/javascript ">
function check(){
if(document ・ tij iao ・ newsTitle ・ value=="") alert (M标题不能为空")。

else if (document ・ ti j iao ・ newsContent ・ value==,'") alert 内容不能为空”)。

else
document ・ tij iao ・ submit()。

}
</script>
</head>
<body>
<center>
<h2> 增加新闻</h2><hr><br>
<f ormaction= u/news/InsertServlet rr me,chod= u post,r name= "tijiao'r>
新闻标题:<inputtype= M name= n newsTi tle n>vbr><br>
新闻内容:
<te:-:tarearows= fr10fr cols= "60"namm= "newsContent^x/cex^areaXbr>
<inpu*type= "button fr value= ,r>/^^7,r onclick=,,check () '*>
<inpuctvpe= n reset r,value="垂逻”〉
</form>
</cencer>
</body>
</html>
Java代码:
package nevzs ・ control o
import j ava ・ io ・工OExcep七ion。

import j ava ・ io ・Printwriter□
import j avax ・ servlet ・ ServletException0
import j avax ・ servlet ・ http ・HttpServlet□
import j avax ・ servlet ・ http ・ HttpServletRequest o
import j avax ・ servlet ・ http ・HttpServletResponse□
import nev;s ・ logic ・ NmwsIjogicBmari。

public class InsertServlet extends HttpServlet {
public InsertServlet() {
super() o
}
public void destroy() {
super ・ destroy() °
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String nex^sTitle=r equest ・ got Parameter (u nex^sTitle H ) <>
String nevjsContent=request ・ getParame七3三(''nex-JsContent H ) o
int result=new NewsLogicBean()・ insm工七N EWS(newsTitle,newsContent)o
//if(result==1){
request ・ gmtRequestDispatcher(n main/list ・ j sp?currentPage=l H)・ forwa
rd(request, response)o
//}else{
//request ・ getRequestDispatcher(n main/error ・ j sp")・ forward(request z response)o //}
} public void init () throws ServletException {
}
}
模块:
增加新闻
新闻标题:et s
tgft er
増加重畫
增加新闻
新闻标题;
D. 删除新闻
Java 代码:
package news ・ controlo
import j ava ・ io ・工OENcmptiorio import j ava ・ io ・ PrintWriter«
import j avax ・ servlet ・ ServletENcmption« import j avax ・ servlet ・ http ・ HttpSmrvleto import j avax ・ servlet ・ http ・ HttpServletRmquesto import j avax ・ servlet ・ http ・ HttpServletRmsponsm 。

import ne\7s ・ logic ・ NmwsLogicBeario public class DeletmSmrvlet extends HttpServlet {
public DeleteServlet()
{
super ()o }
public void destroy()
{ super ・ destroy()o } public
void
doPost(HttpServletRequest
HttpServletResponse response)
throws ServletException, IOException { int
新闻內容:
request,
news I d= Integer ・ parselnt (request ・ get Parameter ("newsid'1))。

int result=nex-j Ne\-;sLogicBean ()・deleteNex'/s (nev/sld) o
if (result==l)
{
request ・ gmtREqumstDispatohEr("main/list ・ j sp?currentPage=l")・ forward(r equest, response)。

}else
{
request ・ getRequestDispatcher("main/errors ・ j sp")・ forward(request, response)。

}
}
public void init () throws ServletException {
// Put your code here
}
}
模块:
登录成功!
欢迎root进入本系统|
修改新闻
登录成功!
欢迎root逬入本系统|
I増加新闻11俺改新闻]|删除新闻
E.修改新闻源代码:
<%3pagecontentType= rr text/h tml o charset=gbk fr%>
<%3page import = u news ・data ・ NewsDataBean /r%>
<html>
<head>
</head>
<%
NewsDataBean bean= (NewsDataBean) request ・匕匕工ibutE ("bean" ) c %>
<body>
<center>
<h2> 修改新闻</h2><hr><br>
<f ormaction= u/news/UpdateServlet rr me^hod= "post ">
新闻标题:
<input.type= rr text rr name= u newsTitle,r value= r,<%=bean ・ gmtNmwstitle:() %> fr><br ><br>
新闻内容:
<t;excarearows= fr l(?rr cols = rr^O rr name= ,r neursCon ten t fr><%=bean ・ gEtNEWsoontEnt ( )%></textarea><br>
<inpuc type= "hidden rr name= ,r ne«sid rr value=<%= bean ・ getNewsid () %>>
<inpu二匕ypm= "sub/nS t; "valum="増加
<inpu-type= n reset rr value="重送”〉
</form>
</center>
</body>
</html>
Java代码:
package news ・ controlo
import j ava ・ io ・工OExcmption。

import java ・ io ・Print?7riter«
import j avax ・ servlet ・ServletException<»
import j avax ・ servlet ・ http ・
import j avax ・ servlet ・ http ・to
import j avax ・ servlet ・ http ・ HttpSmrvIetRmsponsmo
import nex'/s ・ logic ・ NmwsLogicBmario
public class UpdateServlet extends HttpSmrv丄et {
public UpdateServlet() {
super ()o
}
public void destroy() {
super ・ destroy()o
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String nev;sTitle=request ・ getParametmr (,f ne\'/sTitle n) »
String nevzs Con tent=r equest ・ got Parameter ( n ne\«JsContent" ) o int news Id= Integer ・ parselnt (request ・ gmtParamEtE工("newsid'1))。

int result=nev7 NewsLogicBean()・ updatENews(newsld,newsTitle,newsContent)。

if (result==l)
{
request ・ getRequestDispatcher("main/list ・ j sp?currentPage=l")・ forward(r
equest, response)o
} else
{
request ・ gmtRmqumstDispatohE工("main/errors ・ j sp")・ forward(request,
response)。

}
}
public void init () throws ServletException { }
}
模块:
登录成功!
欢迎
root
逬入本系统
|
序号新闻标题
O1
hd(2011-12-30)
02 wuhao(2011-12-29) 03 hgf(2011-12-14)
04 asdff(2011-12-12)
序号斷闻标题
O1 yangxue(2011T 2-30) 02 wuhao(2011-12-29)
修改新闻
增加新闻]
I 修改新闻I I 删除新
新闻标题:y^g^ue
新闻內容:
F.FindByldServlet 代码
package news ・ controlo
import j ava ・ io ・IOExceptiono
import java ・ io ・ Printwritero
import j avax ・ servlet ・ ServletException。

import j avax ・ servlet ・ http ・ HttpServleto import j avax ・ servlet ・ http ・HttpServletRequest。

import javax ・ servlet ・ http ・ HttpServletResponse。

import news ・ data ・ NewsDataBean。

import news ・logic ・ NewsLogicBean。

public class FindByldServlet extends HttpServlet {
public FindByldServlet() {
super()o
}
public void dest:roy() {
super ・ destroy()o
}
public void doPost(HttpServletRequest request r HttpServletResponse response)
throws ServletException, IOException {
int
newsid=Integer .parse Int (request ・ get Parameter ("news id") ) o NewsDataBean bean = new NewsLogicBean()・findByld(newsid)o if (bean != null) {
request ・ setAttribute(H bean n, bean)。

request ・ getRequestDispatcher(U main/update ・ j sp u)・ forward(req uest z
response)»
} else {
request ・ getRequestDispatcher(f,main/error ・ j sp")・ forward(requ est z
response)o
}
}
public void init() throws ServletException { }
}
G.LoginServlet 代码
package news ・ contMcd。

import j ava ・ io ・IOExceptiono
import java ・ io ・Printwriter®
import j avax ・ servlet ・ ServletExceptiono import j avax ・ servlet ・ http ・HttpServleto import j avax ・ servlet ・ http ・ HttpServletRequesto import
javax.servlet.http ・HttpServletResponse“
import news ・logic ・loginlogicBeano
public class LoginServlet extends HttpServlet {
public LoginServlet() {
super()o
}
publie void destroy() {
super ・destroy()◎
public void doPost(HttpServletRequest request r HttpServletResponse response)
throws ServletException/ IOException {
String username=request ・getParameter("useznamG")。

String password=request ・ getParameter ("pwd1') o loginlogicBean loginBean=new loginlogicBean()。

String result= loginBean.verify(username, password)。

if (H ok H・ equals(result))
{
request・getSession()・ setAttribute(H user n r username)◎
request ・ getRequestDispatcher("/main/list ・ jsp n)・ forward(request, response)o }else if (n PWDERR'f .equals (result))
{
request ・ setAttribute (''err11r,f pwderr,f) o
request ・ getRequestDispatcher(H index ・ j sp n)・ forward(request A response)。

}
else
{
request ・ setAttribute ("err"r U nouser,f) o
request ・ getRequestDispatcher("index ・ j sp'r)・ forward(request, response)。

}
}
public void init() throws ServletException {
}
}
H・list・jsp代码
<%3pageconten,cType= "text/h tml<> charset=gbk rr%>
<%0pageimport= "news ・ data ・f java ・ util ・* rr^>
<html>
<head>
< j sp : useBeanid= "news,r class= u news ・ loglo ・ Ne^sLoglcBean "/>
</head>
<body>
<center>
<h2>登录成功!</h2>
<hr>
<%
String username=(String)session ・ getAttribute(H user")。

if(username!=null)
{
%>
欢迎vf ontcolor二n rea n size= r,6F,><%=usemame%></f ont>进入本系统! <br>
<%
}
%>
<hr>
ormaotion= ・j sp"namm= "forml"mm匕hod= "post ">
<tableborder=,f l rr>
<tr><td>JT^</tdxtd>WrlW]1yp^</td></tr>
<%
St ring str_curPage=r equest ・ gEtParamEtEr (,,curPage n) »if(str^curPage!=null)
{
nev;s ・ setCurPage (Intmgmr ・parselnt (str_curPage) ) °
}
List list=news ・ findAll()。

int allRows=news ・ gmtAllRows()o
int allPage=news ・ gmtAllEagms()o
int ourPagEtriETrs ・ gmtCu工Pagm () o
int rowPerPage=news ・ gEtRowPm工Eagm()o
for(int i=0。

iv丄ist・si2E()。

i++)
{
NewsDataBean bean= (Nex'/sDataBean) list ・gmt (i) °
%>
<tr><td><inputtype= ,r radi o ,r name= ,r ne^sid rr value=<%=
bean ・ getNewsid()%>><%=(curPage-1)*rowPerPage+i + l %></*d>
<t;d><ahref = 'r Det allServlet rneursid=<%= bean ・ getNewsid () %> f,X% = bean ・ getNewstitle() %>(<%= bean ・ getNewsdate() %>)</a></cd></cr>
<%
}
%>
</table>
<%
if (curPage!=1)
%>
<ahref = u/news/main/list ・ jsp?curPage=l">首!/l</a>
<ahref= u/news/main/list・jspf curPage=<%=curPage-l %>">上•贞v/a> <% }
%>
<%
if(curPage!=allPage)
{
%>
<ahref= n/news/main/list・JsprcurFage=<%=curPage+l %>">下•页</a>
<ahref = n/news/main/list・JsprcurFage=<%=allPage %> ">末员</a>
<%
}
%>
<hr>
</center>
<inpuctvpe= "submi t,r value="増加新闻",r oper rr onclick=,,return insertNews()o”/>
<inpuctype= ,r sub2ni t fr value= rr^f^W,r name= fr oper rr onclick=H return updateNews ()c"/> <inpu*ctype= tf submi t rr value= ame = u op er fr onclick=,,return
delet^eNews () o"/>
v/fo工m>
<scrip*ctype= n text/javascript ,r>
function insErtNmws()
{
document ・ forml・ action=,'main/insert ・j sp"o
}
function updateNews()
{
var selected=f alse o
for(var i=0o i<forml・nEwsid・lengtho i++)
{
if(document ・ forml・ nmwsid[i]・ ohEokmd)
{
selected =true o
breako
}
}
if ( !selected)
alert (11请选择所要修改的新闻! ”)。

return false o
}
document ・ f orml ・action=,,FindByIdServlet n<»
}
function deleteNews()
{
var selected=f alse o
for(var i=0o i<formld・lengtho i++)
{
if(document ・ forml・ newsid[i]・ ohmokmd)
{
selected =true o
breako
}
}
if ( !selected)
{
alert (“请选择所要修改的新闻!”)。

return false o
}
document ・ forml・action="Dele teServiet"。

}
</script>
</bodv>
</html>
I.整个工程包
0 [3 news
0 習src
E)田nevs. comm
I •
斗出news, control
田审news, lata
由田news, logic
E Ejfc JRE 系统库[Sg JDK 1.
田Bi J2EE 1.4 Libraries
£)或引用的库
亠Veb应用程序库
二;7 VebRoot
国鉛main
十0META-INT
@ m-nrp
index, j5p
(3)数据库设计
表设计: 3"HnfeW£ fHuser
News :
栏们 素引 外毬 M 灰金远顶 注粹 SQL
入向耳 U 导出向导 iffi 选向导 冈搭査丢 弓表单克看 •裕注
九mid
tie
neivsc^xit^xit news^te ncwzscogt

0 yangxue yauaiato^shizeiJ 2011-12-30
Z 1 vuheo
j££歹
2011-12-20 4 Z ^sdff
仕址 2011-IZ-J2 5
6略
j 的
2011-12-14
4
User :
栏位 丨素引 外魂 射发羽选顶丨注释ISQL 预监
名 姿型
扶度
小数点 允许空伯

varchar 2D
0 □ 知

password
int
03
赵导入向导
as 导出向导w 筛选向导
网格查看,表单查看
备注
SB 十h
username pas sword
hexueyi ng
12345
liwenhua
12345
roQt
12345
wan.gchu.ang 12345
wangrriao
12345
k
yang
12345
newstd
XL<wsi<ite
acwacounl
int 200 var char 200 vor char
200 date
0 ini 200
允许空但
》》
E B
类星
长痕 小数点
四・实验结果与分析
本次实验结果相对较为圆满,基础实现了软件需要的所有功能,只是部分模块还不够完善,用户界面也没有进行美化。

本次实验采用的是MVC模式,m jsp进行用户界面设计,用Servlet 进行控制处理,数据库进行数据管理,总体设计过程比较简单。

五.实验总结
本次实验经过了两个周的时间,通过小组五人的齐心合作努力和老师的指导,完成的相对较为圆满。

在实验过程中,使我们更加深刻的体会到7 web软件设计中的模式设计,对设计•的方法,步骤和要求,以及其主要流程和注意事项都有了更加客观和理解性的认识与了解,对MyEclipse软件的运
用也更加灵活自如。

通过大家的一起努力基本完成了要实现的功能操作,大家的基本问题是因为平时基础功不够扎实,对于操作时问题重重,不能很熟练的将其解
决。

六.实验问题和建议
本次实验山于时间关系和知识的局限性,仍存在一些问题:
1.在用户界面设计中,对界面的设计以及其方法等方面分析的还不够全
面和完善,还不够实用化和人性化。

2•在处理阶段,对jam文件的书写还不够熟练,岀现一些知识性错误。

3•在讨论过程中,大家有时出现意见分歧,讨论时间过长,不能果断快
速的下结论。

4•对系统的整体性把握良好,但在具体细节分析中,仍存在许多困难与
模糊概念。

5•刚开始,对数据库的理解和使用还比较模糊,不清楚。

建议:
1.希望老师在以后的教案过程中更加注重系统的实践,督促大家的实
践积极性。

2.希望老师在以后的课堂授课中,可以更加具体生动的把术语转换为
大家更容易接受和理解的语言方式,提高大家的学习积极性。

七・后记
在老师的指导下,在组长的领导下,经过我们小组成员的合作,通过查询资料,我们逐渐完成了这次的实验。

在这个过程中,我们有时会由于
意见不合,争得面红耳赤,但大家都从中受益良多。

我们体会到了团队合
作的强大力量,而这份设计就是大家心血的结晶和团队精神的有力见证。

相关文档
最新文档