网络程序设计报告

网络程序设计

实验报告

班级:      130914      

学号:     13091404      

姓名:      王文文      

教师:      张志钦       



目 录

实验说明                                        Go

重要提示                                        Go

实验1   虚拟机Vmware和Redhat Linux的安装       Go

实验2   Redhat Linux与Windows文件共享的设置    Go

实验3   Socket API的面向对象封装                Go

实验4   WEB客户端原型myWebBrowser的实现           Go

实验5   WEB服务器原型myWebServer的实现         Go

实验6   WEB服务管理工具myWebManager的实现      Go


实验说明

1.实验做为学习的重要促进手段,是为了深化对理论的理解,锻炼实践动手能力。

2.实验同时也作为考核的手段。

3.实验内容会在课程进行中下达,并且会分次地、部分地被抽查。

4.实验主要以“报告 + 源代码”的形式提交。要求电子版(doc格式),也可手写,要求认真排版,参见后面的提示。

5.课程结束时,要求把所有的实验整理成一个完整的电子文档并上交,做为最后成绩的评定依据。

6.如果有兴趣的合适的题目,也可自己选题目。

格式说明

1.本文档文件名命名为“学号-姓名”,如“13071000-小王”。

2.留白部分不足的自己调整长度,也可加页(增加内容应在表格内)。

3.每次的实验报告都要在这个文件中(按照实验次序依次)增加,而不是每次一个新的word文件。

4.本文档保存为doc格式( 请勿用Word2007的docx格式)。

重要提示:

1.实验正文建议使用小四号或五号宋体。

2.若附加图形,则请直接嵌入到实验手册相应位置。

3.各实验的源程序,请按实验分目录存放,如第一个实验的源程序存放在目录lab1下,第二个实验的源程序存放在目录lab2下等等,依次类推。

4.可互相讨论,但严禁抄袭网络或同学的实验结果。

  




 

第二篇:网络程序设计课程设计报告

哈尔滨德强商务学院

网络程序设计(JSP)设计报告

系 别 计算机与信息工程系

专 业 计算机系科学与技术

班 级 07 计本一班

学 生 刘桐飞

学 号 2007511386

20xx年12月10日

(设计)题目

一、设计研究目的及意义 学生信息管理系统

近年来,伴随着我国高等教育的改革以及计算机信息技术的迅速发展,高校学生管理系统正向国家标准化的信息结构迈进。与此同时,校园网技术的成熟为建立基于Internet的学生综合信息管理系统提供了强大的技术支持。功能完善的学生信息管理系统不仅可以支持学校管理决策、教育决策、教学研究,还可提高学生信息管理的现代化程度,增强学生管理的科学性和透明度。

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 学生管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

1

二、设计和研发技术简介

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

JavaBean是Sun微系统的一个面向对象的编程接口,它可以让你建可重用应用程序或能在网络中任何主流操作系统平台上配置的程序块,称作组件。像Java applet一样,JavaBeans组件(或“Beans”)能够给予万维网页面交互的能力,例如:计算感兴趣的比率或是根据用户或浏览器的特性改变页面内容。

从用户的观点来看,一个组件可以是一个与你交互的按钮或是一个当你按下按钮它便开始的小计算程序。从一个开发者的观点来看,那个按钮组件和计算器组件是分别被创建的,并且他们可以一起使用或是在不同的应用程序或情况下和不同的组件产生不同的组合来使用。

当组件或Beans在使用过程中,Bean的性质(比如,一个窗口的背景色)对于其他Bean来说是可见的,并且,之前没“碰到”过的Bean也可以动态地获悉彼此的特性并从而进行交互。

Bean是随Sun的Bean开发包(BDK)开发出来的,并且能在任何主流操作系统平台的许多应用程序环境(人们所说的“容器”,container)中运行,包括浏览器,文字处理软件,以及一些其他应用。

要想用JavaBeans建一个组件,你必须用Sun的Java编程语言来写程序,并且在程序中包括描述组件特性的JavaBeans语句,这些组件特性例如:用户接口的特性,以及触发一个bean和在同一个容器中或网络其他地方的其他的bean交流的事件。

Bean也有持续性,持续性就是一种把一个组件的状态存在一个安全处的机制。有了这种持续性,它能使,比如说,一个组件(bean)“记住”某个特定用户在早些时候的用户对话中所输入的数据。

JavaBeans给Java应用程序提供了OpenDoc和ActiveX接口已提供的这种复合文档的能力。

2

三、采用数据库技术简介

MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。 MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。MySQL是一个数据库管理系统。

一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。

MySQL是一个关系数据库管理系统:

关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。SQL是用于访问数据库的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自19xx年以来,已经存在多个版本:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是该标准的当前版本。

MySQL是开源的:

开源意味着任何人都可以使用和修改该软件,任何人都可以从Internet上下载和使用MySQL而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。MySQL使用GPL(GNU General Public License,通用公共许可),在

/licenses中定义了你在不同的场合对软件可以或不可以做什么。如果你觉得GPL不爽或者想把MySQL的源代码集成到一个商业应用中去,你可以向MySQL AB购买一个商业许可版本。

MySQL服务器是一个快的、可靠的和易于使用的数据库服务器。MySQL服务器原本就是开发比已存在的数据库更快的用于处理大的数据库的解决方案,并且已经成功用于高苛刻生产环境多年。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。它的连接性、速度和安全性使MySQL非常适合访问在Internet上的数据库。 MySQL服务器工作在客户/服务器或嵌入系统中:

MySQL数据库服务器是一个客户/服务器系统,它由多线程SQL服务器组成,支持不同的后端、多个不同的客户程序和库、管理工具和广泛的应用程序接口(APIs)。

MySQL也可以是一个嵌入的多线程库,你可以把它连接到你的应用中而得到一个小、快且易于管理的产品。

有大量的MySQL软件可以使用:

幸运的是,你可以找到你所喜爱的已经支持MySQL数据库服务器的软件和语言。 MySQL的官方发音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。

3

一个建库和建表以及插入数据的实例:

drop database if exists school; //如果存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ?深圳',

year date

); //建表结束

//以下为插入字段

insert into teacher values('','gl',?一中?,'1976-10-10');

insert into teacher values('','ja',?深圳?,'1975-12-23');

注:在建表中:

1、将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key。

2、将NAME设为长度为10的字符字段。

3、将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。

4、将YEAR设为日期字段。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:

mysql -uroot -p密码 < c:\school.sql

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

4

四.业务简介

本程序将实现客户登录学生信息管理系统,对学生信息数据库进行相关操作,包括:增加学生记录,删除学生记录,修改学生相关信息,以ID查询学生记录,查询总表。

4.1、客户登陆学生信息管理系统

1、登陆页面:首先,进入登陆页面,输入登录的用户名及密码。

然后,通过后台对数据库进行相关操作,以用户名及密码到数据库中查找用户的登录信息。若存在,进入用户操作数据库页面并获得用户口令,作为登陆信号;否则,转入注册页面进行注册操作。

2、注册页面:首先,输入登录的用户名,用户口令及密码。

然后,通过后台对数据库进行相关操作,将用户名,用户口令及密码等用户的登录信息插入到数据库中。若成功,则转入登陆页面再次登录;否则,转入注册页面重新注册。

3、用户操作数据库页面:用户选择相应操作,如增加学生记录,删除学生记录,以ID查询学生记录,查询总表。转入相应后台进行对数据库进行相应操作。

4、增加学生记录:在文本框中添加姓名,在文本框中添加年龄,在文本框中添加系别等相关信息。按提交按钮,交由后台对数据库进行相关操作。将新记录插入到学生信息表的最后一行。若成功,则返回成功信号,转用户操作数据库页面,重新进行相应操作;否则转失败页面。

5、删除学生记录:在文本框中添加要删除的学生ID等相关信息。按提交按钮,交由后台对数据库进行相关操作。将要删除的学生按学生ID从学生信息表中删除符合条件的记录。若成功,则返回成功信号,转用户操作数据库页面,重新进行相应操作;否则转失败页面。

6、以ID查询学生记录:在文本框中添加要查询的学生ID等相关信息。按提交按钮,交由后台对数据库进行相关操作。将要查询的学生按学生ID从学生信息表中查询出符合条件的记录。若成功,则返回符合条件的记录,转用户操作数据库页面,重新进行相应操作;否则转失败页面。

7、查询总表:按查询总表按钮,交由后台对数据库进行相关操作。将要查询的学生按学生ID从学生信息表中查询出符合条件的记录,并返回结果集。若成功,则返回结果集,转显示页面,进行显示符合条件的记录,重新进行相应操作;否则转失败页面。

8、修改学生记录:在文本框中添加要修改的姓名,在文本框中年龄,在文本框中系别等相关信息。按提交按钮,交由后台对数据库进行相关操作。将新记录覆盖符合学生ID条件的记录在学生信息表中。若成功,则返回成功信号,转用户操作数据库页面,重新进行相应操作;否则转失败页面。

