




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 struts原理第3章 struts原理 【实验目标】 完成本章的内容以后,您将达到:u 掌握struts工作原理u 依据struts工作原理模拟一个简化版的MVC框架u 学会搭建struts工作环境。u 学会使用struts的基本功能实现开发。 第一阶段 练习:首先建立名为selfMvc的web project项目,然后完成以下功能 :自定MVC框架,完成前台控制器的web.xml中的配置和初始化编码;1、创建Action的标准,即Action接口:package com.selfMvc.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public interface Action public String execute(HttpServletRequest request, HttpServletResponse response);2、利用向导创建ActionServlet: 3、在web.xml文件中加入如入代码:(红色部分): ActionServlet com.selfMvc.servlet.ActionServlet config /WEB-INF/perties ActionServlet *.do 4.在/WEB-INF/下建立文件config.prperties,内容如下:hello=com.bu3g.action.HelloAction5、打开ActioinServlet,重写其init()方法,代码如下:/* * * 完成将配置文件加载到内存的初始化工作, * 这样以后不用再每次从配置文件中读取数 * 据,而是从内存中读取即可,大大加快数 * 据的读取效率 * * throws ServletException if an error occure */public void init() throws ServletException / Put your code here/从web.xml文件中的提取名为config的初始化参数String path = this.getInitParameter(config); /得到配置文件的路径if(path = null | path.equals()path = /WEB-INF/perties;/根据配置文件中的路径,将文件加载到内存中的输入流中InputStream in = this.getServletContext().getResourceAsStream(path);Properties prop = new Properties();try prop.load(in); /将输入流中的数据解析成为Properties结构this.getServletContext().setAttribute(config,prop); /将propeties对象保存到servlet上下文中 catch (IOException e) / TODO 自动生成 catch 块e.printStackTrace(); 第二阶段练习 重写ActionServlet的doPost()和doGet()方法,实现根据请求的url中的资源路径找到对应的Action,并调用Action的execute()实现请求处理,然后根据execute()方法返回的响应路径实现页面跳转这样的一个工作流程.1、 重写doGet()方法如下:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doPost(request, response);2、重写doPost()方法如下:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /获得HTTP请求的URLString url = request.getRequestURI();/获取请求的资源路径的在请求的URL中的开始和结束位置 int start = url.indexOf(/, 2);int end = url.lastIndexOf(.);/从URL中截取请求的资源路径String actionPath = url.substring(start+1,end);/从servlet上下文中获取存放约定信息的Properties对象Properties prop = (Properties)this.getServletContext().getAttribute(config);/获得与请求匹配的action的类名,并通过反射由类名得到Action的实例String actionClassName = (String)prop.get(actionPath);Action action = null;try action = (Action) Class.forName(actionClassName).newInstance();/调用Action的execute方法处理请求,返回响应路径String viewPath = action.execute(request, response);/按响应路径将请求转发到JSPrequest.getRequestDispatcher(viewPath).forward(request, response); catch (InstantiationException e) / TODO 自动生成 catch 块e.printStackTrace(); catch (IllegalAccessException e) / TODO 自动生成 catch 块e.printStackTrace(); catch (ClassNotFoundException e) / TODO 自动生成 catch 块e.printStackTrace();3、到上面那步为止,我们的自定义的Mvc框架就基本完成了,下面实现一个helloworld来测试: 3-1:创建hello.jsp页面,代码如下: My JSP hello.jsp starting page 3-2:建立HelloAction实现Action接口,代码如下:package com.bu3g.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.selfMvc.action.Action;public class HelloAction implements Action public String execute(HttpServletRequest request,HttpServletResponse response) / TODO 自动生成方法存根return /hello.jsp;3-3:在配置文件peties实现请求约定的配置(若前面配置好的话则不要再配):hello = com.bu3g.action.HelloAction3-4:发布项目到tomcat,并启动tomcat.3-5:输入网址:http:/localhost:9090/selfMvc/hello.do 第三阶段-练习利用自定义的MVC框架实现计算器:1、建立界面原型: 1-1:建立计算器页面calc.jsp: base href= 计算器 算术计算器 第一个数: 第二个数: 1-2:建立result.jsp显示运算结果: base href= 计算结果 计算结果为: 第一个数: 第二个数: 结果: 2、打开配置文件perties在里面实现HTTP请求与Action的约定:(红色部分)hello = com.bu3g.action.HelloActionadd = com.bu3g.action.AddAction3、 在包com.bu3g.action中创建类AddAction,实现Action接口:package com.bu3g.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.selfMvc.action.Action;public class AddAction implements Action public String execute(HttpServletRequest request,HttpServletResponse response) / TODO 自动生成方法存根4、在AddAction的execute()方法中实现加法功能。public String execute(HttpServletRequest request,HttpServletResponse response) / TODO 自动生成方法存根/从请求中获取用户的参数String numstr1 = request.getParameter(num1);String numstr2 = request.getParameter(num2);/验证用户参数是否合法if(numstr1 = null | numstr2 = null | numstr1.equals() | numstr2.equals() ) /若参数不合法,则将错误信息保存到request作用域 request.setAttribute(error, 用户名或密码不能为空);/将跳转路径作为字符串返回return /calc.jsp;/将字符串转换为整数,得到两个加数,并相加int num1 = Integer.parseInt(numstr1);int num2 = Integer.parseInt(numstr2);int result = num1+num2;/保存运算结果到请求作用域对象request.setAttribute(result, result);return /result.jsp;5、在calc.jsp页面中修改代码:(红色部分) 主要是两个方面: 将的数据提交给AddAction; 显示错误信息。 base href= 计算器 算术计算器 第一个数: 第二个数: 6、在result.js
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《综合实践活动课程指导》(五四制专版)六年级上册的主题5-神奇的中医说课稿
- 2025合同样本:股权转让程序模板
- 2025建筑施工安全合同范本
- 2025标准上海市商业店铺租赁合同模板
- 2025供应商合同模板甲供货物合同
- 客至教学设计-2023-2024学年高中语文选择性必修下册统编版(部编版)
- 五 视力健康与保护说课稿-2025-2026学年小学综合实践活动粤教版六年级下册-粤教版(2016版)
- 高中信息技术视频的加工之高中生活点滴说课稿 粤教版
- 2.1 植物细胞工程(第2课时 应用)(教学设计)高二生物同步高效课堂(人教版2019选择性必修3)
- 江苏事业单位笔试真题2025
- 糖尿病足报告
- 国有企业战略使命评价制度
- 吊车施工专项方案
- 肺栓塞患者护理查房课件
- 合规风险管理制度
- 病毒课件教学课件
- 9月30日烈士纪念日缅怀先烈功绩弘扬先烈精神课件
- 2024年华东师大版八年级数学上册同步练习题及答案
- 数字化印花工艺智能化
- 香雪制药资本结构优化分析
- 2024年高考作文备考之“有用无用”作文导写素材及范文
评论
0/150
提交评论