JAVA复习.docx
- 文档编号:29451125
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:23
- 大小:61.92KB
JAVA复习.docx
《JAVA复习.docx》由会员分享,可在线阅读,更多相关《JAVA复习.docx(23页珍藏版)》请在冰豆网上搜索。
JAVA复习
Struts2
什么是Struts?
是Apache软件基金会赞助的一个开源项目,是一个基于JavaEE的MVC开源实现。
是MVC设计模式中的一个经典产品,它为Servlet/JSP技术的应用提供技术框架
Struts项目的基本组成:
控制组件:
核心控制器和业务控制(Action)
模型组件:
JavaBean、EJB等
视图组件:
JSP、HTML页面等
配置文件:
web.xml、struts.xml等
web.xml文件:
所在目录为WEB-INF,主要用于配置Struts2的核心控制器,配置代码(P165)。
struts.xml文件:
核心配置文件,所在目录为WEB-INF\classes,主要用于负责管理Struts2框架的业务控制器Action,可在其中定义动作包、动作、拦截器等内容。
可以应用include标识将复杂的配置文件分为多个文件,代码如下:
struts-default.xml文件:
是struts2的预定义配置文件,保存在struts2-core类包中,定义了Struts2的各种常用类、动作包和拦截器。
在struts.xml定义动作包时需要使用extends关键字设置指定包名继承struts-default包,例如:
default.properties文件:
保存在struts2-core类包中,用于保存Struts2的各种默认属性。
常用属性如:
struts.action.extension:
定义struts2动作的扩展名,默认为action;
struts.i18n.encoding:
定义struts2的编码机制,默认值为UTF-8
default.properties文件中的所有属性可以通过自定义struts.properties(保存在src目录下)或struts.xml文件的constant标识进行修改,例如:
2.1struts2的控制组件
struts2的控制组件类型:
核心控制器:
过滤器
业务逻辑控制器:
Action
创建业务逻辑控制器步骤:
创建Action类
创建struts.xml配置动作包和动作
1.创建Action类
创建Action类方法:
POJO
实现Action接口
扩展ActionSupport类
扩展ActionSupport类创建动作类语法
•扩展ActionSupport类
•在动作类设置成员变量及对应传入参数的属性的setter和getter方法。
•动作类通过属性的setter方法获取客户端传来的数据,并保存在动作类变量中,客户端则通过属性的getter方法获取动作类的属性值
•动作类被访问后默认执行execute()方法:
publicStringexecute()throwsException
•动作类处理客户端请求后会返回一个字符串,每个字符串对应一个逻辑视图
•当动作类继承了ActionSupport后,通常使用以下一些常量作为动作执行后的返回值:
INPUT、SUCCESS、LOGIN、NONE和ERROR
2.在struts.xml中定义动作包和动作
定义动作包:
使用package标记,可以包含多个动作,常用属性如下:
namenamespaceextends
定义动作:
使用action标记,在动作标记内包含子标记定义结果、异常等内容,常用属性如下
nameclass(指定进行业务逻辑处理的动作类全限定性名称)
method
定义动作结果:
使用result标记,可以在一个
name(定义结果的逻辑视图名字)type
2.2在Struts2项目中应用控制组件
步骤:
①创建web项目
②搭建struts2运行环境
③在web.xml文件中设置核心控制器
④创建一个扩展ActionSupport的动作类
⑤创建结果显示JSP文件,保存目录为WebRoot
⑥创建struts.xml,在其中定义动作包、动作等内容,保存目录为src
2.3执行动作中不同的方法
方法一:
动态方法调用(DMI),格式:
在URL中使用:
动作名!
方法名来调用动作的不同处理方法。
方法二:
通过在struts.xml中的每个动作中指定执行的业务逻辑方法来处理不同情况下的请求
方法三:
使用通配符。
通过在struts.xml中使用通配符可以在不同请求情况下执行不同动作方法。
常用结果类型
属性:
type
dispatcher:
默认结果类型,表示使用的视图技术是JSP,将请求转发给视图页面
redirect:
重定向到视图页面,参数不能传递
redirectAction:
动作转向结果类型,表示将访问转到其他动作
chain:
动作链结果类型,表示请求将转到一系列的其他动作进行处理
freemark:
表示使用freemark视图技术
struts.xml配置(P171)
Struts2标签
Struts2主要使用了Struts2标签库和OGNL表达式语言二项技术来简化表现层方面的开发。
Struts2提供了一个标签库:
struts-tags标签库,几乎所有struts2标签都整合到其中
struts2标签类型
UI标签:
•表单标签:
主要用于生成HTML表单
•非表单标签:
主要包含用于显示信息的标签,如:
actionerror、actionmessage
非UI标签:
•逻辑控制标签:
主要用于条件、循环等流程控制,如if、elseif、iterator
•数据标签:
主要用于数据存储和处理,如property、bean、text
Ajax标签:
主要用于支持Ajax,如显示日期的datetimepicker
struts2表单及其元素标签
•表单标签:
s:
form
常用属性:
method:
定义表单信息提交的方法,默认为post
•按钮标签:
•提交按钮:
s:
submit,用于提交表单数据
•重置按钮:
s:
reset,用于返回表单的默认值
•输入框标签:
•文本框标记:
s:
textfield,用于输入单行文本
•密码框标记:
s:
password,用于输入密码
•文本域标记:
s:
textarea,用于输入多行文本
•选择框标签:
•单选框标签:
s:
radio,用于在一组选项中互斥选择,即一次只能选择一项
•复选框标签:
s:
checkbox,可同时选择多个选项
•复选框集合标签:
s:
checkboxlist,用于选择多个选项,可一次设置多个复选框
value:
定义选择框的默认选中项
listKey:
指定集合元素中的某个属性作为选择框的value。
元素为Java对象,则指定为该对象的某个属性名;元素为Map对象,则指定为该对象的key或value
listValue:
指定集合元素中的某个属性作为选择框的label。
元素为Java对象,则指定为该对象的某个属性名;元素为Map对象,则指定为该对象的value或key
•列表框标签s:
select:
用于创建列表框
value:
定义列表的默认选中项
list:
定义列表的各列表项值,注意:
如果list属性不是一个字符串集合,而是一个Java对象或Map对象,则还须指定listKey和listValue两个属性
•s:
label
只读标签,用于输出指定属性的信息到浏览器
name:
指定需要输出的属性的名字
•常用struts2数据标签:
–s:
property:
用于输出指定属性的值到浏览器
–s:
param:
用于为其他标签提供参数,经常与s:
bean、s:
url等标签一起使用
–s:
bean用于创建一个JavaBean实例对象,经常嵌套使用param标签为该JavaBean实例指定属性值
属性name:
指定该JavaBean类的全限定性名称、
–s:
set:
用于定义一个新的变量
–s:
include:
用于将一个JSP或Servlet等资源包含到当前页面中,可通过param标签向被包含的页面传递参数
–s:
text:
用于显示资源文件中的指定key的属性值
–s:
url:
用于生成一个URL地址,经常使用s:
param标签来提供参数
•常用struts2逻辑标签:
•s:
if:
用于进行条件判断,如果条件为真,则执行该标签体内的代码
•s:
elseif:
用于进行条件判断,如果条件为真,则执行该标签体内的代码
•s:
else:
与s:
if结合使用,如果s:
if不满足条件,则执行s:
else后面的语句
•s:
iterator:
用于循环遍历集合或数组中的所有元素。
一般配合 property>标识来输出所遍历到的元素 •常用非表单UI标签: •s: fielderror: 用于显示字段校验错误信息 •s: actionerror: 用于输出动作类级别的校验错误信息 •s: actionmessage: 用于输出动作类级别中的信息 使用主题模板 •Struts2提供了以下四种主题: –simple –xhtml –css_xhtml –ajax •Struts2的默认主题是xhtml,可通过theme属性修改该默认主题,如: formtheme=“simple”/> Struts2拦截器 拦截器的作用是动态拦截Action调用的对象。 它提供了一种机制,使开发者可以在一个action执行之前和(或)之后插入需要的代码,也可以在一个action执行前阻止其执行,同时它也提供了一种可以提取Action中可重用代码的方式 拦截器其实就是一个实现了Interceptor接口的JAVA类,其中包含了以下三个方法: voidinit() voiddestory() Stringintercept(ActionInvocationinvocation): 实现拦截功能 拦截器栈(链): 将多个拦截器按一定的顺序联结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按配置文件中所指定的顺序依次被调用 拦截器的配置 •拦截器在使用之前,必须在配置文件中进行配置。 –定义拦截器: 指定拦截器名字和拦截器类,包括拦截器和拦截器栈的定义 –使用拦截器: 在动作中对已定义好的拦截器的引用 •Struts2框架提供的所有拦截器都在struts-default.xml中配置;自定义的拦截器需要在struts.xml进行配置 •自定义拦截器方法: –方法一: 实现Interceptor接口,并重写init、intercept和destroy方法;应用ActionInvocation接口的invoke方法执行下一下拦截器或动作 –方法二: 扩展抽象类AbstractInterceptor,并根据需要重写init、intercept和destroy方法;应用ActionInvocation接口的invoke方法执行下一下拦截器或动作 •如何只拦截指定方法? 使用Struts2所提供的拦截器方法过滤特性。 使用拦截器方法过滤特性语法: –继承MethodFilterInterceptor抽象类,并重写doIntercept(ActionInvocationai) –在struts.xml中使用拦截器时使用参数”includeMethods”来指定需拦截的方法;使用“excludeMethods”来指定不需拦截的方法。 struts2国际化概述 •国际化主要是指语言的国际化,通俗的讲就是在不修改程序内部代码的前提下,根据客户端所处的地区语言环境显示相应语言的界面。 •Struts2国际化建立在Java国际化的基础上,借助于拦截器和国际化资源文件,使得国际化的实现过程更加简单 struts2国际化资源文件 •在程序获得了客户端地区语言环境后,Struts2会查找struts.xml或struts.properties配置文件或根据资源文件的名称来加载国际化资源文件 国际化资源文件命名规则: baseName_language_country.properties •例如: –message_zh_CN.properties –message_en_US.properties 资源文件的类型 •全局资源文件: 对整个应用程序有效,必须保存在src目录下,注意: 全局资源文件名称需要在struts.xml中使用如下所示的形式定义: •包级别的资源文件: 对包中所有类有效,需在包的根目录下新建package_language_country.properties资源文件 •动作类级别资源文件: 只对该动作类有效,需要在动作包下新建 动作类名_language_country.properties的资源文件 •临时的资源文件: 用于视图页面中输出国际化消息临时指定国际化资源的位置,此时需使用在 i18nname=“XXX”>来指定资源文件(如: XXX),可将该标签作为 text>或表单标签的父标签。 临时资源文件必须存放在src目录下 资源文件的加载顺序: •在动作类中访问国际化信息的加载顺序: 动作类级别资源文件>>包级别的资源文件>>全局资源文件 •在JSP页面中访问国际化信息的加载顺序: •使用 i18n>时: 临时资源文件>>全局资源文件 •没有使用 i18n>时: 直接全局资文件 •如果在所有的资源文件中都找不到,将输出属性key的字符串值 Struts2文件上传概述 •Struts2使用Commons-FileUpload上传框架从HttpServletRequest请求中解析出所有的表单域,包括文件域和普通表单域 •Common-FileUpload框架是Apache组织下的jakarta-commons项目的一个子项目,借助于Commons-IO项目,该框架可以方便地将使用”multipart/form-data“数据编码的表单域解析出来 •必须将类包commons-fileupload和commons-io保存到WEB-INF\lib目录下 •使用表单File域来上传文件,同时必须设置表单的enctype=“multipart/form-data”以及method=“post” •在动作中声明以下三个变量: –FileXXX: 对应上传文件内容的变量 –StringXXXFileName: 对应上传文件的文件名 –StringXXXContentType: 对应上传文件的类型(可选) 设置上传文件的大小和类型 •在文件上传时可以限制文件的大小和类型 •使用Struts2框架所提供的fileUpload拦截器,通过指定以下两个属性可以很容易实现上述功能: –allowedTypes: 指定允许上传的文件类型 –maximumSize: 指定允许上传的文件大小,单位为字节 •当上传文件不符合要求时,系统自动转到input逻辑视图 Struts2的类型转换 •数据类型转换的必要 •Struts2内置类型转换器 •基于OGNL的类型转换器 •自定义类型转换器 Struts2中的输入校验类型: –客户端校验: 通过在HTML页面中的JavaScript来校验,方式: 自定义脚本或使用Struts2框架自带的客户端校验机制(设置form的validate属性为true即可) –服务端校验: 通过后台加入检验代码实现 使用编程方式进行校验 在action类可以通过编程方式实现输入校验,根据校验代码的位置,又可为以下两种: –使用业务逻辑处理方法校验 –使用validate或validateXxx方法校验 使用Struts2校验框架校验 •该方式是指将校验代码从action代码中剥离出来,以声明的方式放到XML配置文件中,从而简化了action代码。 •使用校验框架校验语法: –必须定义一个与动作类同名、保存在同一目录下的且后缀为-validation.xml的XML校验配置文件,如动作类名为ValidateAction,则该XML文件名为ValidateAction-validation.xml –必须在XML校验配置文件中对每个校验属性配置校验器 Struts2校验器的配置方式有两种: 字段型校验器的配置方式 非字段型校验器的配置方式 Hibernate •ORM框架: ORM(Object/RelationMapping,对象关系映射),用于将关系型数据库包装成面向对象的模型,即实现Java应用中的对象与关系数据库中的数据进行映射 •主流的ORM框架有hibernate、TopLink等,其中hibernate应用最广泛 映射文件 •用于设置持久化类与数据库表的映射关系,是hibernate的核心所在。 •一般以持久化类名+hbm.xml来命名,如Person.hbm.xml;并保存在与持久化类同目录下 •最主要的元素有: – 设置类-表之间的映射 – 设置主键映射 – 设置属性-表字段之间的映射 – 设置关联映射 常用主键生成方式: –assigned: 由应用程序生成 –identity: 使用数据库提供的自增长主键机制,如Mysql –sequence: 使用数据库提供的sequence机制生成主键,如oracle –native: 由hibernate根据数据库驱动定义,自动选择主键生成机制 hibernate对象状态 •在hibernate中,Java对象在整个生命周期中存在以下三种状态: –瞬时状态: 在内存中刚刚创建的对象,数据库中没有数据与之对应,与session也没有关联 –持久化状态: 数据库中有数据与之对应,且与session有关联;持久对象状态发生改变时,事务提交时会自动更新数据库 –游离状态: 数据库中有数据与之对应,但当前没有session与之关联;对象状态发生改变,hibernate不能检测到,必须调用update()才能更新到数据库 Hibernate核心类和接口 •Configuration类: –负责读取及解析Hibernate的配置信息 –创建SessionFactory实例 Configuratoncfg=newConfiguration(); cfg.configure();//读取配置文件 //创建SessionFactory实例 SessionFactorysf=cfg.buildSessionFactory(); •SessionFactory接口: –缓存了解析后的配置信息 –在应用初始化时创建,一个应用程序只有一个会话工厂 –用于创建Session实例 Configuratoncfg=newConfiguration(); cfg.configure();//读取配置文件 SessionFactorysf=cfg.buildSessionFactory(); Sessionsession=sf.openSession(); •Session接口: –Session代表与数据库之间的一系列操作 –所有持久化操作都需要使用该接口 –所有持久化操作完成后,需要关闭会话 Configuratoncfg=newConfiguration(); cfg.configure();//读取配置文件 SessionFactorysf=cfg.buildSessionFactory(); Sessionsession=sf.getCurrentSession(); •Transaction接口: –使用Hibernate进行持久化操作必须显式开启事务 –使用Session实例开启事务 –持久化操作在事务提交后生效 Configuratoncfg=newConfiguration(); cfg.configure();//读取配置文件 SessionFactorysf=cfg.buildSessionFactory(); Sessionsession=sf.openSession(); //开启事务 Transactiontx=session.beginTransaction(); ……//持久化操作 mit();//提交事务 关联映射 •类之间的关联是指一个类可以访问另一个类的属性和方法 •根据关联的导航性,可以分为单向关联和双向关联 •关联方式: –一对一 –一对多或多对一 –多对多 单向多对一关联 •语法: –需要在“多”的一方(主动方)的持久化类中声明一个“一”方(被动方)类型的属性 –在“多”的一方的映射文件中使用 –需要在 单向一对多关联 –需要在“一”的一方(主动方)的持久化类中声明一个元素为“多”方(被动方)类型的集合属性 –在主动方的映射文件中使用 –在 可在 双向一对多关联 –同时应用单向一对多和单向多对一关联的语法 可在一对多关联的设置中设置控制反转: 在 一对一关联 •一对一关系表在hibernate映射中使用两种处理方式: –唯一外键: 是多对一的特殊形式,要求在多方映射表中指向一方的外键不能重复出现 –共享主键: 指的是被动方的主键通过外键的方式使用主动方的主键 唯一外键关联 –需要在关联主动方中声明一个被关联类型的属性 –需要在关联主动方的映射文件中使用 –如果是双向关联,则在另一个关联方的映射文件中使用 共享主键关联 –需要在每个持久化类中声明一个关联被动方类型的属性 –需要在每个持久类的映射文件中使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)