4.2、数据库的建立

创建数据库,进入数据库;创建表,用户表(登陆)、学生信息表,创建person表,插入测试数据,创建学生信息表,插入测试数据;事务提交。

5

五、详细设计与实现

5.1、MVC

1、MVC设计:

登陆页面,将实现Jsp与servlet的交互,连接到Person数据表,将登陆的信息发送到数据库,从Person表中得到查询结果,并返回用户名。登陆成功则,进入登陆成功页面,进行相应的各种操作。

本程序将实现对学生信息数据库的简单操作。应用Jsp,Servlet,JavaBean实现对数据库中的Note表的增加记录,删除记录,修改记录,查询记录。

2、MVC设计的规划:

Controller:控制器,用来处理用户命令以及程序事件:使用Servlet进行操作的控制,在整个的程序中以及Jsp和数据库之间进行信息的交互,以达到通过Jsp页面对数据库进行操作的目的。

Modem:模型,用来维护数据并提供数据访问方法:使用JavaBean封装数据形成数据库中所包含的各种二维表,用来存储数据和对数据的管理,以及对数据的具体操作,包括对数据的增删改查。NoteDAOImpl.java使用业务Bean封装访问数据的方法,包括对表中数据的添加信息,删除信息,更新信息,使用ID进行对数据库中Note表的查询,查询总表。PersonDAOImpl.java使用业务Bean封装访问数据的方法,包括对表中数据的添加信息,使用ID进行对数据库中Person表的查询,达到登陆查询的目的。

View:视图,负责数据的显示。使用Jsp显示数据,其中使用form表单接受数据,并提交给Servlet进行对数据的具体处理,实现对数据的增加记录,删除记录,修改记录,查询记录。

3、MVC在Web系统中的应用:

采用MVC设计模式,整体架构。通过分析,将一个应用的对象分为三类,一类就是负责显示的对象,一类对象包含商业规则和数据,还有一类就是接收请求,控制商业对象去完成请求。数据的模型对象Model要相对稳定,而表示控制的Controller则最稳定。View代表一个系统的显示,它完全存在于Web层,显示逻辑在Web层或客户端控制,可以由Servlet或JSP动态生成HTML,Controller对象协调Model与View,把用户请求翻译成系统识别的事件。与控制有关的控制器对象存在于系统的每一个层次,协调各种跨层动作。Model对象代表了数据,存在于模型层和Web层,最主要的就是使其体系结构要合理、开放。

MVC设计模式与客户端/服务器(C/S)模式非常相似,除了所有的组件都绑定在一个应用以外。

5.2、硬件环境及操作系统

1、 服务器:CPU:P4.1G(或与此相当的CPU)以上配置的高性能PC机,有网络接口卡(NIC),内存应在256M以上,硬盘在40G以上;确认该计算机已经安装Apache2.0及以上服务器,数据库软件SQL Server,还可选用备份服务器;操作系统Windows98或以上。客户端:CPU:P4.1 G(或与此相当的CPU)以上配置的高性能PC机,有网络接口卡(NIC),内存应在128M以上,硬盘在2G以上。操作系统Windows98或以上。

2、 网络:服务器和客户端应有网络连通,配置TCP/IP协议以及需要申请一个

6

连接Internet的固定IP地址或一个域名地址。

3、硬件环境:一般微机CPU: 奔III以上即可;内存:256M;硬盘:40G。软件环境:操作系统Windows XP/2000 Professional;数据库Microsoft SQL Server 2000;开发环境Eclipse3.2。

4、Web服务器:Apache TomCat 5.5, TomCat提供HTTP协议的服务。

5.3、网站总体设计

整个网站分为前台和后台两个入口。

前台:即面向游客和注册用户的网站页面,用户在浏览器输入相应网址即可浏览网站各类信息。

后台:对前台信息的动态更新和维护,实现动态网站的目标管理。并设有管理员权限,只有拥有管理员权限的人员才能进入后台对网站的内容进行更新和修改。权限不够的用户只能进行信息浏览和用户自己信息及密码的更改,这也是大多数网站设计阶段对于以后维护时信息更新的一种安全性策略。

5.4、数据库设计

create database notedb; --创建数据库

use notedb; --进入数据库

charset gbk;

DROP TABLE person ; -- 创建表

DROP TABLE note ; -- 用户表(登陆)、学生信息表

CREATE TABLE person-- 创建person表

