交友系统论文设计报告_第1页
交友系统论文设计报告_第2页
交友系统论文设计报告_第3页
交友系统论文设计报告_第4页
交友系统论文设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大型软件项目实训报告题目:交友网站系统选题来源:校外指导教师:姓名:班级:学号:辽宁工程技术大学软件学院目录1.序言 31.1选题背景 31.2选题目的及意义 31.3选题完成情况 32.项目需求分析 32.1项目功能需求 32.2项目性能需求 33.项目概要设计 43.1系统功能结构设计 44.项目详细设计 54.1模块1描述 54.1.1功能描述 54.1.2性能描述 54.2界面构建 54.3详细设计 64.3.1利用工厂化模型 64.3.2servlet跳转界面优化设计 64.3.3用户登录时session验证设计 64.3.4文件上传设计 74.3.4用户登录设计 8表1:包与类定义 84.3.5模块设计 94.3.6功能界面 94.3.7主要源代码 125.总结与展望 19参考文献 20成绩评定 204.项目详细设计4.1模块1描述4.1.1功能描述(一)必备功能说明:用户登录设置:查询数据库,匹配密码,验证码。用户注册设置:插入用户基本信息,设置验证码。基本信息库管理:基本信息分为,用户的基本信息,和图片信息。验证用户的安全性:对非登录用户,不能修改用户信息。(二)开发语言与开发环境:MyEclipse、Java、MySql数据库4.1.2性能描述要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。该系统可以实现多个用户同时登录并参看全部用户的信息。实现在本地上传图片功能。登录和注册时进行安全验证使网友能够安全和真实的交到朋友。4.2界面构建1、应用了4个基本的静态的页面,分别是login,list。Regist,listdetial。2、登陆界面的主要功能是查询数据库信息,并进行判断,返回错误或者跳转到用户类表界面。3、注册界的主要功能是向数据库插入数据,并进行安全验证,注册成功跳转到登录界面,并创建保存用户图片的文件夹。4、当用户在进行个别录入、删除或错误输入操作时,会弹出相应对话框提示用户。如当录入成功或删除成功会跳转到登陆界面中,当录入、删除失败以及输入不当时,弹出错误以及简单的错误原因提示用户重新操作。5、页面布局尽量合理,各组件位置分布均匀美观。6、用户列表界面,可以查看所有用户的基本信息,对当前用户的基本信息进行修改和查看。7、用户详细界面,可以对当前用户的信息进行修改和删除,并向数据库进行修改,同时添加或删除当前用户图片。4.3详细设计4.3.1利用工厂化模型如果dao中不只是一个接口的话,我们在service调用实现类就有一定的麻烦,不知道那个实现类完成那个接口。所以就有了工厂模型,factory定义一个工厂工具类,再定一个,configutil工具类,用configutil读perties配置文件,并且提供相应的方法,来方便获得该配置文件的内容。当中ClassLoader类类加载器负责查找.class文件,并且将该文件的内容读入到,方法区,然后依据这些内容构造一个对应的class对象。(ClassLoaderloaderConfigUtil.class.getClassLoader();)类加载器的getResourceAsStream方法,会依据classpath搜索资源文件,并且转换成一个输入流。这样就可以通过接口找出实现类的名称,在通过factroy类,利用反射创建出一个实例。反射可以应用一个类的名字创建一个实例。4.3.2servlet跳转界面优化设计我们现在在web.xml文件中用到了太多的跳转,代码太多。如何让一个servlet处理多种不同的请求,首先获取到地址页面的名称,Stringaction=uri.substring(uri.indexOf("/"),uri.lastIndexOf("."));在service方法里面,分析请求资源路径。然后用ifelse判断页面的action名称就可以了。在web.xml文件中<url-pattern>*.action</url-pattern>,匹配所有以.action结尾的请求。这样就实现了让一个servlet处理多种不同的请求。4.3.3用户登录时session验证设计在进行登录操作中,如果直接输入list.jsp访问,会直接进入到列表界面,登录就失去意义了,所以要在登录时增加一个验证,session验证,浏览器在访问服务器的时候,服务器会先创建一个

