《JSP程序设计报告》由会员分享,可在线阅读,更多相关《JSP程序设计报告(43页珍藏版)》请在金锄头文库上搜索。
1、 . . 程序设计报告 课程名称: JSP 程序设计 设计题目: 网络交友系统 学 号 : 1325332146 姓 名 : 宇超 学 院 : 信息与控制工程学院 . . J S P设计报告书 一.实训目的 1.通过课程设计把JSP 程序设计这门课所学的容融会贯通,学会 JSP设计程序、开发应用软件的基本能力。 2通过设计能使学生更好掌握 JSP 面向对象基本编程技术和方法。 3培养学生查阅文献资料及编写技术报告的能力。 二.实训项目 网络交友 三.实训要求 报告体现容: 1、 系统分析 需求分析 可行性分析 经济可行性 技术可行性(采用开发模式的特点) 2、系统设计 系统目标 . . 系统功
2、能结构(文字+结构图) 系统流程图 系统预览(几个主要页面抓图) 文件夹组织结构 3、数据库设计 数据库需求分析 数据库概念设计 数据库逻辑结构设计 4、模块设计(各个模块及主要代码) 5、简要总结及自我评价 四.进度安排 1、代码编写调试(4.5 天):程序代码编写、调试、测试。 2、撰写报告(1 天):总结课程设计任务和容。 1、系统分析 网络交友系统,采用 MVC 模式实现各个模块,其目的是为了掌握 web 应用中常用基本开发方法。JSP 引擎为 Tomcat6.0;数据库是 SQL Server 2000;数据库连接操作使用加载 Java 数据库驱动程序方式。 2、系统设计 1) 系统
3、功能结构 网络交友平台主页:为用户提供一个交友的新平台,其导航作用。 会员注册:新会员填写表单,包括会员名、Email 地址等信息。如果输 . . 入的会员名已经被其他用户注册使用,系统提示新用户更改自己的会员名。 会员登录:输入会员名,密码。如果用户输入的会员名或密码错误,系统将显示错误信息。 上传照片:如果登陆成功,用户可以使用该模块上传自己的照片。 返回主页:未成功注册的用户可返回首页。 2) 系统流程图 模块流程图如下: 采用的 MVC 开发模式,流程图如下: . . 3)文件夹组织结构 本次设计使用的 Web 服务目录是 mkfriend,是在 Tomcat 安装目录的webapps
4、 目录下建立 Web 服务目录。 mkfriendWEB-INFclassesmybean,myservletdata,control 3、模块设计(各个模块及主要代码、截图) 1) 数据库设计 使用 SQL Server 2000 建立一个数据库 Welcome,该库有一个表:member 表。会员的注册信息存入 member 表中,member 的主键是logname,member 表的详细结构设计,各个字段值的说明如下: logname:存储会员登录名字,password:存储会员登录密码,phone:存储会员的,email:存储会员的 email 地址,message:存储会员的简历。
5、 2) 网络交友平台主页 主要页面运行效果如下: . . 代码如下: head.txt(导航条文件,是嵌入到自己的页面中,便于维护的。) 网络交友平台 会 员 注 册 会 员 登 录 上 传 照 片 浏 览 会 员 修 改 注 册 信 息 修 改 密 码 退 出 登 录 返 回 主 页 index.jsp(有导航条,欢迎语和图片 05.jpg 组成。) . . 欢迎您来这里结交朋友 3) 配置文件 本次设计的 Servlet 类的包名均为 myservlet.control,需要配置此文件,代码如下:Web.Xml register myservlet.control.HandleRegist
6、er register /helpRegister login myservlet.control.HandleLogin . . login /helpLogin upload myservlet.control.HandleUpload upload /helpUpload lookRecord myservlet.control.HandleDatabase lookRecord /helpShowMember 4) 会员注册 . . 当新会员注册时,该模块要求用户必须输入会员名、密码信息,否则不允许注册,用户的注册信息被存入数据库的 member 中。 主要页面运行效果如下: . .
7、代码如下: Javabean(模型)用来描述用户注册信息。代码如下: Register.java package mybean.data; public class Register String logname=,password=,email=,phone=,message=; String backNews; public void setLogname(String name) logname=name; public String getLogname() return logname; public void setPassword(String pw) password=pw;
8、public String getPassword() return password; . . public void setEmail(String em) email=em; public String getEmail() return email; public void setPhone(String ph) phone=ph; public String getPhone() return phone; public void setMessage(String m) message=m; public String getMessage() return message; pu
9、blic String getBackNews() return backNews; . . public void setBackNews(String s) backNews=s; Javaservlet(控制器)用来连接数据库,将用户提交的信息写入到member 表中,并将转发给 show.jsp 页面查看注册反馈信息。代码如下: HandleRegister.java package myservlet.control; import mybean.data.*; import java.sql.*; import java.io.*; import javax.servlet.*;
10、import javax.servlet.http.*; public class HandleRegister extends HttpServlet public void init(ServletConfig config) throws ServletException super.init(config); try Class.forName(.microsoft.sqlserver.jdbc.SQLServerDriver); catch(Exception e) . . public String handleString(String s) try byte bb=s.getB
11、ytes(iso-8859-1); s=new String(bb); catch(Exception ee) return s; public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException Connection con; Statement sql; Register reg=new Register(); request.setAttribute(register,reg); String logname=request.get
12、Parameter(logname).trim(), password=request.getParameter(password).trim(), email=request.getParameter(email).trim(), phone=request.getParameter(phone).trim(), message=request.getParameter(message); String . . uri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=Welcome; if(logname=null) logname=; if(pass
13、word=null) password=; boolean isLD=true; for(int i=0;ilogname.length();i+) char c=logname.charAt(i); if(!(c=a)|(c=A)|(c=0) isLD=false; boolean boo=logname.length()0&password.length()0&isLD; String backNews=; try logname=handleString(logname); password=handleString(password); phone=handleString(phone
14、); email=handleString(email); message=handleString(message); String insertRecord . . =(+logname+,+password+,+email+,+phone+); con=DriverManager.getConnection(uri,sa,sa); String insertCondition=INSERT INTO member VALUES+insertRecord; sql=con.createStatement(); if(boo) int m=sql.executeUpdate(insertCo
15、ndition); if(m!=0) backNews=注册成功; reg.setBackNews(backNews); reg.setLogname(logname); reg.setPassword(password); reg.setEmail(email); reg.setPhone(phone); reg.setMessage(message); else backNews=信息填写不完整或名字中有非法字符; reg.setBackNews(backNews); . . con.close(); catch(SQLException exp) backNews=该会员名已被使用,请您
16、更换名字+exp; reg.setBackNews(backNews); RequestDispatcher dispatcher= request.getRequestDispatcher(show.jsp); dispatcher.forward(request,response); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException doPost(request,response); JSP 页面(视图)本模块的视图有
17、两个 JSP 页面:register.jsp 和show.jsp。register.jsp 页面负责提供输入注册信息界面;show.jsp 负责显示注册反馈信息。代码如下: register.jsp . . 输入您的信息,用户名称必须由字母和数字组成,带*号项必须填写。 会员名称 : * 设置密码: * 电子: . . 联系: 输入您的简历和交友标准: show.jsp . . 注册的会员名称: 注册的电子: 注册的联系: 您的简历和交友标准: . . 5) 会员登录 用户可在该模块输入自己的会员名和密码,系统将对会员名和密码尽享验证,如果输入用户名或密码有错误,将提示用户输入的用户名和密码不
18、正确。 主要页面运行效果如下: . . 代码如下: Javabean(模型)用来描述用户登录信息。代码如下: Login.java package mybean.data; public class Login String logname, password, backNews=; boolean success=false; public void setLogname(String name) logname=name; public String getLogname() return logname; . . public void setPassword(String pw) pa
19、ssword=pw; public String getPassword() return password; Public String getBackNews() return backNews; public void setBackNews(String s) backNews=s; public void setSuccess(boolean b) success=b; public boolean getSuccess() return success; Javaservlet(控制器)用来连接数据库,查询 member 表,并验证用户输入的会员名和密码是否在 member 表中,
20、将用户转发到showSuccess.jsp 页面查看登录反馈信息。代码如下: . . HandleLogin.java package myservlet.control; import mybean.data.*; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HandleLogin extends HttpServlet public void init(ServletConfig config) throws ServletExc
21、eption super.init(config); try Class.forName(.microsoft.sqlserver.jdbc.SQLServerDriver); catch(Exception e) public String handleString(String s) trybyte bb=s.getBytes(iso-8859-1); s=new String(bb); catch(Exception ee) return s; . . public void doPost(HttpServletRequest request, HttpServletResponse r
22、esponse) throws ServletException,IOException Connection con; Statement sql; Login loginBean=null; String backNews=; HttpSession session=request.getSession(true); tryloginBean=(Login)session.getAttribute(login); if(loginBean=null) loginBean=new Login(); session.setAttribute(login,loginBean); catch(Ex
23、ception ee) loginBean=new Login(); session.setAttribute(login,loginBean); String logname=request.getParameter(logname).trim(), password=request.getParameter(password).trim(); boolean ok=loginBean.getSuccess(); logname=handleString(logname); . . password=handleString(password); if(ok=true&logname.equ
24、als(loginBean.getLogname() backNews=logname+已经登录了; loginBean.setBackNews(backNews); else String uri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=Welcome; boolean boo=(logname.length()0)&(password.length()0); try con=DriverManager.getConnection(uri,sa,sa); String Condition= select * from member where
25、logname= +logname+and password= +password+; sql=con.createStatement(); if(boo) ResultSet rs=sql.executeQuery(Condition); boolean m=rs.next(); if(m=true) backNews=登录成功; loginBean.setBackNews(backNews); . . loginBean.setSuccess(true); loginBean.setLogname(logname); else backNews=您输入的用户名不存在,或密码不匹配; log
26、inBean.setBackNews(backNews); loginBean.setSuccess(false); loginBean.setLogname(logname); loginBean.setPassword(password); else backNews=您输入的用户名不存在,或密码不匹配; loginBean.setBackNews(backNews); loginBean.setSuccess(false); loginBean.setLogname(logname); loginBean.setPassword(password); con.close(); catch
27、(SQLException exp) backNews=+exp; . . loginBean.setBackNews(backNews); loginBean.setSuccess(false); RequestDispatcher dispatcher= request.getRequestDispatcher(show.jsp); dispatcher.forward(request,response); public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletExc
28、eption,IOException doPost(request,response); JSP 页面(视图)本模块的视图有两个 JSP 页面:login.jsp 和showSuccess.jsp 。 login.jsp页 面 负 责 提 供 输 入 登 录 界 面 ;showSuccess.jsp 负责显示登录反馈信息。代码如下: login.jsp 请你登录 会 员 名称: 输 入 密 . . 码: showSuccess.jsp 登 录 会 员 名 称 : 登 录 会 员 名 称 : 登 录 会 员 密 码 : 6) 上传照片 用户可在该模块上传自己的照片,如果 member 中已经存有
29、一幅照片,新上传的照片将替换原有的照片。用户在注册时,注册模块给会员的照片是默认的一幅图像:public.jpg. 主要页面运行效果如下: . . 代码如下: Javabean(模型)用来描述用户上传的照片图像文件的有关信息。 代码如下: UploadFile.java package mybean.data; public class UploadFile String fileName,savedFileName,backNews=; public void setFileName(String name) fileName=name; public String getFileName(
30、) return fileName; public void savedFileName(String name) savedFileName=name; . . public String getsavedFileName() return savedFileName; public String getBackNews() return backNews; public void setBackNews(String s) backNews=s; Javaservlet(控制器)该 servlet 的对象的名字是 upload,upload控制器负责检查用户是否是登录用户,如果用户没有登录
31、,upload 控制器将把用户定向到登录页面 login.jsp,对于登录的用户,upload 控制器负责把用户提交的图像文件保存到当前 Web 服务目录的特定子目录 image 中,保存的图像文件名字由用户上传的文件名字添加上用户的会员名作为前缀而构成。 Upload 控制器同时负责将保存的图像文件名存入 member 表,然后将用户转发至 showUploadMess.jsp 页面查看上传操作的反馈信息。代码如下: HandleUpload.java package myservlet.control; import mybean.data.*; . . import java.sql.*
32、; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HandleUpload extends HttpServlet public void init(ServletConfig config) throws ServletException super.init(config); try Class.forName(.microsoft.sqlserver.jdbc.SQLServerDriver); catch(Exception e) public void doPos
33、t(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException HttpSession session=request.getSession(true); Login login=(Login)session.getAttribute(login); boolean ok=true; if(login=null) ok=false; response.sendRedirect(login.jsp); . . if(ok=true) String logname=log
34、in.getLogname(); uploadFileMethod(request,response,logname); public void uploadFileMethod(HttpServletRequest request, HttpServletResponse response,Stringlogname) throws ServletException,IOException UploadFile upFile=new UploadFile(); String backNews=; try HttpSession session=request.getSession(true)
35、; request.setAttribute(upFile,upFile); String tempFileName=(String)session.getId(); File f1=new File(tempFileName); FileOutputStream o=new FileOutputStream(f1); InputStream in=request.getInputStream(); byte b=new byte10000; int n; while(n=in.read(b)!=-1) o.write(b,0,n); . . o.close(); in.close(); Ra
36、ndomAccessFile random=new RandomAccessFile(f1,r); int second=1; String secondLine=null; while(second=2) secondLine=random.readLine(); second+; int position=secondLine.lastIndexOf(); if(position=-1) response.sendRedirect(upload.jsp); return; StringfileName= secondLine.substring(position+1,secondLine.
37、length()-1); byte cc=fileName.getBytes(ISO-8859-1); fileName=new String(cc); fileName=fileName.replaceAll(,); String checkedStr=fileName.substring(0,fileName.indexOf(.); . . boolean isLetterOrDigit=true; for(int i=0;icheckedStr.length();i+) char c=checkedStr.charAt(i); if(!(c=a)|(c=A)|(c=0) isLetter
38、OrDigit=false; break; if(isLetterOrDigit=false) response.sendRedirect(upload.jsp); return; String savedFileName=logname.concat(fileName); random.seek(0); long forthEndPosition=0; int forth=1; while(n=random.readByte()!=-1&(forth=4) if(n=n) forthEndPosition=random.getFilePointer(); forth+; . . File d
39、ir=new File (D:/apache-tomcat-6.0.13/webapps/mkfriend/image); dir.mkdir(); File file=dir.listFiles(); for(int k=0;k=0)&(j=6) mark-; random.seek(mark); n=random.readByte(); if(n=n) endPosition=random.getFilePointer(); . . j+; random.seek(forthEndPosition); long startPoint=random.getFilePointer(); whi
40、le(startPointendPosition-1) n=random.readByte(); random2.write(n); startPoint=random.getFilePointer(); random2.close(); random.close(); String uri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=Welcome; Connection con=DriverManager.getConnection(uri,sa,sa); Statement sql=con.createStatement(); ResultSe
41、t rs= sql.executeQuery(SELECT*FROM member where logname=+logname+); if(rs.next() if(isLetterOrDigit) . . int mm=sql.executeUpdate(UPDATE member SET pic=+savedFileName+ where logname=+logname+); if(mm!=0) backNews=fileName+成功上传; upFile.setFileName(fileName); upFile.setBackNews(backNews); con.close();
42、 f1.delete(); catch(Exception exp) backNews=+exp; upFile.setBackNews(backNews); RequestDispatcher dispatcher= request.getRequestDispatcher(showUploadMess.jsp); dispatcher.forward(request,response); . . public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException
43、,IOException doPost(request,response); JSP 页面(视图)本模块的视图有两个 JSP 页面:upload.jsp 和showUploadMess.jsp。upload.jsp 页面负责提供上传文件的表单;showUploadMess.jsp负责显示上传文件反馈信息。代码如下: upload.jsp 文件将被上传 web 服务目录 mkfriend 的子目录 image 中。 选择要上传的图像照片文件 (名字不可以含有非 ASCII 码字符,例如汉字等); . . showUploadMess.jsp 上传的文件名字: 保 存 后 的 文 件 名 字 : img src=image/width=163 height=154图像效果 . .