您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > Struts2知识点总结
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下面创建struts.properties文件并修改。2.在web.xml文件中进行修改。3.Struts2最常用的常量struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。分模块开发1.单独写配置文件,把配置文件引入到核心配置文件中,从而解决多人操作一个核心文件的问题。2.配置用法在.xml文件中加入includefile=”文件路径”/include即可。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、
本文标题:Struts2知识点总结
链接地址:https://www.777doc.com/doc-5545061 .html