版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.项目实训的目的与要求1.1项目实训目的课程设计总的目的在于加深对网页设计与制作的基本知识的理解,网页设计与制作技能综合运用和提高,通过真实工作任务,使我们能设计出有一定水平的网页并解决培养解决实际问题的能力,掌握实际网页设计与制作开发流程和开发方法。具体的课程设计应达到以下目的:1.提高我们在实际操作中收集信息,对信息进行价值判断,信息整理、加工的能力。2.在实际的项目任务中培养网页设计方面的素养。3.在实际的项目任务中使我们网页编程和制作的能力得到提高。4.培养相关知识和技能的综合应用能力。5.掌握运用JAVAEE语言及数据库原理知识进行系统分析和设计的方法课程的要求在于:考验我们上课所学知识,我们能否独自完成一个网页系统的开发。我们要熟练应用JAVAEE所学的知识,与数据库相结合,制作一个具有实用和美观双重功能的网页系统。2.课题说明2.1需求分析博客是Blog的中文译名,随着网络的发展,博客成为网民不可缺少的一部分。目前主流门户网站,例如网易、新浪都开通了自己的博客频道。除此之外,还出现了博客网站,也就是说在博客网站中仅能写博客和看别人的博客,例如IT技术最有名的博客园。在本章中我们就来开发一个类似的网站系统。求贤人才网是一家专业于IT方向招聘的网站,为了更好的招聘到合适的人才,推出博客业务。求贤人才网通过博客用户的技术水平来判断他是否能够胜任相应的工作,公司用户也可以通过看博客用户的文章看到相应的技术水平。求贤人才网将通过这种方式,招揽更多的人才,从而增加自己的招聘业务量。对于求贤人才网来说,最大的需求就是让更多的用户浏览和注册,并且发表自己的博客文章。对于用户而言,首先要能浏览其他用户发表的文章,并且这项操作是应该不需要登录的。用户注册并登录后,要能够发表自己的信息,从而能够提供给别人查看。2.2开发工具与技术介绍硬件平台:CPU:P41.8GHz;内存:256MB以上。软件平台:操作系统:Windows7Server;数据库:MySQL;开发工具包:DreamweaverCS4,PhotoshopCS4,Eclipse;服务器:IIS5.1;浏览器:IE5.0及以上版本,推荐使用IE6.0;分辨率:最佳效果1024×768。3.总体设计3.1系统项目规划该博客网站的功能主要是为了博客用户设计开发的,用户进入博客网站后,有三种选择,注册新用户,登录和浏览博客。通过注册和登录用户可以获取自己博客空间,如果不进行这些操作,用户也可以浏览其他用户的博客内容。进入自己博客中,用户要能够完成如下功能● 对自己的博客进行个性化设计● 发表日志● 上传图片和对图片进行浏览在博客首页中,是不区分用户是否登录的,用户用能够完成如下功能:● 浏览博客网站的所有文章● 浏览某一博客用户发表的所有文章● 浏览某一博客用户上传的图片● 对文章进行评论● 查看文章的点击率● 查看文章的评论量3.2系统功能结构图本系统首先需要对用户进行身份验证,验证时判断用户是以注册用户还是普通游客。如果已是注册用户,则跳转到对应的个人博客的页面;如果是游客,则直接进入到博客网站首页。下面是博客网站的功能结构图。身份身份识别是否为注册用户是否为注册用户是否个人博客页面个人博客页面博客网站首页博客网站首页浏览所有文章进入他人博客发表文章个性化设置上传图片浏览所有文章进入他人博客发表文章个性化设置上传图片查看用户图片发表评论查看文章信息查看用户图片发表评论查看文章信息图3.1模块结构图3.3数据库设计本系统一共设计出5个实体,分别是用户实体、文章实体、个性化实体、评论实体以及点击量实体。用户表用来存储博客系统中建立自己的博客,并进行博客操作的客户,包括用户名、密码、昵称、密码保护问题和密码保护回答字段。表3.1用户表字段名数据类型是否主键描述username文本(varchar)是用户名password文本(varchar)否登录密码nickname文本(varchar)否昵称question文本(varchar)否密码保护问题answer文本(varchar)否密码保护回答个性设置表用来储存用户对个人博客进行个性化设置的基本信息,包括用户名、博客标题和个性签名。表3.1个性设置表字段名数据类型是否主键描述username文本(varchar)是用户名blogtitle文本(varchar)否博客标题idiograph文本(varchar)否个性签名文章表用来存储博客系统中博客文章的基本信息,包括文章的Id、文章标题、文章内容、发表用户名、发表时间和评论数。表3.1文章表字段名数据类型是否主键描述Id整数(int)是文章Idtitle文本(varchar)否文章标题content文本(text)否文章内容username文本(varchar)否发表用户名date日期否发表时间hasread整数(int)否评论数评论表用来存储博客系统中所有评论的基本信息,包括评论Id、评论文章、评论内容和评论用户。表3.1评论表字段名数据类型是否主键描述Id整数(int)是评论IdAid整数(int)否所属文章IDcontent文本(text)否评论内容username文本(varchar)否评论用户点击量表用来存储博客系统中点击文章的基本信息,包括ID,文章ID,点击者IP和点击时间。表3.1点击量表字段名数据类型是否主键描述Id整数(int)是点击IDAid整数(int)否所属文章IDip文本(varchar)否点击者IPtime日期否点击时间系统实现4.1博客系统登录界面如下图所示图4.1博客系统登录界面登录界面关键代码如下:publicStringexecute()throwsException{ Useruser=newUser(); user.setUsername(username); user.setPassword(password); //获得request HttpServletRequestrequest=ServletActionContext.getRequest(); if(userService.loginUser(user)){ request.setAttribute("url","user/getBlogInfo.action"); request.setAttribute("info","登陆成功"); //将username保存到session范围中// HttpSessionsession=request.getSession(); Mapsession=ActionContext.getContext().getSession();// session.setAttribute("username",username); session.put("username",username); returnSUCCESS; }else{ request.setAttribute("url","login.jsp"); request.setAttribute("info","登陆失败"); returnERROR; } }4.2博客网站首页进入登录界面后,可以选择不登录,而是直接单击“博客首页”,从而进入博客系统首页,在博客系统首页中可以查看到该博客的网站中已经发表的博客文章,在博客网站的右半部分还可以看到文章的发表时间、点击量、评论和发表用户。图4.2博客网站首页下面是博客网站页面的关键代码:publicStringexecute()throwsException{ Pagepage=newPage(); //分页信息 page.setCurrentPage(0); //设置当前页为第一页 page.setEveryPage(10); //每页显示10条记录 Resultresult=articleService. showArticleByPage(page);//通过调用业务逻辑组件来完成查询 page=result.getPage(); List<Article>all=result.getList();//获得文章结果集 StringfilePath=ServletActionContext. getServletContext().getRealPath("/rss.xml");//设置订阅文件地址 CreateRss.publishRss(all,filePath);//写入订阅文件 returnthis.SUCCESS; }4.3新博客注册界面游客可以点击新用户注册来注册属于自己的用户。点击新用户注册就可以进行新用户注册。图4.3新博客注册界面下面是新博客注册页面的关键代码:publicStringexecute()throwsException{ //封装一个user对象 Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setNickname(nickname); user.setQuestion(question); user.setAnswer(answer); //获得request HttpServletRequestrequest=ServletActionContext.getRequest(); if(userService.registerUser(user)){ request.setAttribute("url","login.jsp"); request.setAttribute("info","注册成功"); returnSUCCESS; }else{ request.setAttribute("url","register.jsp"); request.setAttribute("info","注册失败"); returnERROR; } }4.4个性化设置界面登陆博客成功后,这是将进入到自己的博客页面,首先是让用户进行个性化设置。图4.4个性化设置界面下面是个性化设计界面的关键代码:publicStringexecute()throwsException{// //获得request// HttpServletRequestrequest=ServletActionContext.getRequest();// //获得session// HttpSessionsession=request.getSession();// //获得username// Stringusername=(String)session.getAttribute("username"); Mapsession=ActionContext.getContext().getSession(); Stringusername=(String)session.get("username"); BlogInfoblogInfo=newBlogInfo(); //设置用户名 blogInfo.setUsername(username); //设置博客标题 blogInfo.setBlogtitle(blogtitle); //设置个性签名 blogInfo.setIdiograph(idiograph); //调用业务逻辑组件来完成设置 blogInfoService.setBlogInfo(blogInfo); returnthis.SUCCESS; }4.5写日志页面单击“用户首页”超链接,可以查看自己已写完的所有博客文章,这是和游客相同的操作,单击“写日记”超链接,就会进入写日记页面。图4.5写日志页面下面是写日记界面的关键代码:publicStringexecute()throwsException{ Mapsession=ActionContext.getContext().getSession(); Stringusername=(String)session.get("username"); //封装一个PO类的对象 Articlearticle=newArticle(); article.setTitle(title); article.setContent(content); article.setUsername(username); article.setDate(newDate()); article.setHasread(0); articleService.addArticle(article); returnthis.SUCCESS; }}4.6相册页面在个人博客中,单击“相册”超链接,就会进入到相册页面。图4.6相册页面下面是相册页面的关键代码:publicStringexecute()throwsException{//获得username Mapsession=ServletActionContext.getContext().getSession(); Stringusername=(String)session.get("username");//创建一个输入流 InputStreamis=newFileInputStream(myFile);//设置文件保存目录 Filetofile=newFile(photoPath,filename);//使用输出流来包装目标文件 OutputStreamos=newFileOutputStream(tofile); byte[]buffer=newbyte[1024]; intlength=0; while((length=is.read(buffer))>0){ os.write(buffer,0,length); }//关闭输入流 is.close();//关闭输出流 os.close(); returnthis.SUCCESS;}开发技巧与实现方法5.1在Struts中使用拦截器进行用户登录的实现在网站中有些功能是需要用户必须登录才能操作的,例如博客网站中的发布文章,因为该操作是不定位置的,所以直接在该功能上加上一个控制层是不合适的。如果要完成该功能,在Struts2中就是采用拦截器的概念,在操作前先经过拦截器,通过拦截器判断用户是否登录。如果已经登录,则可以通过;如果没有登录,则返回让用户进行登录。packageerceptor;importjava.util.Map;importcom.opensymphony.xwork2.Action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importerceptor.AbstractInterceptor;publicclassUserInterceptorextendsAbstractInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{ ActionContextcontext=invocation.getInvocationContext(); Mapsession=context.getContext().getSession(); Stringusername=(String)session.get("username"); if(username==null||"".equals(username)){ returnAction.LOGIN; }else{ returninvocation.invoke(); } }}5.2在拦截器中进行配置拦截器开发完成后,还是不能起到效果的,还需要在Struts配置文件struts.xml中进行配置。<interceptors> <interceptorname="userInterceptor"class="erceptor.UserInterceptor"></interceptor> </interceptors>5.3利用Hibernate技术进行个人博客操作当进行个人博客操作时,是要将用户输入的信息保存到数据库中的。在本系统项目中,进行数据库操作是通过Hibernate技术完成的,从而使DAO方法应用也更加简单。importcom.sanqing.po.User;publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{publicvoidadd(Useruser){ this.getHibernateTemplate().save(user); }publicvoiddelete(Useruser){}publicListqueryAll(){ returnnull; }publicUserqueryByID(Stringusername){ Listlist=this.getHibernateTemplate().find("selectuserfromUseruserwhereuser.username='"+username+"'"); if(list.size()==0){ returnnull; }else{ return(User)list.get(0); } }}5.4进行个人博客操作后,进行配置修改因为本项目是采用Spring进行处理,所以需要配置文件中对DAO进行配置。<beanid="userDAO"class="com.sanqing.dao.UserDAOImpl"> <propertyname="hibernateTemplate"> <refbean="hibernateTemplate"/> </property> </bean>5.5在Action中进行超链接的调用在显示所有文章页面中,每一个文章标题都是超链接,单击文章标题就会显示该文章的所有信息,包括内容、评论和点击数。这些都将在查看文章Action中进行调用。packagecom.sanqing.dao;publicclassArticleDAOImplextendsHibernateDaoSupportimplementsArticleDAO{publicArticlequeryById(intid){ Listfind=this.getHibernateTemplate().find("selectartfromArticleartwhereart.id=?",id); return(Article)find.get(0); }}项目实训总结通过本次课程设计,我感受颇多,尽管上课时也认真听了老师的讲课,但是已开始面对自己的题目时,还是有些不知所措,都不知道如何下手,后来去图书馆借了几本相关的书籍,心里在感觉有了一些底。经过这差不多四个星期来的学习与编码,总算还是收获不少,对JavaEE的认识也更加的深刻了。JSP是一门新技术,他基于JavaServlet以及整个JavaEE框架体系的Web开发技术。从网上得知JavaEE的中文问题历史悠久,连绵不绝,至今也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季开学初中开学第一课(绿色出行)课件
- 2026年秋季开学幼儿园小小兵马步游戏课件
- 2026秋部编版三年级上册语文第一单元能力检测情境卷
- 基于专业匹配度的重点大学资源分布分析
- 全球环境变动下的供应链韧性评估指标体系研究
- 制造业智能化转型路径中的新质生产力关键驱动因素研究
- 基于机器学习的供应链主动韧性提升模型研究
- 人工智能技术演进趋势与产业深度融合机遇的前瞻性分析
- 汽车制造业新质生产力转型路径与关键技术分析
- 数据治理支撑数字化转型框架
- 2026年甘肃金麟锂电新材料有限公司招聘78人考试备考试题及答案详解
- 2026年乡镇污水管网检查井新建修缮方案
- 2026年长沙航空职业技术学院单招职业技能考试题库及答案详解(夺冠)
- 交警执法规范化培训课件
- 《替换用机动车污染控制装置技术规范》培训
- (必会)江苏安全员C2全真模拟题库300题(附答案)
- 2025年浙江初中社会试卷及答案
- 机器学习原理及应用课件:神经网络
- 2023年度山东轻工职业学院单招《语文》真题【必考】附答案详解
- 冷板液冷标准化及技术优化白皮书
- T/CMES 37003-2022景区玻璃类观景设施安全规范
评论
0/150
提交评论