1、课 程 编 号:实 训 报 告学 号: 教 学 院 计算机学院课程名称 JSP 项目开发专业 班级姓 名指导教师2018 年 1 月 10 日目录一.实训内容 .11. 系统功能介绍: .11.1前言 .11.2功能介绍 .12数据库设计: .22.1数据库技术 .22.2数据库详细设计 .23. 系统架构和文件作用介绍: .43.1 系统的目录结构图 .43.2 jsp文件的作用 .53.2.1 JSP 组成概要 .53.2.2 JSP工作原理 .63.2.3 项目中的 JSP .73.3 系统所需的 jar包 .74. 通用功能的实现: .94.1 model模式介绍 .94.2 项目中的
2、 model.104.3 项目中的 common.105. 数据访问层功能的实现: .135.1 工厂 factory类代码 .135.2 DAO设计模式 .145.2.1 DAO介绍 .145.2.2 DAO类代码 .156.前台普通用户访问新闻网站功能的实现: .206.1 前台中的 Servlet类(Front) .206.2 JSP页面核心代码 .257. 后台管理员管理新闻网站功能的实现: .267.1 后前台中的 Servlet类(Back) .267.2 JSP页面核心代码 .288.在组中承担的工作及主要书写的 JAVA类文件和 JSP文件: .308.1 Java类 .308
3、.1.1.前台 java代码 .308.1.2.后台 java代码 .318.1 Jsp页面 .338.2.1.前台 jsp页面 .338.2.1.后台 jsp页面 .35二.程序运行结果及结果分析 .371. 前台运行结果及结果分析: .372. 后台运行结果及结果分析: .40一.实训内容1. 系统功能介绍:1.1前言当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出。简单的说,新闻发布系统就是充当一个网络新闻媒介的功能,主要实现对新闻的分类、上传、审核、发布,模拟了一般的新闻媒介的新闻发布过程。利用 JSP 技术开发的新闻发
4、布系统,主要有五大功能模块:前台查看模块,登陆验证模块,管理员管理模块,新闻类型管理模块,新闻信息管理模块,实现了对网站新闻的动态管理。因为可以用来动态发布新闻信息,所以对信息的管理更加及时、高效,提高了工作效率。1.2功能介绍本系统采用 JSP +Servlet 等相关技术来实现一个 Web 应用程序:新闻网站系统。其主要目的是为用户提供一个方便的、可快速浏览当前最新新闻的界面,并且也可以随时发布最新的信息以达到信息共享的目的。因此要为用户提供个方便易用的使用界面,同时也为具有更高权限的管理用户提供添加、修改和删除新闻等的系统维护功能。访问本系统的用户可分为两大类:普通用户和管理员用户。普通
5、用户可以直接访问新闻发布系统的前台,通过点击每条新闻的标题来查看该条新闻的详细内容。查看各条新闻的评论。用户在登录之后可以发表自己的评论。用户还可以在发布一个论坛,让广大网友发出自己的看法和声音。当用户作为管理员成功登陆后,可以对新闻系统进行管理,包括四大模块:1. 管理员信息管理:增加管理员、删除管理员、修改管理员信息;2. 新闻类型管理:增加新闻类型、查看新闻类型信息;3. 新闻管理:查看新闻、修改新闻、发布新闻、审核新闻,信息;4. 论坛管理:查看论坛、删除论坛。 2数据库设计:2.1数据库技术本系统使用 MySQL 作为开发中使用的数据库,它具有使用简单,稳定等特性。在与 java 程
6、序连接时,为提到数据库操作的效率提高系统的性能。使用到Dbutils 和 DBCP 等工具。在使用 Dbutils 之前,我们 Dao 层使用的技术是 JDBC,那么分析一下JDBC 的弊端。数据库链接对象、sql 语句操作对象,封装结果集对象,这三大对象会重复定义封装数据的代码重复,而且操作复杂,代码量大。释放资源的代码重复 结果:(1)程序员在开发的时候,有大量的重复劳动。(2)开发的周期长,效率低数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问
7、题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中, 这些数据库连接的数量是由最小数据库连接数来设定的.无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量.连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。相信使用这些数据库的技术之后,能很好保证新闻管理系统正常运行。2.2数据库详细设计在设计数据库时,需要分析清楚需要有几个数据表,最重要的是各个数据表之
8、间的逻辑关系。使用一款数据库设计工具将会大大方便开发的时间和成本,powerdesigner。但是本次的课程设计是在老师教学的基础之上的二次开发,数据库的大体模式基本已经给出,我们只需要在此基础上添加几个表(forum 表、reply 表等) 。数据库的设计一定要遵循数据库设计的一些原则,如各个完成性的要求,范式,冗余,备份等等方面。由于本次课题新闻管理系统在数据库这方面要求不是很高,故实现起来也不是很难。重点在与 JSP 的使用,Tomcat 服务器上的程序编写。下面简要介绍数据库的逻辑关系、关键表等。图 2-1 数据表信息表 2-1 forum 表列名 数据类型 长度 说明id int 1
9、1 论坛类型标号,主键name int 11 发表论坛时的名字username char 20 新闻用户名email char 20 用户的电子邮件subject char 100 论坛主题content mediumtext 论坛内容pictures varchar 20 论坛中的照片time datetime 论坛发布时间isDel int 2 标题论坛的删除表 2-2 reply 表列名 数据类型 长度 说明id int 11 论坛类型标号,主键discussId int 11 回复论坛的标记name char 20 新闻用户名content mediumtext 回复论坛的内容pict
10、ures varchar 20 回复论坛中的照片time datetime 回复论坛的时间isDel int 2 标题回复的删除对数据库的数据表的操作通过 DAO 层进行,DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO 层的设计首先是设计 DAO 的接口,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO 层的数据源配置,以及有关数据库连接的参数进行配置。3. 系统架构和文件作用介绍:3.1 系统的目录结构图一个系统,在开发初期就必须有一个清晰的文件结构,进而在文件结构中分解出详细的目录结构图。在
11、 Java web 项目开发中,有一个项目存放的规范,这样便于管理,同时也便于其他人的再次开发。1. 一个 web 应用程序是由一组 Servlet,HTML 页面,类,以及其它的资源组成的运行在 web 服务器上的完整的应用程序,以一种结构化的有层次的目录形式存在;2. 组成 web 应用程序的这些文件要部署在相应的目录层次中,根目录代表整个 web 应用程序的“ 根” ;3. 通常将 web 应用程序的目录放在 webapps 目录下,在 webapps 目录下的每一个子目录都是一个独立的 web 应用程序,子目录的名字就是 web 应用程序的名字,也就是 web 应用程序的“根” 。用户
12、通过 web 应用程序的“根”来访问 web 应用程序中的资源.表 3-1 srcmainwebapp 目录目录 存放内容css 存放.css 格式文件(可再分目录)skins 存放皮肤文件(按主题划分的 framework 的位图)images 存放图片,按产品、功能模块划分子目录js JavaScript 文件(对象、函数库)include 存放被包含的 JS 文件片段【注:JSP 文件互相不要包含,通过模板/组件/标签库/BEAN 实现重用】resources 存放 JSF 组件、相关资源等templates 模板文件存放地,按类别划分子目录pages 网页目录(静态和动态网页,除 in
13、dex.jsp) ,按产品、功能模块划分子目录webapp 下其他目录 解释为模块名,认为其中全部为网页,可再分子目录META-INF 存放清单文件、services 等配置信息WEB-INF 网站配置文件目录,存放 WEB.XML 等配置信息WEB-INF/classes 未打包的项目编译代码,禁止手工修改。WEB-INF/conf 存放 struts,spring,hibernate,JSF 等的配置文件WEB-INF/lib 存放第三方 JAR 包,使用 MAVEN 构建时此目录禁止手动放入文件!WEB-INF/pages 高安全性的网页目录,如登录信息维护等WEB-INF/tld JS
14、P 标签库定义文件存放目录在本系统中可能有部分文件没有涉及到,但是大部分的文件都是有的。js主要包括 extends(引入第三方的 js)、module(项目模块自己的 js) 、lib(引用包,这里也可以继续拆分) ,module 中包含具体的模块中的 js。common.js 是核心命名空间的 js。在开发中严格按一套标准,这样才会得到同行的认可。图 3-1 web 项目的 java 目录和 WebRoot 根目录3.2 jsp文件的作用 3.2.1 JSP 组成概要一个 JSP 页面主要由注释(Comment) 、指令(Directives ) 、脚本元素(Declaration,Scr
15、iptlet,Expression).动作元素(Action)的内容组成。1注释包括 HTML 注释和 JSP 隐藏注释。2指令包括: (1)page:用来定义整个 JSP 页面的属性和相关功能。(2)include:用来指定 JSP 文件被编译时需要插入的资源,可以是文本、代码、HTML 文件或 JSP 文件。(3)taglib:页面使用者用来自定义标签。3脚本元素(1)声明:用来定义在程序中使用的实体,它是一段 Java 代码,可以声明变量,也可以声明方法。格式: 例如:。(2)表达式:格式: 最后是没有分号的.例如:。(3)Scriptlet :格式 : 。4在 JSP 中的动作指令包括
16、:Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin。(1)include 指令:表示包含一个静态的或者动态的文件。子句能让你传递一个或多个参数给动态文件,也可在一个页面中使用多个指令来传递多个参数给动态文件。(2)forward 指令:表示重定向一个静态 html/jsp 的文件,或者是一个程序段。(3)Plugin 指令:用于在浏览器中播放或显示一个对象(典型的就是Applet 和 Bean) ,而这种显示需要浏览器的 Java 插件。一般来说,元素会指定对象是 Applet 还是 Bean,同样也会指定 class 的名
17、字和位置,另外还会指定将从哪里下载这个 Java 插件。(4)useBean 指令:表示用来在 JSP 页面中创建一个 Bean 实例并指定它的名字以及作用范围。(5)setProperty 指令:用来为一个 Bean 的属性赋值。若在 jsp:useBean 后使用,jsp:setProperty 将被执行。若 jsp:setProperty 出现在 jsp:useBean 标签内,jsp:setProperty 只会在新的对象被实例化时才将被执行。注意 name 值应当和useBean 中的 id 值相同。(6)getProperty 指令:表示获取 Bean 的属性的值并将之转化为一个字
18、符串,然后将其插入到输出的页面中。3.2.2 JSP工作原理当客户端请求浏览 JSP 页面时,JSP 服务器在把页面传递给客户端之前,先将 JSP 页面编译成 Servlet(纯 Java 代码) ,然后由 Java 编译器生成的服务器小程序编译为 Java 字节码,最后再转换成纯 HTML 代码,这样客户端接收到的只是 HTML 代码。JSP 到 Servlet 的编译过程一般在第一次页面请求时进行。因此,如果希望第一个用户不会由于 JSP 页面编译成 Servlet 而等待太长的时间,希望确保Servlet 已经正确地编译并装载,你可以在安装 JSP 页面之后自己请求一下这个页面。3.2.3 项目中的 JSP在 Java Web项目中,书写 jsp文件时,一定要注意命名规范,需要做到看jsp文件名就知道 jsp文件是完成什么功能的。在新闻管理系统中最多涉及的是 news这样一个前缀或者后缀,根据需要的功能书写 jsp文件。图 3-2 项目 Front 和 Back 的 JSP 文件