struts配置.docx

上传人:b****5 文档编号:6496581 上传时间:2023-01-07 格式:DOCX 页数:14 大小:22.89KB
下载 相关 举报
struts配置.docx_第1页
第1页 / 共14页
struts配置.docx_第2页
第2页 / 共14页
struts配置.docx_第3页
第3页 / 共14页
struts配置.docx_第4页
第4页 / 共14页
struts配置.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

struts配置.docx

《struts配置.docx》由会员分享,可在线阅读,更多相关《struts配置.docx(14页珍藏版)》请在冰豆网上搜索。

struts配置.docx

struts配置

struts2配置

2009-03-2711:

01

Struts2环境

下载类库:

http:

//192.168.16.240/source/struts-2.0.11.1-lib.zip

完整类库列表

antlr-2.7.2.jar

commons-beanutils-1.6.jar

commons-chain-1.1.jar

commons-logging-1.0.4.jar

commons-logging-api-1.1.jar

commons-validator-1.3.0.jar

freemarker-2.3.8.jar

ognl-2.6.11.jar

oro-2.0.8.jar

struts-core-1.3.5.jar

struts2-codebehind-plugin-2.0.11.1.jar

struts2-config-browser-plugin-2.0.11.1.jar

struts2-core-2.0.11.1.jar

struts2-jasperreports-plugin-2.0.11.1.jar

struts2-jfreechart-plugin-2.0.11.1.jar

struts2-jsf-plugin-2.0.11.1.jar

struts2-pell-multipart-plugin-2.0.11.1.jar

struts2-plexus-plugin-2.0.11.1.jar

struts2-sitegraph-plugin-2.0.11.1.jar

struts2-sitemesh-plugin-2.0.11.1.jar

struts2-spring-plugin-2.0.11.1.jar

struts2-struts1-plugin-2.0.11.1.jar

struts2-tiles-plugin-2.0.11.1.jar

tiles-api-2.0.4.jar

tiles-core-2.0.4.jar

tiles-jsp-2.0.4.jar

xwork-2.0.4.jar

基础类库列表

commons-logging-1.0.4.jar

freemarker-2.3.8.jar

ognl-2.6.11.jar

struts2-core-2.0.11.jar

xwork-2.0.4.jar

基础配置

WEB.XML

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

