Lab08WEB层设计模式

上传人:汽*** 文档编号:447897228 上传时间:2023-07-16 格式:DOCX 页数:9 大小:59.23KB
返回 下载 相关 举报
Lab08WEB层设计模式_第1页
第1页 / 共9页
Lab08WEB层设计模式_第2页
第2页 / 共9页
Lab08WEB层设计模式_第3页
第3页 / 共9页
Lab08WEB层设计模式_第4页
第4页 / 共9页
Lab08WEB层设计模式_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Lab08WEB层设计模式》由会员分享,可在线阅读,更多相关《Lab08WEB层设计模式(9页珍藏版)》请在金锄头文库上搜索。

1、层设计模式实验目标本实验将对系统重构,使用常用的等层设计模式,形成一个简单的框架。实验步骤导入工程导入实验附件中的项目。如图所示。图导入项目将程序部署到,启动服务器,访问,测试其运行是否正常。实现模式模式,顾名思义,是前端控制器,即使用一个来处理所有的前端请求,控制程序对请求响应的处理流程。先创建包,在其中创建一个类作为前端控制类。为了将所有请求都交由处理,在向导中配置映射时。将映射设置为“*”,即对所有以“”结尾的请求都将交由处理。如图所示。如果在向导中设置有误, 可以在创建完成后修改代码中类定义上面的注解。如果不使用注解,也可以在中配置,后面将有说明。# / 20Ielllitli eaL

2、lanKmeI典.II 崛.IUELL A AppLTii.Rtnzt 寓Create ServletEnt tr ser*l bHe3bl.l中specLfic infarFiTUna北也审Ff皿tCe西LrU”Description.:C |“k J幽at 3 C5L图配置的映射在中创建方法()用于处理请求,在()和()方法中均调用该方法即可。*用于处理客户端请求*(,),();(,);将请求派遣到下一页面(,); ( ) ();();(,),()();(,);程序中调用请求对象的()方法获得请求的目标路径。例如,当通过:来请求映射名为“”的 时,该方法将返回。这里,根据所请求的路径,从工

3、厂类创建一个类型的对象来处理。至于对于什么样的请求, 应该使用哪一个类型的对象处理,会搞定的。一旦获得处理某种请求的某个对象,将调用该命令对象实现约定好的方法(),该方法将返回 一个视图的名称,例如某个页面“” ,将请求转发到这个视图。从这里可以看到,只负责控制请求处理的流程,而具体如何处理请求,它并不需要知道,它和接口之间有一个约定, 那就是接口必须有一个方法。 无论处理这个请求的是何种类, 只要它实 现了接口,就可以去直接调用它的方法。现在,可以基本体会到接口的功效了吧?编写完成后,会有一些编译错误,下面就来定义它所依赖的其他接口和类。使用模式模式把具体处理请求的命令或者动作包装成为一个对

4、象,这样可以用新对象来增加新的命令,而不会影响其他任何命令。另外,对现有命令的行为可以修改,也可以添加新的行为,而不会影响其他命令。设计模式的参与者如下:声明执行操作的接口。:具体的命令类,实现接口中操作的具体内容创建接口。 在包中创建接口, 用于抽象执行操作的接口, 因为对象的使用者不需要知道每个对象的具体实现类,所以可以用接口统一处理。;.*;.*;.*;( , ), ;接下来,根据不同的功能需求,创建不同的接口实现类。例如,对于用户管理创建一个实现类,专门用于处理用户相关的请求处理;对于文件管理,创建实现类。创建类。 在包中创建类用于处理用户管理的请求,它实现了接口。用户管理目前涉及到登

5、录、注册、注销等功能,因此,创建三个方法 () 、 ()和()分别处理三个请求, 并在 () 方法中根据请求类型进行调用。 这样, 原来处理这些请求的类的功能就被替代了。将原有类中的相关内容转移过来。然后可以删除类了。;.*;.*;.*;*;.;# / 20;设置请求参数的字符编码( );( );( () 请求登陆(, ); ( () 请求注销登陆(, ); ( () 请求注册新用户(, ); ( :);( , ) , ();( );( );验证用户和密码是否合法();(, ); 用户名或密码错误!( ) ( , );登录成功,设置中的属性( , );* 处理用户注册*);();();();(

6、);();();();验证表单输入数据合法性略验证用户是否存在 账户名已经存在! ;();(, );( ) ( , );验证通过,将用户数据添加到数据库();();();();();();();();() 注册成功,转到文件列表页面; ( , 注册失败。 );( , ) , ();( ) ();( );( , ; );();( 您已成功退出登录! );( 秒后跳转到登录页面.);();在类的 () 方法中,需要返回一个表示请求转发的目标视图,为了管理这些常量,所以使用了 一个内容接口。这里和原有的相比,有一个小的修改,在 () 方法中,先设置请求对象的字符编码:( );这样,在() 方法中,获

7、取页面表单的数据后就无需进行编码转换,这样就简单的解决了中文字符的 乱码问题 。创建类。在包中创建类用于文件相关操作的请求,它也要实现接口。为了尽快理解整个框架的运行模式, 避免陷入细节, 这里先暂不具体实现, 只添加保证编译通过的必要代码。;*;.;( , ), ;实现抽象工厂模式在包中创建工厂类。它负责各种类的自动生成。简单起见,先只设定一个简单的方法。( ) ( ) ();( ) ();( :);配置运行修改,将登陆表单的设为“” 。修改进行配置,将所有请求都交由处理。删除原有的配置元素。 *运行测试 。测试重构后的系统运行是否正常。使用配置文件定义前面在类中,将请求的模式与具体类之间的

8、对应关系用代码定义在方法() 中。当实现类的名字发生变化,或者新增一个与实现类的对应关系时,需要去修改() 方法中的代码,程序修改后需要编译,因此这种方式不够灵活。下面用一个属性文件来配置这种对应关系:,它其实就是一个普通的文本文件。当然,也可以使用来定义配置文件, 那样可以定义更复杂的配置。 类中通过读取该配置文件来确定所对应的实现类。创建。 在包中创建一个文本文件并重命名。属性文件中采用“”的形式,内容如下:表示采用“”形式访问时,将调用命令类处理请求,采用“”形式访问时,将调用命令类处理请求。类名需要给出完整的包名。读取属性文件。 下面要在类中载入属性文件中的操作和类名的映射, 然后动态

9、实例化与每个映射相关联的命令对象,最后在方法() 中返回与操作()相应的命令对象。注意,根据类名,动态实例化对象采用的反射机制,即根据类名就可创建其对象。具体的创建方式超出了我们的学习重点, 这里新增一个来完成这个工作, 这是一个从网上下载的第三方开发的程序,直接将实验附件“”中该类的源文件拷贝到包中即可。读取属性文件有两种方式: 使用中的类或类。 这两种方式中, 对属性文件的表达名称有所不同。下面分别提供了两种方式的读取代码。;*;.;.;*储存属性文件中的映射* ();*使用读取的属性文件名*; ;* 使用 () 方法读取的文件名 *; ;();*载入属性文件*() ; 属性文件的初始化();属性设置信息的取得 ();() ()();()();(, ); ( ) ( 读取属性文件错误 : );(); ( ) ( :();();* 载入属性文件*() ();();( ) ( 未找到属性文件! );();读取配置信息 ();() ()();()();(, ); ( ) ( :();();# / 20

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号