




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Struts2基础知识Struts2概述1.Struts2框架应用javaee三层结构中的web层框架。2.Struts2框架在struts1和webwork基础之上发展的全新框架。3.Struts2所解决的问题:在以往实现一个功能时,都需要写很多的servlet,从而造成后期维护上的不方便。图解:4.现在比较稳定的Struts2版本struts-2.3.24-all.zip5.web层常见框架1.struts2.springMVCStruts2框架入门1.导入jar包1.在lib里面有jar包,但不能全部导入,因为里面含有一些spring包,是不能使用的,导入会导致程序不能运行。2.到app目录里面复制案例的jar包是最好的方法。2.创建action3.配置action类的访问路径1.创建struts2核心配置文件,该核心配置文件位置和名称是固定的,位置必须在src下面,名称为struts.xml 。2.引入dtd约束,可以在案例文件中找到,复制在struts.xml文件中即可。3.action的配置*注意访问路径:http:/域名/端口号/项目名/action名.action注意:.action可以省略,但建议不要省略,为了兼容一些老版本的浏览器。4.配置Struts2的过滤器,可以在案例中的web.xml文件中找到,复制粘贴即可。Struts2执行过程图解:Struts2配置Struts2的核心配置文件1.名称和位置是固定的。2.在配置文件中主要有三个标签,package、action、result,以及各个标签内的其它属性。标签package1.类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能配置action 。2.package标签属性1.name属性,name属性的值跟功能本身没有关系的,在一个配置文件中可以写多个package标签,但name的属性值不能相同。2.extends属性,该属性的值是固定的,在package里面配置的类具有action功能。3.namespace属性,该属性值和action标签里面的name的属性值构成访问路径,可以不写,推荐写上,默认为/。标签action1.action标签配置action访问路径。2.action标签属性1.name属性namespace属性值和action标签里面的name属性值构成访问路径。在package标签里面可以写多个action标签,但是action的属性name的值不能够相同。2.class属性 action的全路径,即包名+类名3.method属性比如在action里面默认执行的方法是execute方法,但是在action里面写其他的方法,让action里面多个方法执行,使用method进行配置。标签result1.根据方法的返回值,配置到不同的路径下。2.result标签属性1.name属性和action中method所调用的方法返回值一致。2.type属性配置如何到路径中(转发/重定向),该属性值的默认是做转发操作。标签constant1.是一种常量标签2.修改Struts2的默认常量值1.常用方式在struts.xml中进行配置。2.其它两种方式1.在src下面创建perties文件并修改。2.在web.xml文件中进行修改。3.Struts2最常用的常量struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。分模块开发1.单独写配置文件,把配置文件引入到核心配置文件中,从而解决多人操作一个核心文件的问题。2.配置用法在.xml文件中加入即可。Action的编写方式1.action有三种编写方式第一种 创建普通类,这个不继承任何类,不实现任何接口第二种 创建类,实现Action接口,实现execute方法第三种 创建类,继承ActionSupport访问action的方法1.有三种方式访问action的方法第一种 使用action标签的method属性,在这个属性里面写要执行的action方法。缺陷:action每个方法都需要配置,如果action里面有多个方法,需要配置很多的action第二种 使用通配符实现(提高代码复用性)在action标签中的name属性写成”前缀_*”,method属性成”1”即可,该*号表示的是action方法中的各个方法,而1是取name属性值的第几个*号。第三种 动态访问实现(了解,极少使用)2.注意*1.在action里面的方法有返回值,其类型必须为String2.action里面的方法可以没有返回值,没有返回值的时候,action标签里的result标签可以不配置。action方法设置无返回值的方法有两种,一种是将方法的返回值类型设为void,另一种是返回一个”none”的字符串。Struts2笔记(一)1、结果页面的配置(result标签)1、作用:result标签配置action方法的返回值到不同的路径里面。2、全局页面的使用:当在result标签中返回的值和路径是一致的时候,就可使用全局页面。1、配置方法:在package标签下配置2、注意:该标签只能在一个package标签中使用,如果有多个标签,需要重新定义。3、局部结果页面:指的就是在action标签里配置1、配置方法:在action标签下配置2、注意:如果既配置了全局,又配置了局部,会以局部为准,全局不起作用。4、type属性1、作用:如何到路径里面(即定义转发还是重定向)。2、属性值:1、默认值:dispatcher,一般没有写,就是转发操作,浏览器地址栏不会改变。2、重定向:redirect,浏览器地址栏会改变 。3、chain:转发到action,一般不使用,因为有缓存。4、redirectAction:重定向到action 。2、使用Action获取表单提交的数据1、action获取表单提交数据的三种主要方式:1、使用ActionContext类。1、主要使用的方法:因为该方法是对象方法,所以需要一个ActionContext对象来调用,而创建ActionContext对象可以使用该类的一个静态方法来创建2、使用ServletActionContext类。1、主要使用的方法:3、使用接口注入方法(一般不用)。1、使用步骤:1、实现ServletRequestAware接口。2、实现该接口的方法。3、在该类中定义一个HttpServletRequest对象,并赋值。3、在action中操作域对象1、在Servlet中三个域对象:request、session、servletContext2、操作三个域对象1、request对象使用ServletActionContext类的静态方法getRequest(),得到该对象。2、session对象通过第一个知识点获取到request对象,再通过request对象获取到该对象。3、servletContext对象通过第一个知识点获取到request对象,再通过request对象获取到该对象。4、使用Struts2封装获取表单数据1、属性封装1、步骤:1、在类里定义私有成员变量,变量名必须和表单中name的值一致。2、使用get和set方法进行封装即可。2、缺点:不能把数据直接封装到实体类的对象里面。2、模型驱动封装1、作用:可以直接把表单数据封装到实体类对象里面。2、操作步骤:1、action实现接口ModelDriven2、实现该接口的getModel方法3、在action里面创建实体类对象4、注意:表单输入项name的属性值和实体类属性名称要一致。注意:使用模型封装和属性封装时,在一个action中,获取表单数据可以属性封装,也可以模型封装,但是不能两个封装同时使用,如果同时使用,只会执行模型封装。3、表达式封装1、作用:可以把表单数据封装到实体类对象里面。2、步骤:1、在action类里面声明实体类2、生成实体类变量的get和set方法。3、在表单输入项的name属性值里面写表达式形式的数据。3、优点:可以把数据封装到不同的实体类对象里面。5、表单数据封装到集合里面1、封装数据到List集合1、操作步骤1、在action中声明List集合2、生成该集合变量的get和set方法3、在表单输入项的name属性里写表达式2、封装数据到Map集合1、操作步骤1、在action中声明Map集合2、生成该集合变量的get和set方法3、在表单输入项的name属性里写表达式Struts2笔记(二)1、结果页面的配置(result标签)1、作用:result标签配置action方法的返回值到不同的路径里面。2、全局页面的使用:当在result标签中返回的值和路径是一致的时候,就可使用全局页面。1、配置方法:在package标签下配置2、注意:该标签只能在一个package标签中使用,如果有多个标签,需要重新定义。3、局部结果页面:指的就是在action标签里配置1、配置方法:在action标签下配置2、注意:如果既配置了全局,又配置了局部,会以局部为准,全局不起作用。4、type属性1、作用:如何到路径里面(即定义转发还是重定向)。2、属性值:1、默认值:dispatcher,一般没有写,就是转发操作,浏览器地址栏不会改变。2、重定向:redirect,浏览器地址栏会改变 。3、chain:转发到action,一般不使用,因为有缓存。4、redirectAction:重定向到action 。2、使用Action获取表单提交的数据1、action获取表单提交数据的三种主要方式:1、使用ActionContext类。1、主要使用的方法:因为该方法是对象方法,所以需要一个ActionContext对象来调用,而创建ActionContext对象可以使用该类的一个静态方法来创建2、使用ServletActionContext类。1、主要使用的方法:3、使用接口注入方法(一般不用)。1、使用步骤:1、实现ServletRequestAware接口。2、实现该接口的方法。3、在该类中定义一个HttpServletRequest对象,并赋值。3、在action中操作域对象1、在Servlet中三个域对象:request、session、servletContext2、操作三个域对象1、request对象使用ServletActionContext类的静态方法getRequest(),得到该对象。2、session对象通过第一个知识点获取到request对象,再通过request对象获取到该对象。3、servletContext对象通过第一个知识点获取到request对象,再通过request对象获取到该对象。4、使用Struts2封装获取表单数据1、属性封装1、步骤:1、在类里定义私有成员变量,变量名必须和表单中name的值一致。2、使用get和set方法进行封装即可。2、缺点:不能把数据直接封装到实体类的对象里面。2、模型驱动封装1、作用:可以直接把表单数据封装到实体类对象里面。2、操作步骤:1、action实现接口ModelDriven2、实现该接口的getModel方法3、在action里面创建实体类对象4、注意:表单输入项name的属性值和实体类属性名称要一致。注意:使用模型封装和属性封装时,在一个action中,获取表单数据可以属性封装,也可以模型封装,但是不能两个封装同时使用,如果同时使用,只会执行模型封装。3、表达式封装1、作用:可以把表单数据封装到实体类对象里面。2、步骤:1、在action类里面声明实体类2、生成实体类变量的get和set方法。3、在表单输入项的name属性值里面写表达式形式的数据。3、优点:可以把数据封装到不同的实体类对象里面。5、表单数据封装到集合里面1、封装数据到List集合1、操作步骤1、在action中声明List集合2、生成该集合变量的get和set方法3、在表单输入项的name属性里写表达式2、封装数据到Map集合1、操作步骤1、在action中声明Map集合2、生成该集合变量的get和set方法3、在表单输入项的name属性里写表达式Struts2笔记(三)1、Ognl概述1、定义:Ognl是一种表达式,这个表达式的功能比EL表达式功能更强大。2、功能:1、在Struts2中可以操作值栈数据。2、一般在Struts2中和Struts2标签一起使用操作值栈。3、使用步骤:1、在lib文件夹中加入Ognl的jar包。2、在jsp页面中引入Struts2标签库。3、使用标签,并给属性value设置值,比如求一个字符串的长度案例。2、什么是值栈1、定义:值栈就是Struts2框架中的一种存储机制,类似于域对象,可以存取值。每个Action对象里都有一个值栈区域。2、Servlet和Action的区别:Servlet的实例是在第一次访问时创建的,并且只创建一个实例,属于单例对象。Action的实例是在第一次访问时创建的,但是每次访问就会创建一个实例,属于多例对象。3、获取值栈步骤:1、获取ActionContext对象2、调用ActionContext的静态方法getValueStack()4、值栈的内部结构1、第一部分 root,结构是list集合,底层继承自ArrayList集合。2、第二部分 context,结构是Map集合,底层实现了Map接口。3、Struts2中debug标签的使用1、定义:该标签可以查看值栈的结构和存储值。2、使用步骤:访问action,执行action的方法有返回值,配置返回值到jsp页面,在jsp页面中使用该标签,在访问action,在页面出现一个debug的超链接,然后点击超链接即可。Struts2笔记(四)1、在值栈中存放数据1、在值栈中存放数据的三种方式1、首先获取值栈对象,调用值栈对象的set方法。2、首先获取值栈对象,调用值栈对象的push方法。3、在action类中定义一个成员变量,并生成变量的get方法。注意:一般第三种方式最常用,因为这种方式是在action中存储值,节约资源。然后第一种方式次之,第一种方式极少用到。2、在值栈中取出数据1、取出字符串2、取出集合3、取出对象3、EL表达式取数据的原理首先去获取request域的值,如果该域有值,就直接返回,如果没有值,那么就进入值栈中把值取出来,返回给request域对象。4、OGNL的#、%符号的作用1、#号:使用#号获取context里面的数据。使用时格式是#context的key名称.域对象名称,如#request.req 。2、%号:可以在Struts2标签中使用OGNL表达式。5、Struts2拦截器1、概述:拦截器就是Struts2框架中封装的功能的容器。在Struts2框架中有很多的功能,所有就有很多的拦截器,并不是每次都执行所有的拦截器,它只会执行一些默认的拦截器。2、默认拦截器的位置3、拦截器的执行时间在action对象创建之后,action的方法执行之前。4、拦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环境工程师执业资格认证考试试题及答案解析
- 2025年兽药协管员面试模拟题及详解
- 2025年幼师安全知识竞赛题含答案
- 微课课件和教学设计
- 2025年安全生产责任管理题集解析及答案
- 2025年无人机技术员面试模拟题库
- 课件9欢庆教学课件
- 2025年综治长助理笔试模拟题库及答案
- 2025年工程测量高级鉴定题库
- 2025年车队招聘面试问题解析
- 2025云南广南民族文化旅游产业有限公司招聘14人笔试备考试题及答案解析
- 2025年新学校军训合同协议书
- 2025年度剧院设施全面维修与日常维护服务协议
- 2025秋季开学第一次学校行政中层班子会上校长讲话:新学期班子履职聚力共促学校发展新跨越
- 2025年检验检测机构资质认定(授权签字人)试题(含答案)
- 建筑质量安全知识培训课件
- 抑郁症治疗个案分析文献综述
- 面试必杀技:保研面试实战模拟题库解析
- 2025年金融机具行业研究报告及未来发展趋势预测
- 2025年度中级经济师职称评审聘用合同样本
- 新业务开发管理办法
评论
0/150
提交评论