项目分析:
Struts1.x是基于MVC框架而开发的一个项目:
M---model(DAO+DAOMAIN) -------à是一群普通的java类
V----view(jsp)-------à只负责显示和表单的提交
C---controller(servlet)--------à一般只有一个(除非是验证码)
项目要求:
本项目分为以下几个步骤来完成,时间是五天
每完成一部分都要进行相应的测试,并导出JAR包和压缩包。
一、MyStruts1.0的编写:
要求其中包含的文件有:
五个类: ActionMapping ActionMappings ActionFoward ActionServlet Action
一个配置文件:rule.xml
要求自己写的有:
*Action继承自Action
struts-config.xml并进行配置
.jsp页面进行业务的操作
原理分析:
二、MyStruts1.1的编写:---------à表单错误转发之后回来name等处还是有内容
要求其中包含的文件有:
四个类:ActionMapping Action ActionMappings ActionFoward ActionServlet FormBean FormBeans StrutsConfig
一个配置文件:rule.xml
要求自己写的有:
*Action继承自Action
*Form继承自ActionForm
struts-config.xml并进行配置
.jsp页面进行业务的操作
三、MyStruts1.2的编写:----2点要求-----à在配置文件中配置上资源文件和全局的forward标记
要求其中包含的文件有:
四个类:ActionMapping ActionMappings ActionFoward ActionServlet FormBean FormBeans StrutsConfig
Message
Message.tld中配置的类(继承自SimpleTagSupport)
一个配置文件:rule.xml message.tld
要求自己写的有:
*Action继承自Action
*Form继承自ActionForm
struts-config.xml并进行配置
.jsp页面进行业务的操作(有关于taglib的引入等)
STRUTS1.0版本报告:
编写顺序:
1. 先想好要解析的struts-config.xml文件将要按照何种格式写、各个标记的名称分别是什么、各个标记如何使用、写一个模板出来。
2. 看struts-config.xml中有那些标记,每个标记写一个实体类。对应的属性作为类的属性存在。对于有内容的要使用HashMap来存储并提供add和find方法--à为了解析的时候往上一级的对象中添加使用。
3. 编写rule.xml文件告诉digester如何解析
4. 编写ActionServlet类继承HttpSerlvet类实现service(HttpSerlvetRequest request,HttpServletResponse response)方法,注意里面是http
5. 在使用digester的jar包做解析的时候也用到了其他的jar包,所以在运行的时候要把commons-digester-1.8.jar commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar commons-logging.jar复制到lib的目录下。也就是说使用digester解析xml文档需要借助其他三个包
遇到的问题:
1.关于jar包,要引进的不是一个commons-digester-1.8.jar,还要引进commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar commons-logging.jar,因为digester解析的时候用到了其他的三个jar包
2.对于WEB-INF下面的jsp页面我们不能直接访问,只能通过转发才可以(也就是redirect是false才可以)。在使用相对路径的时候转发、链接、重定向、提交写法都一样,使用绝对路径的时候转发不必带工程的名称,而其他的必须带着。
3.忘记在web.xml对ActionServlet进行配置了
测试:
1. 在test中写了LoginAction类继承自Action
2. 自己按照解析规则编写了struts-config.xml文件,并进行相应的配置
3. 在WEB-ROOT下写了login.jsp写出登陆的主界面
4. 在WEB-INF/jsp写了main.jsp和error.jsp在页面,分别作为登陆成功和登陆失败转发的页面。(必须都为转发----redirect=”false”)
5. 在web.xml中对ActionServlet进行配置
效果:在浏览器输入:http://localhost:8080/MyStruts/login.jsp填写相应信息地址栏变为:http://localhost:8080/MyStruts/login.action 但是跳转到了main.jsp或者error.jsp页面。
进一步测试:
在项目上单击右键-àExport----àjava/JAR file--à选中src下面的包(名字为kang的包中有五个类和一个rule.xml文件)/点击浏览选中导到的位置并给jar包取个名字叫做struts1.0即可。
注意:
1在导出来的struts1.0.jar包中kang----五个类,也就是说仍然保存着导出时候的目录结构。所以在我们在使用其中类的时候要使用kang.类名(就是包名.类名,类似java.util.List)。在自己写得配置文件中也要写作kang.ActionSerlvet进行配置。
2.为什么不导出commons-digester-1.8.jar等四个jar文件?因为太大了,麻烦,到时候说明文档中告诉用户去下载哪个版本的哪个jar文件就可以了(不同版本的类中的方法的实现可能不同,所以要注明版本)。
步骤:
1. 把四个jar包和我们自己写的struts1.0.jar粘贴到lib下面
2. 在src目录下自己写一个struts-config文件进行配置(位置和标记都是固定的)
注意:一定是要在src的目录下写这个配置文件因为在ActionServlet中加载这个文件的时候的路径写的是:
digester.parse(ActionServlet.class.getClassLoader().getResource("struts-config.xml"));所以一定要卸载src的目录下面而且名称不可以错误:
<action-mappings>
<action path="/login" type="test.LoginAction" >
<foward name="success" path="/WEB-INF/jsp/main.jsp" redirect="false"/>
<foward name="fail" path="/WEB-INF/jsp/error.jsp" redirect="false"/>
</action>
</action-mappings>
3.写一个LoginAction继承自Action,实现execute方法。
4.在web.xml中进行ActionServlet的配置
5.在WEB-INF/jsp下面写main.jsp和error.jsp
6.在scr下面写一个login.jsp,描述登陆页面
测试过程和运作流程:
1.在页面输入http://localhost:8080/MyStruts/login.jsp
2.输入相关内容点击提交表单
分析:因为我们在web.xml中对ActionServlet进行了配置,所有*.action的请求都由ActionServlet这个servlet来处理。
在ActionServlet中先调用digester.jar把struts-config.xml中的配置信息按照rule.xml的规则解析成mappings对象。这时候所有的struts-config.xml中的信息已经保存在actionmappings、actionmapping、actionfoward对象里面。
按照ActionServlet的service方法,一步步调用对象的方法执行,最后重定向或者是跳转到某个页面。在这个项目中是转发到WEB-INF下面的某个页面。
其中service方法的流程是:
先在mappings中根据接收到的uri查找到mapping对象,然后得到mapping对象的type(要创建的Action对象的字符串名称),利用反射得到这个Action对象,调用这个对象的execute方法,得到字符串,利用这个字符串在mapping中查找到对应的forward对象,得到是转发还是重定向,以及重定向或者是转发到的地址。
STRUTS1.1版本报告:
这个版本是在上个版本的基础上改的,主要的改动有:
1. 新建立了ActionForm类,给类没有方法只是实现了serilizable接口(因为要网session或者是request中存放),本类的作用就是存储表单中的信息:
Map map = request.getParameterMap();
BeanUtils.populate(aform, map);
2. 新建立了StrutsConfig类,新建立了FormBeans和FormBean类,这三个类都是和struts-config.xml对应的标记的类,使用于存储配置文件中的信息的。
3. 删除了error.jsp将login.jsp剪切到了WEB-INF/jsp下面,修改了rule.xml文件:
<struts-config>
<form-beans>
<form-bean name="loginform" type="test.LoginForm"/>
</form-beans>
<action-mappings>
<action path="/login" type="test.LoginAction" name="loginform" attribute="lf" scope="session">
<foward name="fail" path="/login.jsp" redirect="false"/>
<foward name="success" path="/WEB-INF/jsp/main.jsp" redirect="false"/>
</action>
</action-mappings>
</struts-config>
分析:都是转发到页面main.jsp和login.jsp这里是按照绝对路径写的,都不必加工程名字。
要求是用户自己写的这个配置必须是写的是绝对路径,因为在ActionServlet中会调用这个路径,使用的时候也是按照绝对路径来使用的。
4. ActionServlet中对方法进行了整合,是各个方法更有条理性
遇到的问题:
1.在login.jsp确保登陆错误跳转回login.jsp的时候用户名部分有内容,则需要使用EL表达式:
用户名:<input type="text" name="name" value="${lf.name}"/><br>
但是表达式会以文本的形式出现在用户名的框里面,解决方法:在login.jsp头部添加<%@isELIgnored="false"%>
2.在利用digester解析struts-config.xml文件的时候,配置文件中的内容加载不进FormBeans中,原因是:在rule.xml文件中<pattern value="form-beans">和<pattern value="action-mappings">写的顺序颠倒了。
3.从login.jsp页面提取出来的信息加载进ActionForm中的时候,把ActionForm对象和FormBeans、FormBean弄混淆了,在传递参数的时候传递不过去。
操作和效果:
在地址栏输入:http://localhost:8080/MyStruts/login.jsp然后输入相应的用户名和密码,然后点击提交,如果正确的话会转发到main.jsp页面,如果错误的话则转发回到login.jsp页面,那么此时用户名一栏则有上次输错误的名字记录,每次都不一样
分享到:
相关推荐
iOS版微信抢红包Tweak.zip小程序
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot社区停车信息管理系统.zip
基于springboot南皮站化验室管理系统源码数据库文档.zip
## 数据指标说明 全要素生产率(TFP)也可以称之为系统生产率。指生产单位(主要为企业)作为系统中的各个要素的综合生产率,以区别于要素生产率(如技术生产率)。测算公式为:全要素生产率=产出总量/全部资源投入量。 数据测算:包含OL、FE、LP、OP、GMM共五种TFP测算方法!数据结果包括excel和dta格式,其中重要指标包括证券代码,固定资产净额,营业总收入,营业收入,营业成本,销售费用,管理费用,财务费用,购建固定资产无形资产和其他长期资产支付的现金,支付给职工以及为职工支付的现金,员工人数,折旧摊销,行业代码,上市日期,AB股交叉码,退市日期,年末是否ST或PT等变量指标分析。文件包括计算方法说明及原始数据和代码。 数据名称:上市公司全要素生产率TFP数据及测算方法(OL、FE、LP、OP、GMM) 数据年份:2000-2023年 数据指标:证券代码、year、TFP_OLS、TFP_FE、TFP_LP1、TFP_OP、TFP_OPacf、TFP_GMM
内容概要:本文详细总结了多种编程语言下常用的算法实现资源,涵盖Python、C++、Java等流行编程语言及其相关的开源平台、在线课程和权威书籍。对于每种语言而言,均提供了具体资源列表,包括开源项目、标准库支持、在线课程及专业书籍推荐。 适合人群:适用于所有希望深入研究并提高特定编程语言算法能力的学习者,无论是编程新手还是有一定经验的技术人员。 使用场景及目标:帮助开发者快速定位到合适的算法学习资料,无论是出于个人兴趣自学、面试准备或是实际工作中遇到的具体算法问题,都能找到合适的解决方案。 其他说明:文中提及多个在线学习平台和社区网站,不仅限于某一特定语言,对于跨学科或多元化技能培养也具有很高的参考价值。
基于springboot的交通旅游订票系统源码数据库文档.zip
内容概要:本文档是一份详细的GO语言教程,涵盖了Go语言的基础语法、数据类型、控制结构、函数、结构体、接口以及并发编程等多个方面。主要内容包括Go语言的基本概念和历史背景、环境配置、基本语法(如变量、数据类型、控制结构)、函数定义与调用、高级特性(如闭包、可变参数)、自定义数据类型(如结构体、接口)以及并发编程(如goroutine、channel、select)等内容。每部分内容都附有具体的代码示例,帮助读者理解和掌握相关知识点。 适合人群:具备一定编程基础的开发者,尤其是希望深入学习和应用Go语言的技术人员。 使用场景及目标:①初学者通过本教程快速入门Go语言;②有一定经验的开发者系统复习和完善Go语言知识;③实际项目开发中利用Go语言解决高性能、高并发的编程问题。 阅读建议:本文档全面介绍了Go语言的各项基础知识和技术细节,建议按章节顺序逐步学习,通过动手实践代码示例加深理解。对于复杂的概念和技术点,可以通过查阅更多资料或进行深入研究来巩固知识。
GEE训练教程
memcached笔记资料,配套视频:https://www.bilibili.com/list/474327672?sid=4486766&spm_id_from=333.999.0.0&desc=1
基于springboot校内跑腿业务系统源码数据库文档.zip
计算机控制光感自动窗帘控制系统设计.doc
基于SpringBoot的校园服务系统源码数据库文档.zip
基于SpringBoot+Vue的美容店信息管理系统源码数据库文档.zip
基于springboot程序设计基础课程辅助教学系统源码数据库文档.zip
这是一个原生的JS网页版斗地主小游戏,代码注释全。带有斗地主游戏基本的地主、选牌、提示、出牌、倒计时等功能。简单好玩,欢迎下载
基于springboot亚运会志愿者管理系统源码数据库文档.zip
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
基于springboot家校合作平台源码数据库文档.zip