(

id varchar(20) not null primary key ,

name varchar(20) ,

password varchar(20)

) ;

INSERT INTO person VALUES ('admin','admin','admin') ; -- 插入测试数据

INSERT INTO person VALUES ('shui','shui','shui') ;

CREATE TABLE note-- 创建学生信息表

(

id int not null primary key auto_increment ,

title varchar(20) not null ,

author varchar(20) not null ,

content varchar(50) not null

) ;

insert into note values(1,'jsp管理系统','1','管理各种留言'); -- 插入测试数据

insert into note values(2,'jsp管理系统','1','管理各种留言');

commit ; -- 事务提交

7

1、NoteDAO.java:接口:定义NoteDAO中的各种操作方法:添加,更新,删除,用ID查询,全表查询

public void insert(Note note) throws Exception ;

public void update(Note note) throws Exception ;

public boolean delete(int id) throws Exception ;

public Note queryById(int id) throws Exception ;

public List queryAll() throws Exception ;

2、PersonDAO.java:接口:定义PersonDAO中的登录操作:

public boolean login(Person person) throws Exception ;};

3、ChineseFilter.java:转换中/英文字型编码

String encoding=filterConfig.getInitParameter("encoding");

request.setCharacterEncoding(encoding);

filterChain.doFilter(request, response);

super.doPost(arg0, arg1);

4、Note.java :JavaBean包装类的属性:ID,Title,Author,Content的属性

public class Note implements Serializable

{ private int id ;

private String title ;

private String author ;

private String content ;

};

5、DAOFactory.java:作为一个中间类,有两个static静态方法

public static PersonDAO getPersonDAOInstance(),

public static NoteDAO getNoteDAOInstance(),

通过使用static来接收servlet的引用,然后实例化数据业务接口。

6、DataBaseConnection.java:业务Bean建立Servlet与DB的连接

public class DataBaseConnection

{ private String DBDRIVER = "com.mysql.jdbc.Driver" ;

private String DBURL = "jdbc:mysql://localhost:3306/notedb" ; private String DBUSER = "root" ;

private String DBPASSWORD = "lane" ; private Connection conn = null ; public DataBaseConnection() {Class.forName(DBDRIVER) ; this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; }public Connection getConnection()

{return this.conn ;}

};

8

7、Person.java:JavaBean包装类的属性:ID,Name,Password的属性; private String id ;

private String name ;

private String password ;

8、NoteDAOImpl.java:功能:实现对Note表的增、删、改、查等功能 插入方法:insert(Note note)

(1)创建底层连接;

(2)获取数据连接;

(3)执行jdbc生命周期:

①产生PreparedStatement对象

②完成赋值,形成sql

③调用sql语句

(4)关闭所有连接:

String sql = "INSERT INTO note VALUES(0,?,?,?)";

PreparedStatement pstmt = null ;

DataBaseConnection dbc = null ;

dbc = new DataBaseConnection() ;

pstmt = dbc.getConnection().prepareStatement(sql) ;

pstmt.setString(1,note.getTitle()) ;

pstmt.setString(2,note.getAuthor()) ;

pstmt.setString(3,note.getContent()) ;

pstmt.executeUpdate();

9、更新方法:update(Note note)

(1)创建底层连接;

(2)获取数据连接;

(3)执行jdbc生命周期;

①产生PreparedStatement对象

②完成赋值,形成sql

③调用sql语句

(4)关闭所有连接:

String sql = "UPDATE note SET title=?,author=?,content=? WHERE id=?" ; PreparedStatement pstmt = null ;

DataBaseConnection dbc = null ;

dbc = new DataBaseConnection() ;

pstmt = dbc.getConnection().prepareStatement(sql) ;

pstmt.setString(1,note.getTitle()) ;

pstmt.setString(2,note.getAuthor()) ;

pstmt.setString(3,note.getContent()) ;

pstmt.setInt(4,note.getId()) ; pstmt.executeUpdate() ; pstmt.close() ; }

9

10、删除方法:delete(int id)

(1)创建底层连接;

(2)获取数据连接;

(3)执行jdbc生命周期:

①产生PreparedStatement对象

②完成赋值,形成sql

③调用sql语句

(4)对结果进行判断;

(5)返回标记;

(6)关闭所有连接:

String sql = "DELETE FROM note WHERE id=?" ;

boolean bb=false; PreparedStatement pstmt = null ; DataBaseConnection dbc = null ; dbc = new DataBaseConnection() ; pstmt = dbc.getConnection().prepareStatement(sql) ; pstmt.setInt(1,id) ; if(pstmt.executeUpdate()!=0) bb=true;

