JSP网络程序设计课程设计Word格式文档下载.docx
《JSP网络程序设计课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JSP网络程序设计课程设计Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![JSP网络程序设计课程设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/5f5b5b84-b383-4562-94c8-ae2cc9a75dfc/5f5b5b84-b383-4562-94c8-ae2cc9a75dfc1.gif)
JSP是一种在服务器端编译执行的Web设计语言,其脚本语言采用Java,并继承了Java的所有优点。
1.1什么是Web编程
Web编程简单地说是基于WWW的Internet上的应用程序开发,随着Internet的普及与传播,越来越多的人通过WWW走进网络世界的大门。
CGI(CommonGatewayInterface)应用程序的第一次引入了动态交互的概念,这些运行于服务器端的脚本程序通常用Perl语言或C语言写成,需要编译才能运行。
随着Web应用程序技术的发展,CGI所引入的动态内容概念被很多新技术所实现和发展,基于程序运行的地点大致可以分为两大类:
一类是随着HTML页面下载并运行于客户端的程序脚本,例如ActiveX控件,DHTML,JavaApplet和JavaScript;
另一类程序是基于服务器端的技术,例如ActiveServerPage(ASP),PHP,JavaServerPage(JSP),JavaServlet等。
1.2JSP简介
JSP是JavaServerPage技术的缩写,是由Java语言的创造者Sun公司提出、多家公司参与制定的动态网页技术标准。
通过在传统的(*.html,*.htm)中加入Java代码和JSP标记,构成后缀为*.jsp的JSP网页文件。
Web服务器在遇到访问JSP页面的请求时,首先执行其中的代码片断,然后将执行的结果以普通HTML方式返回客户浏览器,JSP页面中的程序代码在客户端是看不到的。
这些内嵌的Java程序代码可以完成数据库的操作、文件上传、网页重定向、发送电子邮件的等功能,所有的操作均在服务器端进行,客户端得到的仅仅是运行的结果,因而对客户浏览器的要求很低。
JSP有JavaServlet技术为基础,利用可跨平台运行的JavaBeans组件,可以方便的操作数据库,执行各种复杂的查询,使逻辑处理和显示互相分离。
1.3JSP的优点
1.3.1跨平台运行
JSP的最大优势在于平台可移植性,利用Java语言的平台无关性,任何JSP程序只要编译一次,就可以在任何服务器平台使用。
1.3.2执行效率高
JSP在服务器端被Java虚拟机编译成Servlet执行,编译的过程只在第一次执行时进行,以后Servlet对于每个客户端请求都使用内存中的同一副本处理,而不像CGI那样需要为每个请求创建单独的进程,而只要在Java虚拟机中装载一个Servlet,因而节省了大量的服务器资源,执行时性能优化,代码效率高。
1.3.3服务器端组件支持
服务器端编程语言往往由于缺少强大的服务器组件支持而受到限制,JSP使用成熟的JavaBeans技术,可以轻松得到各种服务器组件的支持。
1.3.4数据库支持
JSP技术利用Java语言的数据库操纵能力可以与任何JDBC兼容数据库建立连接,执行常用的查询、添加、更新、删除操作和复杂的逻辑代数。
利用Sun公司开发的JDBC-ODBC桥,JSP还可以访问现有的ODBC(OpenDataBaseConnection)驱动的数据库系统。
目前市场上的主流数据库产品都带有ODBC支持,所以JSP可以访问Oracle、MicrosoftSQLServer和MySQL等数据库产品。
第二章网络通讯录的实现
2.1需求分析
由于纸制或电子形式的通讯录,携带不方便,或容易忘记等方面的缺点,所以要开发一个网络通讯录,方便用户提供使用:
用户注册、登录功能
登录后,显示出与当前用户相关的联系人名单
添加新联系人
删除联系人
根据联系人类型查找联系人信息
根据以上要求,开发一个网络通讯录。
2.2数据库实现过程
创建在线通讯录数据库、表,数据库名为:
addressBook。
数据表为:
USERS、BOOK.实现代码如下:
BOOK表:
Users表
USE[addressBook]
GO
/******Object:
Table[dbo].[users]ScriptDate:
12/29/201012:
30:
07******/
SETANSI_NULLSON
SETQUOTED_IDENTIFIERON
SETANSI_PADDINGON
CREATETABLE[dbo].[users](
[userID][int]IDENTITY(1,1)NOTNULL,
[userName][varchar](50)NULL,
[password][varchar](50)NULL,
[realName][varchar](50)NULL,
[sex][varchar](50)NULL,
CONSTRAINT[PK_users]PRIMARYKEYCLUSTERED
(
[userID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
SETANSI_PADDINGOFF
Table[dbo].[book]ScriptDate:
CREATETABLE[dbo].[book](
[id][int]IDENTITY(1,1)NOTNULL,
[name][varchar](50)NULL,
[phone][varchar](50)NULL,
[address][varchar](50)NULL,
[mobilePhone][varchar](50)NULL,
[company][varchar](50)NULL,
[comPhone][varchar](50)NULL,
[comAddress][varchar](50)NULL,
[relation][int]NULL,
[userID][int]NULL,
CONSTRAINT[PK_book]PRIMARYKEYCLUSTERED
[id]ASC
2.3在线通讯录的实体类设计
用户类:
Users.java
通讯录类:
Book.java
2.4在线通讯录的功能
●用户登录验证
●添加新联系人
●删除联系人信息
●查找所有联系人
●按照类别查找联系人
2.5在线通讯录MVC模式设计
模型(Model)——就是业务流程/状态的处理以及业务规则的制定。
视图(View)——视图就是用户交互的界面。
控制器(Controller)——可以理解为从用户接受请求,将模型与视图匹配在一起,共同完成用户的请求。
2.6各阶段具体实现过程
2.6.1项目文件结构图
2.6.2用户登录的实现
用户登录文件为Register.jsp,用户输入用户名和密码后,提交“addUserServlet
”进行验证处理,若用户名已存在则提示“用户名已存在,请重新输入!
”,并返回注册页面,否则,把信息写入数据库,注册新用户。
“addUserServlet”部分代码:
String
userName
=
request.getParameter("
name"
);
password
password"
UserdbManager
UserMng
newUserdbManager();
UserBean
user
UserMng.findUser(userName);
if
(user
!
null&
&
user.getName()!
=null&
user.getName().equals(userName))
{
PrintWriter
out
response.getWriter();
out.println("
<
script>
alert('
用户名已存在,请重新输入!
'
history.back();
/script>
"
out.flush();
out.close();
}
else
intresult
UserMng.AddUser(userName,
password);
if(result
>
0)
request.getRequestDispatcher("
success.jsp"
).
forward(request,esponse);
System.out.println("
添加数据失败"
request.getRequestDispatcher(、"
error.jsp"
).
forward(request,response);
用户登录文件为Login.jsp,用来实现用户的登录。
用户输入用户名和密码后,提交"
LoginServlet"
进行验证处理,验证正确之后。
实现登陆。
具体代码如下:
StringuserName=request.getParameter("
userName"
Stringpassword=request.getParameter("
UserBouserBo=newUserBo();
Usersuser=userBo.valiUser(userName,password);
if(user==null){
//登陆失败
PrintWriterout=response.getWriter();
out.println("
用户名或密码错误,请重新输入!
out.flush();
out.close();
}else{
//登陆成功
HttpSessionsession=request.getSession();
session.setAttribute("
user"
user);
request.getRequestDispatcher("
SelectServlet"
).forward(request,response);
}
登录成功:
2.6.3通讯录名片的插入操作
实现名片的增加操作,涉及到一下页面:
addBook.jsp、AddServlet.java、UsersBo.java。
其中,addBook.jsp为用户所见的界面;
AddServlet.java处理数据实现数据的插入,将新增名片内容写入数据库。
response.setContentType("
text/html;
charset=GBK"
Bookbook=newBook();
request.setCharacterEncoding("
GBK"
book.setName(request.getParameter("
));
book.setSex(request.getParameter("
sex"
book.setPhone(request.getParameter("
phone"
book.setAddress(request.getParameter("
address"
book.setMobilePhone(request.getParameter("
mobilePhone"
book.setCompany(request.getParameter("
company"
book.setComPhone(request.getParameter("
comPhone"
book.setComAddress(request.getParameter("
comAddress"
book.setRelation(Integer.parseInt(request.getParameter("
relation"
)));
book.setUserID(((Users)request.getSession().getAttribute("
)).getUserID());
BookBobookBo=newBookBo();
intresult=bookBo.addBook(book);
PrintWriterout=response.getWriter();
if(result>
0){
//添加成功
添加成功'
location.href='
addBook.jsp'
//添加失败
添加失败'
}
修改联系人信息:
“BookServlet.java”部分代码:
private
BookBean
makeBook(HttpServletRequest
request)
{HttpSession
session
request.getSession();
(UserBean
user=UserBean)
session.getAttribute("
book
newBookBean();
book.setName(request.getParameter("
book.setSex(request.getParameter("
book.setPhone(request.getParameter("
book.setHomeAddr(request.getParameter("
homeAddr"
book.setMobilephone(
book.setEmail(request.getParameter("
email"
book.setCompany(request.getParameter("
book.setComAddr(request.getParameter("
comAddr"
book.setRelation(Integer.
parseInt
(
book.setUserID(user.getId());
returnbook;
“doPost”函数:
type
type"
Intresult
0;
BookdbManager
bookMng
newBookdbManager();
if(type.equals("
del"
))
intbookId
Integer.parseInt
BookId"
result
bookMng.deleteBookById(bookId);
add"
makeBook(request);
bookMng.addBook(book);
update"
{int
bookId
Integer.
(request.getParameter("
bookId"
bookMng.updateBook(book,
bookId);
(result
==
{request.getRequestDispatcher("
).forward(request,
response);
DisplayServlet"
)
.forward(request,response);
2.6.4通讯录名片的查看操作
实现通讯录的查看操作涉及到一下页面:
SelectServlet.java、bookContent.jsp。
其中,SelectServlet.java实现在数据库中查找信息,交给bookContent.jsp向用户展示。
Stringrelation=request.getParameter("
HttpSessionsession=request.getSession(false);
if(session==null||session.getAttribute("
)==null){
response.sendRedirect("
index.jsp"
Listlist=null;
Usersuser=(Users)session.getAttribute("
if(relation!
=null&
!
relation.equals("
)){
//根据用户ID和联系人类型查询列表
list=bookBo.selectAllBook(user.getUserID(),Integer.parseInt(relation));
request.setAttribute("
list"
list);
}else{
list=bookBo.selectAllBook(user.getUserID());
}
bookContent.jsp"
2.6.5通讯录名片的删除操作
实现通讯录名片的删除操作,涉及到一下页面:
DeleteServlet.java,它的作用是当用户触发“删除”按钮后,在数据库中将该条数据删除。
Stringid=request.getParameter("
id"
if(id==null||id.equals("
intresult=bookBo.deleteBook(Integer.parseInt(id));
if(result>
//删除成功
out.println("
alert(删除成功!
SelectServlet'
//删除失败
alert(删除失败!
2.6.6通讯录名片的分类查询操作
实现通讯录名片的分类查询操作,需要一下页面:
SelectServlet.java、bookContent.jsp。
其中,SelectServlet.java通过查询数据库中“book”表中“relation”字段,将用户查询的分类信息交给bookContent.jsp向用户显示,完成交互。
第三章个人总结
个人总结
经过半个学期的坚持不断的对JSP的学习,这段时间,对这个网络通讯录的基本掌握,经过测试,可以使用。
通过这次实习过程,