session对象(该对象有一个id,其值是唯一的,一般称之为sessionId) ,接下来服务器默认会使用cookie机制将sessionId发送给浏览器,浏览器会将这个sessionId保存在内存里面;当浏览器再次访问服务器的时候,会将sessionId发送给服务器,服务器会依据sessionId找到之前创建的session对象。具体的步骤,首先获得一个session,HttpSessions=request.getSession(booleanflag);flag=true时,服务器会检查请求当中是否包含sessionId,如果没有,则创建一个session对象;如果有,服务器会依据sessionId查找对应的session对象,如果找到了,则返回,找不到,会创建一个新的session对象。当flag=false时,找不到,返回null。 进行session验证,在登录成功以后,在session对象上绑订相关的数据。session.setAttribute("user",user);绑定一个user,然后对list页面进行session验证,Objectobj=session.getAttribute("user"); if(obj==null){ //没有登录,则跳转到登录页面 response.sendRedirect("login.jsp"); return; }4.3.4文件上传设计首先些个上传所要用到的jsp。其中用到浏览框,设置时要注意对于表单,设置enctype="multipart/form-data",并且,表单的提交方式必须是"post"。这是html里面的规定。写好jsp后在服务器端注意,不能够直接使用requset.getParameter(Stringname)获取参数值。需要用InputStreamips=request.getInputStream//获得一个2进制字节码。具体步骤,首先创建一个解释器,提供解析是的缺省配置。FileItemFactoryfactory=newDiskFileItemFactory();ServletFileUploadsfu=newServletFileUpload(factory);这样对象sfu.parseRequest(request)将每一个jsp中表单的数据封装到一个对应的FileItem对象当中。我们这里集合中就有两个类型的数据,一个是普通的文本框,另一个要上传文件的浏览框。判断是否是普通的表单域item.isFormField()。item是个集合,在判断时需要对它进行遍历。根据逻辑路径获得实际部署的物理路径ServletContextsctx=getServletContext();获得实际部署时的物理路径Stringpath=sctx.getRealPath("upload");获得文件名,Stringfilename=item.getName();生成文件写入到硬盘当中Filefile=newFile(path+"//"+filename);item.write(file);这样就不用生硬的写出绝对路径,形成了动态的生成。4.3.4用户登录设计应用以前些的findbyusername()方法,根据username查询所有的user属性,在service方法中获得username和pwd,调用findbyusername()看看所得到的密码是否相同,如果相同则成功登录跳转到list界面,不同报错,写个转发,用request绑定一句话,转发到login。jsp页面,在用户登录文本框后面转发error-jsp,输出写好的话,加上<%=(msg==null?"用户名不能为空":msg)%>解决用户为空的问题。本系统采用java编程,主要编程类与页面信息的设计如下:表1:包与类定义包名类名功能daoPicDAO.java图片功能实现类UserDAO.java用户功能实现类EntitiyPic.java图片实体类User.java用户实体类TagDateTag.java时间标签类SessionValidate.javaSession验证标签UtilDBUtil.java数据库连接工具类WebActionServlet.javaServlet实现类CheckCodeServlet.java验证码类表2:页面定义包名类名功能Jsp页面head.jsp页面的表头Index.jsp页面索引Login.jsp登录页面Regist.jsp注册界面User_list.jsp用户列表界面userDetail.jsp用户详细界面4.3.5模块设计(1)用户注册模块此模块是添加新的用户,填写用户个人基本信息,包括姓名、性别、电话、密码、年龄、对方基本要求,并添加到用户数据库中。(2)用户登录模块如果用户要使用为注册用户提供的功能,那么在使用之前必须登录。用户只要输入用户名、密码就可以了。若用户输入的以上两项与数据库中保存的相符,则表明用户登录成功,可以开放全部前台子系统;如果不符,则登录失败。(3)用户,图片文件实现类模块在此模块中包含通过用户名,用户id查找用户全部信息,保存用户信息。用户登录时通过用户名查找用户密码,并进行验证,注册用户时调用save()方法,保存数据信息。在上传文件中通过PicDAO中保存图片文件到注册时指定的文件夹。(4)用户详细资料模块用户详细资料模块对用户的基本信息进行,删除、修改和添加图片的操作。4.3.6功能界面登陆界面注册界面用户列表界面详细介绍界面4.3.7主要源代码主要servlet代码:packageweb;importjava.io.File;importjava.io.IOException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importmons.fileupload.FileItem;importmons.fileupload.FileUploadException;importmons.fileupload.disk.DiskFileItemFactory;importmons.fileupload.servlet.ServletFileUpload;importmons.beanutils.BeanUtils;importdao.PicDAO;importdao.UserDAO;importentity.Pic;importentity.User;publicclassActionServletextendsHttpServlet{ publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ request.setCharacterEncoding("utf-8"); Stringuri=request.getRequestURI(); Stringaction=uri.substring( uri.lastIndexOf("/"),uri.lastIndexOf(".")); if(action.equals("/regist")){ Stringusername=request.getParameter("username"); UserDAOdao=newUserDAO(); try{ Useruser=dao.findByUsername(username); if(user!=null){ request.setAttribute( "regist_error","注册错误"); request.getRequestDispatcher("regist.jsp") .forward(request,response); }else{ user=newUser(); BeanUtils.populate(user, request.getParameterMap()); intid=dao.save(user); /*Stringpath=getServletContext().getRealPath("upload"); Filefile=newFile(path+"//"+"pic_"+id); if(!file.exists()) file.mkdirs();*/ response.sendRedirect("login.jsp"); } }catch(Exceptione){ e.printStackTrace(); thrownewServletException(e); } }elseif(action.equals("/login")){ Stringusername=request.getParameter("username"); Stringpwd=request.getParameter("pwd"); UserDAOdao=newUserDAO(); try{ Useruser=dao.findByUsername(username); if(user!=null&&user.getPwd().equals(pwd)){ HttpSessionsession= request.getSession(); session.setAttribute("user",user); response.sendRedirect("list.do"); }else{ request.setAttribute("login_error", "登陆错误"); request.getRequestDispatcher("login.jsp") .forward(request,response); } }catch(Exceptione){ e.printStackTrace(); } }elseif(action.equals("/list")){ UserDAOdao=newUserDAO(); try{ List<User>users=dao.findAll(); request.setAttribute("users",users); request.getRequestDispatcher("user_list.jsp") .forward(request,response); }catch(Exceptione){ e.printStackTrace(); thrownewServletException(e); } }elseif(action.equals("/userDetail")){ intid=Integer.parseInt(request.getParameter("id")); UserDAOdao=newUserDAO(); PicDAOdao2=newPicDAO(); try{ Useruser=dao.findByUserId(id); List<Pic>pics=dao2.findPics(id); request.setAttribute("user",user); request.setAttribute("pics",pics); request.getRequestDispatcher("userDetail.jsp") .forward(request,response); }catch(Exceptione){ e.printStackTrace(); thrownewServletException(e); } }elseif(action.equals("/upload")){ intuserId=Integer.parseInt(request.getParameter("id")); DiskFileItemFactoryfactory= newDiskFileItemFactory(); ServletFileUploadsfu= newServletFileUpload(factory); try{ List<FileItem>items= sfu.parseRequest(request); for(inti=0;i<items.size();i++){ FileItemcurr=items.get(i); if(curr.isFormField()){ // }else{ Stringpath= getServletContext().getRealPath("upload"); StringfileName=curr.getName(); Filefile=newFile(path+"/pic_"+userId); if(!file.exists()){ file.mkdirs(); } System.out.println(file); fileName=fileName .substring(fileName.lastIndexOf("/")+1); curr.write(newFile(path+"//"+"pic_"+userId +"//"+fileName)); PicDAOdao=newPicDAO(); Picpic=newPic(); pic.setPicName(fileName); pic.setUserId(userId); dao.save(pic); response.sendRedirect( "userDetail.do?id="+userId); } } }catch(Exceptione){ e.printStackTrace(); } }elseif(action.equals("/delete")){ intuserId=Integer.parseInt(request.getParameter("userId")); PicDAOdao=newPicDAO(); try{ List<Pic>pic=dao.findPics(userId); // dao.delete(pic.get(userId)); }catch(Exceptione){ e.printStackTr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论