




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章自定义MVC框架回顾与作业点评回顾与作业点评n Model I的缺点有哪些?的缺点有哪些?n 为什么要使用为什么要使用MVC设计模式开发应用程序?设计模式开发应用程序?n MVC模式的缺点有哪些?模式的缺点有哪些?本章任务本章任务n 实现实现MVC自定义框架并使用自定义框架并使用n基于Servlet技术n是MVC思想的一个实现n类似Struts框架本章目标本章目标n 掌握掌握MVC设计模式设计模式n 使用使用MVC设计模式开发自定义设计模式开发自定义MVC框架框架为什么需要框架技术为什么需要框架技术2-1n 如何更快更好地写简历?如何更快更好地写简历?n使用Word简历模板n 思考
2、:思考:n使用模板有什么好处呢?结构统一,便于人事阅读结构统一,便于人事阅读不用考虑布局、排版等,提高效率不用考虑布局、排版等,提高效率可专心在简历内容上可专心在简历内容上新手也可以作出专业的简历新手也可以作出专业的简历什么是框架技术什么是框架技术n “框架技术框架技术”帮我们更帮我们更快快更更好好地构建程序:地构建程序:n提供可重用的公共结构n按一定规则来组织组件n应用程序的半成品n 优势:优势:n不用再考虑公共问题n专心在业务实现上n结构统一,易于学习、维护n新手也可写出好程序 直接组装汽车,不用自己造轮子直接组装汽车,不用自己造轮子站在巨人的肩膀上,享用前人经验和智慧站在巨人的肩膀上,享
3、用前人经验和智慧 顾客点菜顾客点菜顾客点菜顾客点菜中餐中餐厨师厨师服务员服务员加工菜肴加工菜肴把菜单给厨师把菜单给厨师把把服服务务/菜菜给给顾顾客客以各自的功以各自的功能进行分工能进行分工生活中的生活中的MVC西餐西餐厨师厨师把菜单给厨师把菜单给厨师某些服务VCM 行为抽象行为抽象自定义自定义MVC客户请求中心控制sevrlet登录操作ACTION房屋信息ACTIONACTION计算服务转换等(非数据库类)DB存储/持久化存储返回结果ACTION黄色部分为设计核心自定义自定义MVC步骤步骤1/2n 前端控制器前端控制器n新建一个Servletn配置到web.xml中,让这个Servlet能处理
4、*.action请求n 核心功能核心功能n接受请求n根据请求URL,找到合适的Actionn最简单的控制器,只需用if/else去找Actionn调用Actionn转向输出页面演示示例:演示示例:Controller的设计过程的设计过程自定义自定义MVC步骤步骤2/2n 设计设计Action接口接口nAction是具体处理业务逻辑的地方import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public interface Action public String ex
5、ecute(HttpServletRequest request, HttpServletResponse response) throws Exception;自定义自定义MVC简单使用简单使用n 以登录为例以登录为例n实现Action接口n在前端控制器添加一个if/else判断演示示例:演示示例:Action实现实现指导指导完成用户注册功能完成用户注册功能2-1n 训练要点:训练要点:n掌握自定义MVC框架n使用Servlet作为控制器n 需求说明:需求说明:n开发自定义MVC框架n通过自定义Action实现逻辑控制n完成用户注册功能指导指导完成用户注册功能完成用户注册功能2-2n 实现思
6、路:实现思路:n开发模型M:实现业务逻辑的接口和类n开发控制器C:自定义Action,由RegisterAction类实现n开发视图V:register.jspn调试运行完成时间:完成时间:20分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解Controller的完善的完善7-1n 在基础版本的自定义在基础版本的自定义MVC框架中,每新增一个框架中,每新增一个Action就要去改前端控制器的代码,框架代码不就要去改前端控制器的代码,框架代码不通用,有没有好的解决办法呢?通用,有没有好的解决办法呢?将
7、将url与与Action的映射信息保存在配置文件中,的映射信息保存在配置文件中,增加增加Action只需要修改配置文件只需要修改配置文件Controller的完善的完善7-2n 使用配置文件保存使用配置文件保存Action信息信息!DOCTYPE mystruts. page/register_success.jsp page/register.jsp page/register.jsp page/manager.jsp page/result.jsp Action名称名称Action应用路径应用路径设置页面转向设置页面转向Controller的完善的完善7-3n 保存保存Action信息信息
8、public class ActionMapping /* Action 元素中的元素中的name 属性属性*/ private String name; /* Action 元素中的元素中的className 属性属性*/ private String className; /* 保存配置的保存配置的Result 属性信息属性信息*/ private Map resultMap=new HashMap(); /省略省略setter/getter 方法方法 public String getResult(String name) return resultMap.get(name); publ
9、ic void addResult(String name,String result) this.resultMap.put(name, result); 保存保存Action信息的信息的集合集合获取获取Action添加添加ActionController的完善的完善7-4n 读取读取Action信息信息public void init(String configureFileName) . InputStream is = this.getClass().getResourceAsStream(/ + configureFileName); /使用使用dom4j 读取读取XML 文件文件
10、Document doc = new SAXReader().read(is); Element root = doc.getRootElement(); / 遍历所有遍历所有Action 元素元素 Iterator actionsIt = root.elements(actions).iterator(); .配置文件名称配置文件名称获取文件信息获取文件信息读取配置文件读取配置文件获取信息内容获取信息内容Controller的完善的完善7-5n 使用反射生成使用反射生成Actionpublic class ActionManager /* * createAction方法用来获取方法用来获取
11、Action实例实例 * param className Action的全限定类名的全限定类名 */ public static Action createAction(String className) try return (Action)loadClass(className).newInstance(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace(); return null; .根据名称创建根据名称创建Action实例
12、实例Action的类名称的类名称Controller的完善的完善7-6 /* * loadClass方法动态加载类。方法动态加载类。 * param className Action的完全限定名的完全限定名 */ public static Class loadClass(String className) Class clazz = null; try clazz = Thread.currentThread() .getContextClassLoader().loadClass(className); catch (ClassNotFoundException e) e.printSta
13、ckTrace(); if(clazz = null) try clazz = Class.forName(className); catch (Exception e) e.printStackTrace(); return clazz; 根据名称创建根据名称创建Class对象对象根据类名称得到当根据类名称得到当前运行前运行Class对象对象Controller的完善的完善7-7n 修改修改ActionServlet配置信息配置信息 ActionServlet cn.jbit.mystruts.framework.servlet.ActionServlet config mystruts.x
14、ml 0设置设置ActionServlet初始化初始化参数参数ActionServlet的引的引用地址用地址Web应用启动时就加载该应用启动时就加载该Servlet指导指导使用使用MVC完成用户登录完成用户登录2-1n 训练要点:训练要点:n掌握MVC模式n读取配置文件n动态加载类的实例n 需求说明:需求说明:n完善自定义MVC框架,读取配置文件,动态加载Action实例n使用完善后的自定义MVC 框架,实现用户登录功能讲解需求说明讲解需求说明指导指导使用使用MVC完成用户登录完成用户登录2-2n 实现思路:实现思路:n编写配置文件n编写ActionMapping类,保存Action信息n读取
15、配置文件n反射生成Actionn完善Controllern修改LoginActionn开发视图n调试运行完成时间:完成时间:30分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解完善视图完善视图4-1n 保存视图保存视图public class Result private String name; private String value; private boolean isRedirect; public boolean isRedirect() return isRedirect; publi
16、c void setRedirect(boolean isRedirect) this.isRedirect = isRedirect; /省略省略setter/getter 方法方法使用使用Result类保存类保存视图信息视图信息完善视图完善视图4-2n 修改修改ActionMappingpublic class ActionMapping private Map resultMap=newHashMap(); /* 根据根据 result-name,返回返回Result 实例实例*/ public Result getResult(String name) return resultMap
17、.get(name); /* * 向向Map 中添加一个中添加一个Result 实例。实例。 */ public void addResult(String name,Result result) this.resultMap.put(name, result); 使用使用Result类保存类保存视图信息视图信息完善视图完善视图4-3n 修改修改ActionMappingManager类类 /遍历遍历Action 元素的子元素元素的子元素-result for (Iterator resultIt =action.elementIterator(result);resultIt.hasNext
18、();) /redirect表示是否重定向表示是否重定向 String isRedirect =resultElement.attributeValue(redirect); result.setRedirect(Boolean.valueOf(isRedirect); result.setValue(resultElement.getText(); /把每个封装好的把每个封装好的Result 添加到添加到ActionMapping 中中 mapping.addResult(name, result); 读取重定向标识读取重定向标识将读取结果保存到将读取结果保存到Result中中完善视图完善视
19、图4-4n 修改修改ActionServlet ActionMapping mapping = this.getActionMapping(request); Action action =ActionManager.createAction(mapping.getClassName(); String resultName = action.execute(request, response); Result result = mapping.getResult(resultName); if(result = null)response.sendError(404, 未配置未配置Action 的的result 元素元素); return ; if(result.isRedirect()response.sendRedire
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北正定师范高等专科学校《中国城市发展与规划史》2023-2024学年第二学期期末试卷
- 重庆工程职业技术学院《建筑及周边环境设计》2023-2024学年第二学期期末试卷
- 2025武汉官方购房合同范本电子版
- 浙江艺术职业学院《水利水电工程施工》2023-2024学年第一学期期末试卷
- 2025工业设备采购合同范本简约版
- 2025年广东省简易服务合同范本
- 沈阳航空职业技术学院《医学科研与论文写作》2023-2024学年第二学期期末试卷
- 重庆对外经贸学院《统一建模语言及工具》2023-2024学年第二学期期末试卷
- 连云港职业技术学院《中国音乐史及作品欣赏2》2023-2024学年第一学期期末试卷
- 贵州电子科技职业学院《婴幼儿早期教育指导》2023-2024学年第二学期期末试卷
- 番茄红素课件
- 《核舟记》课后练习及参考答案
- 外来文件一览表
- 增材制造产业调研报告
- 以刀代笔——手工橡皮章课件
- 医院环境卫生整治排查表
- 劳动课程校本教材(共43页)
- 喜达屋明星服务
- 烟草企业安全生产标准化规范-第3部分-考核评价准则和方法
- 风机配套件知识
- 硼氢化钠还原全文
评论
0/150
提交评论