/*

Struts.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http:

//struts.apache.org/dtds/struts-2.0.dtd">

--Addpackageshere-->

配置文件

struts.xml位置:

classes下配置Action

package

struts对配置的组织结构

类似于javapackage

属性:

*name:

包的名字,唯一标示

extends:

继承

namespace:

命名空间

abstract:

抽象申明

namespace

1defaultnamespace""

2rootnamespace"/"

3action搜索的顺序

当前namespace---一级一级向上搜索

Web应用的请求路径被视为namespace

4访问/aaa.action的时候的搜索的顺序

"/"--->""

5namespace没有目录信息

6package包含0-N个action

;Action:

name:

唯一标示name.action--->actionname

class:

实现类继承actionsupport的类

method:

调用方法动态调用的方法名称

Result

name:

用来匹配action的返回值

type:

是result-type进行预定义的/自定义的常用dispatcher,转发

特殊位置:

....

特殊参数:

${var_name}

var_name必须是action里面的一个私有属性,并且有get/set方法

必须符合bean的命名规则:

小写开头

set/get大写开头的属性

include

只能放在struts标签的下一级

用来引入其他的struts配置文件

file=""

被他引入xml文件是一个标准的struts配置

interceptors=>拦截器

>

constants

可以完成

struts.properties所完成的工作

可以完成

constant所完成的工作

struts.properties

配置struts特性(动态方法调用,虚拟机)

struts-default.xmlstruts...jar里面,----〉零配置struts-default.vm模板

Action

I18N/I10N

拦截器

拦截器在struts2接收到请求之后,抵达Action之前以及离开Action之后发挥作用

抵达Action之前,可以处理参数(文件上传,struts2有内置拦截器),或者拦截请求

离开Action之后,可以处理Action返回的Result(嵌套模板的拦截器)

配置拦截器

struts自己提供了缺省的拦截器,

拦截器的使用的第一步,配置、可以理解为登记

拦截器的使用的第二步,配置、定义缺省interceptor-stack、或者直接指明某个Action使用的拦截器

使用拦截器的时候以Stack为单位

拦截器可以被覆盖,采取就近配置的拦截器:

namespace范围或者action范围内部

拦截器之行的先后顺序:

根据配置文件内容,由上至下(抵达Action之前),由下至上(离开Action之后)

注册Interceptors:

class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>

.......

注册Interceptor-stack:

.......

使用Interceptor-stack

在package中定义:

在Action中定义

##系统自带拦截器

###AliasInterceptor

####转换参数名,内容不变

name="alias"

class="com.opensymphony.xwork2.interceptor.AliasInterceptor"

实现参数读取的拦截器ParametersInterceptor

把请求中的参数放置到Action中:

参数---》Action中的Property(attribute)

放置在defaultstack,在覆盖的情况下可以直接使用

name="params"

class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"

实现国际化的拦截器I18nInterceptor

提供读取国际化properties文件键值的方法

放置在defaultstack,在覆盖的情况下可以直接使用

name="i18n"

class="com.opensymphony.xwork2.interceptor.I18nInterceptor"

实现cookie的读写和配置的拦截器cookieInterceptor

提供Action中操作Cookie的方法

放置在defaultstack,在覆盖的情况下可以直接使用

name="cookie"class="org.apache.struts2.interceptor.CookieInterceptor"

实现struts2校验功能的拦截器validationInterceptor

放置在defaultstack,在覆盖的情况下可以直接使用

在Action执行缺省或者配置的方法之前进行调用validation方法

name="validation"class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"

实现Struts中数据(参数)前后共享的ChainningInterceptor

Action前后可以读取上下文的参数(比如前一个Action的属性)

把所有使用到的Action的属性放置在上下文的attribute中

CreateSessionInterceptor自动创建Session

提供其他基于Session的Interceptor/Action提供session

name="createSession"

class="org.apache.struts2.interceptor.CreateSessionInterceptor"

异常拦截器ExceptionInterceptor

把异常定位到一个确切的页面

name="exception"class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"

提供Action操作Session与Application(Servletcontext)的方法ScopeInterceptor

Action直接操作session/application的方法

name="scope"

class="org.apache.struts2.interceptor.ScopeInterceptor"

文件上传的拦截器fileuploaderinterceptor

提供基于struts2的文件上传功能

name="fileUpload"

class="org.apache.struts2.interceptor.FileUploadInterceptor"

LoggerInterceptor输出Action的名字

要点

在Struts2中实现文件上传

所需要的jar文件

基本的struts2的類庫(commons-logging-1.0.4.jar日志記錄,freemarker-2.3.8.jar模板實現,ognl-2.6.11.jaronnl語言支持,struts2-core-2.0.11.jarstruts2的核心類庫,xwork-2.0.4.jarstruts2的基礎類庫)

apacheupload組件(commons-fileupload-x.xxxx.jar)

apacheio組件(commons-io-x.xx.xx.jar)

所需要的配置文件

;struts.properties:

在該文件中需要修改臨時文件存儲路徑,文件的大小

struts.multipart.saveDir=/upload保存目录,值得是realpath

struts.multipart.maxSize=209715200上传文件的大小限制

struts.multipart.parser=jakarta解析上传文件信息(multipart/form-data,

上传文件时的form数据类型一定是这种情况)

;struts.xml:

在该文件中配置文件类型,以参数的形式放置在fileUpload拦截器引用中

image/png,application/pdf

所需要的操作

在Action中,直接使用MultiPartRequestWrapper来获取上传的文件及参数(文件上传的时候,

通过正常的参数获取渠道---params拦截器无法的到我们需要的参数,因为该拦截器无法解析multipart

类型的请求)

这个时候我们通过ServletActionContext得到的Request本身就是一个MultiPartRequestWrapper的实

例,我们通过前置类型转换的到该对象。

multipartInfo.getParameter("")得到我们需要的普通参数

multipartInfo.getFiles("");得到我们需要的文件对象(但我们得到该文件的时候,文件

已经被上传,并且保存在struts.properties中所定义的目录中,该Request被返回给客户端的时候,

临时文件会被删除)

在Struts2.0中国际化(i18n)应用程序

使用struts的Text标签可以读取在struts.properties文件中定义的消息文件中的消息文本

struts.custom.i18n.resources定义文件名称(包含路径信息,包含路径信息的时候,路径的分隔符用.)

struts.locale=zh-cn定义缺省的Location

实际读取的文件:

文件名称+Locale的值+.properties

如果该文件找不到,会读取文件名称+.properties

如果该文件依旧找不到,显示key的值

在所有的strutsuitag(用于界面显示的标签都有一个key属性,可以直接读取消息文件中key对对应的值

当出现非ASCIICODE的时候,我们需要先使用本地语言编码编写文字内容,然后使用jdk提供的

native2ascii工具转码,成为iso8859-1编码的文本文件,否则会出现乱码,该操作与IDE(Eclipse)所设

定的缺省字符集,文件字符集等无关

使用struts标签中以及Action中可以使用getText的方式的到消息文件中的消息文本

在struts中的Text标签也是调用该方法

在Action中的父类ActionSupport中已经定义了该方法,可以直接使用

在Action中(不包含jsp页面、模板页面),不需要定义package.properties文件,但是可以直接读取该文件中的key-value对应信息,

package.properties局部消息文件

struts.custom.i18n.resources全局消息文件

定义了局部消息文件后,局部消息文件会首先被读取。

文件名的定义不变filename_local.properties

struts2中使用资源文件的local可以通过参数传递来得到

参数是java.util.Locale的实例

设置方式:

ActionContext.getContext().setLocale(locale参数)

可以通过其它方式来设定locale,或者自我实现,但都不是Struts2的实现方式。

struts2中的国际化有可能出现乱码,出现乱码后的解决方式

引用文件的字符集(jsp有三个:

jsp自己两个:

contentType中的charset和

pageEncoding,html一个:

meta中的contentType中的charset,模板文件根据模板实现不同,但是与jsp方式类似),预定义不符合,或者三个字符集不一致。

服务器返回给客户端的数据编码与客户端请求不符合

消息文件本身是乱码:

不一定是编写的乱码,而是读取的时候使用的字符集与文件本省的字符

集不一直,缺省情况下读取的时候使用操作系统自己的缺省字符集读取,单独xp本身就有四种(其中三种是unicode,unicode的不同类型互补兼容--ASCII例外)

解决方式:

1、转码或过滤器,可以注册使用apache提供的字符集过滤器()

2、更新本地消息文件字符集、编码内容,(另存为新的字符集文件转成新的字符集编码的文件或者使用java提供的native2ascii转换成iso8859-1的字符集)

3、修改jsp/模板文件中的有关字符集定义,如果jsp自己定义的两个charset不一直,编译本身就会出错,只需要修改一致,如果修改一致后依旧是乱码,可以一起替换成新的字符集

事实上,会涉及字符集只有:

utf-8/iso8859-1/gbk

CJK字符集:

中日韩字符集JPN-xxxx;外包项目开发的时候才会遇到

在Struts2.0中实现表单数据校验(Validation)

通过拦截器来实现,在Action中的方法被调用之前,首先调用validation方法或者其他验证方法

验证结束后,如果验证失败,返回结果(result)为固定的input,返回内容中会包含错误信息。

返回的错误集合以key为"fieldErrors"的一个数据对象保存在request中,如果使用模板技术,

该错误信息会显示在该控件的下部(具体位置由模板控制),如果不使用模板技术,我们可以使用Struts2Tag

读取"fieldErrors"的值进行显示.

Struts的校验功能为服务器端校验

校验代码:

配置文件struts.xml中的Action必须要有

校验代码中需要有addfieldError方法(尽量在该方法中使用I18N代码,以方便国际化显示,因为这段代码是硬编码,不便于修改)

需要添加

@Override

publicvoidvalidate(){

addfieldError(....);

}

方法到Action中,所有的验证操作在该方法中实现.

如果验证成功,调用Action定义的方法,返回逻辑上应该得到的结果。

在Struts2中数据类型转换

Struts

fielduser.name

user.password

---->在action中寻找一个属性,名称为user

iffind

setuser.nametouser.name'svalue

setuser.passwordtouser.name'spassword

else

DEBUG:

打印消息

----->AfterFindit:

数据类型转换:

得到属性user的实例(如果为null,通过class创建实例,注意field对应的类、bean需要包含无参构造方法)

调用set方法,给该对象赋值【在这个地方完成数据类型转换】

【在这个地方完成数据类型转换】

基本数据类型<---->String

引用数据类型<---->String

比如:

在数据类型转换中,Date需要单独处理,原因是格式的问题:

Date请求的Locale对应的DateFormat的short格式

手动转换类型(日期):

转换方式,

1重写Struts的StrutsTypeConverter

2注册在Struts中

ActionName-conversion.properties[针对Action]

xwork-conversion.properties[针对StrutsApp]

3非Struts类型自定义转换@interface,就是jdk5之后的注释

在程序中注册过的日期类型可以自动被调用,无需干涉。

在Struts2中实现IoC

在Struts2中实现IoC

IoC

InversionOfControl反转of控制,我们自己定义的类交给容器(运行上下文环境)去控制,并非在类的内部进行控制,依赖注入(DependencyInjection)与Ioc实际是一回事

classAimplementx

classBimplementx

interfacex

xxxFactory

xxxFactory.get(parameter);

通过这种方式可以动态的调用某一个已知接口的实现类、或者是某一个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1