11、queryById()方法:按id进行查询相关记录:

(1)创建底层连接获取数据连接;

(2)执行JDBC生命周期:

①产生PreparedStatement对象

②完成赋值,形成sql语句

③调用sql语句,接受结果集

(3)将查询结果用JavaBean对象封装;

(4)结束所有连接;

(5)将JavaBean的对象note返回:

String sql = "SELECT id,title,author,content FROM note WHERE id=?" ; PreparedStatement pstmt = null ;

DataBaseConnection dbc = new DataBaseConnection() ;

pstmt = dbc.getConnection().prepareStatement(sql) ;

pstmt.setInt(1,id) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{ note = new Note() ;

note.setId(rs.getInt(1)) ;

note.setTitle(rs.getString(2)) ; note.setAuthor(rs.getString(3)); ontent(rs.getString(4)) ; }

10

12、查询方法:queryByAll(int id)

(1)创建list对象;

(2)形成sql语句;

(3)创建底层连接;

(4)获取数据连接;

(5)执行jdbc生命周期:

①产生PreparedStatement对象

②完成赋值,用结果集接受结果

③调用业务Bean将结果集中的对象一个个取出并产生新的JavaBean放List对象中

(6)关闭所有连接;

(7)返回list对象:

List all = new ArrayList() ; String sql = "SELECT id,title,author,content FROM note" ; PreparedStatement pstmt = null ;

DataBaseConnection dbc = new DataBaseConnection() ;

pstmt = dbc.getConnection().prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

while(rs.next())

{ Note note = new Note() ;

note.setId(rs.getInt(1)) ;

note.setTitle(rs.getString(2)) ; note.setAuthor(rs.getString(3)) ; note.setContent(rs.getString(4)) ; all.add(note) ;}

13、PersonDAOImpl.java: login()方法:验证登陆是否成功,到数据库中查登录信息:

(1)形成sql语句;

(2)创建底层连接获取数据连接;

(3)执行JDBC生命周期:

①产生PreparedStatement对象

②完成赋值,形成sql语句

③调用sql语句,接受结果集

(4)将判断的结果返回;

(5)结束所有连接;

(6)返回有无值的标记:

boolean flag = false ;

String sql = "SELECT name FROM person WHERE id=? and password=?" ;

PreparedStatement pstmt = null ;

DataBaseConnection dbc = null ;

dbc = new DataBaseConnection() ;

11

pstmt = dbc.getConnection().prepareStatement(sql) ;

pstmt.setString(1,person.getId()) ;

pstmt.setString(2,person.getPassword()) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{ flag = true ;

person.setName(rs.getString(1)) ;}

14、NoteDeleteServlet.Java:

(1)获取从jsp表单提交的参数id ;

(2)调用业务Bean进行判断;

①成功则转显示页面new_notes.jsp

②否则转失败页面delete_fail.jsp

int id = 0 ;

id = Integer.parseInt(request.getParameter("id")) ;

if(DAOFactory.getNoteDAOInstance().delete(id)

else {if(DAOFactory.getNoteDAOInstance().delete(id2))

15、Note InsertServlet.java:

(1)获取从jsp表单提交的参数;

(2)调用JavaBean封装参数Note ;

(3)调用业务Bean执行:

①true,转insert_success.jsp

②false, 转fail.jsp

String title=request.getParameter("title");

String author=request.getParameter("author");

String content=request.getParameter("content");

Note note=new Note();

note.setAuthor(author);

note.setContent(content);

note.setTitle(title);

DAOFactory.getNoteDAOInstance().insert(note);

16、NotequeryAllServlet.java:

(1)生成list对象;

(2)调用业务Bean ;

(3)用list接受返回对象list结果集;

(4)将list放session中,将keyword放session中;

(5)转list_note.jsp进行显示:

List all =DAOFactory.getNoteDAOInstance().queryAll() ; session.setAttribute("list",all);

session.setAttribute("keyword", request.getAttribute("keyword"));

12

17、NoteQueryByIdServlet.java:按ID关键字,主键查询

(1)获取参数id ;

(2)调用业务Bean进行判断:

①如果返回为true,显示总表

②false,转查询失败页面

(3)调用JavaBean接受返回对象Note;

(4)将note对象放入list中;

(5)将list,keyward同时放入session中进行跨页面传递参数:

Note note=null;List<Note> list=new ArrayList<Note>();

id = Integer.parseInt(request.getParameter("keyword")) ;

note=DAOFactory.getNoteDAOInstance().queryById(id) ;

session.setAttribute("keyword", request.getAttribute("keyword")); session.setAttribute("list",list);

18、NoteUpdateServlet.java:对数据库进行修改:

(1)获取从Jsp表单提交来的数据;

(2)调用JavaBean封装参数,Note的对象;

(3)调用业务Bean执行操作:

①成功转new_notes.jsp显示结果

②失败,异常转fail.jsp

int id=Integer.parseInt(request.getParameter("id"));

String title=request.getParameter("title");

String author=request.getParameter("author");

String content=request.getParameter("content");

Note note=new Note();note.setId(id);note.setAuthor(author);note.setContent(content); note.setTitle(title);

DAOFactory.getNoteDAOInstance().update(note);

19、PersonLoginServlet.java :查询登录信息,以确认是否登录成功。

(1)获取从jsp表单提交来的参数;

(2)调用JavaBean来封装参数 Person对象;

(3)调用业务Bean进行判断:

①如果返回为true,则登陆成功

②否则转login.jsp,重新登录:

String id=request.getParameter("id");

String name=request.getParameter("name");

String passward=request.getParameter("password");

Person person=new Person(); person.setId(id);

person.setName(name);person.setPassword(passward);

DAOFactory.getPersonDAOInstance().login(person)

session.setAttribute("uname",person.getName());

13 list.add(note);

六、问题与不足

6.1、MVC方面

1、控制器:用户用来进行操作的用户接口过于简单。关联模型和视图加以完善。

2、模型:存储了一个应用所描述的所有状态和数据过于简单。因为只有一个学生信息表显得系统功能不够强大。模型的更新所有与其相关的视图过于单薄。

3、视图:在向用户显示数据信息的用户接口中,美工不够细致。

6.2、Servlet方面

Servlet应用程序接口是创建动态应用的,是多线程的,必须确保使用的Servlet是线程安全的。而在线程安全的方面没有很细致的考虑。

6.3、JSP方面

在动态内容引入方面做得不够多,应加以完善。

6.4、JavaBean方面

JavaBean个数少,只有一个登陆信息和一个学生信息表。内容少,可用信息数据只有三个姓名、年龄、系别,使得实现功能不够强大,应加以完善。

6.5、数据库方面

使用了MYSQL,只能应用于小型数据库,应提高程序的可移植性。达到可在SQLServer等大型数据库上使用的水平。

14

七、参考文献

[1]BUILDER.COM,MVC设计模式带来更好的软件结构和代码重用,ZnetChina。

[2]Jim Fu,MVC设计模式:将Web应用分三层,来源:中国计算机报软件与服务,20xx年6月。

[3]Java BluePrints Model-View-Controller。

[4]周警伟,BEA系统(中国)有限公司渠道部技术顾问,MVC在Web系统中的模式与 应用,.cn/techdoc/webser/20031194.html。

[5]Nicholas Kassem等,Designing Enterprise Applications with the J2EETM Platform,Sun Microsystems,Inc.20xx年。

[6]Deepak Alurm,Core J2EE Patterns,ISBN 0-13-064884-1,Sun Microsystems Inc,2001。

[7]杨健,中南工业大学,用“模型-视图-控制器”模式搭建中小型网站,20xx年12月。

[8]Steve Burbeck,Ph.D.How to use Model-View-Controlle(rMVC),Copyright(c)1987,1992 by S.Burbeck。

[9]comp.object,Model-View-Controller,14-May-98,http://ootips.org/mvc-pattern.html。

[10]vipcowrie(翻译),通过JAVA SWING看透MVC设计模式,

[11]龚赤兵,赛迪网,如何合理利用MVC设计模式运用到开发Java应用程序,20xx年06 月,/tm/030622/030622_99290.html。

[12]胡竞、王克宏,设计模式与Java,开放系统世界,20xx年6 。

[13]飞思科技产品研发中心、赵强、乔新亮,J2EE应用开发(Weblogic+JBuilder),电子工业出版社,2003,第一版:158-160,350-353。

[14]摘自CSDN,什么是架构,http://www.digitalspirit.info/phf/artichecture/archConcert.htm

[15]the model-view-controller(MVC)design pattern。

[15]小燕平工作室,MVC观念,/jof/jof01/mv8.htm。

[16]Model-View-Controller Pattern,/x/markup/tutorial/mvc.html。

学生设计评定成绩:

教师 签字: 年 月 日

15

相关推荐