struts2

Struts2的使用步骤

手动导入:

1. 创建Web项目。

2. 导入Strutrs的几个必须包(7个jar)。

3. 在src目录下,创建struts.xml配置文件(名字和路径都不能改)。

4. 在web.xml配置文件中,添加Struts的支持(配置一个filter过滤器)。

自动导入(Myeclipse8.0以上的版本):

 

类型转换

1. Struts2中类型转换分为两种:

a) 手动(自定义)转换器

b) 自动转换器

2. 手动(自定义)转换器(针对特殊属性)

a) 在action的类中,必须继承ActionSupport类。

b) 定义转换器的类,继承DefaultTypeConvert,重写convertValue()方法。

c) 创建配置文件(注意:1.文件名必须是:Action的类名-conversion.properties ; 2. 必须将配置文件存放在Action所在的包中。)

3. 自动转换器(常用的方式)

基本数据类型+String类型都是可以自动转换。

对象类型自动转换:在input中使用:对象名.属性名

Struts2的输入验证

一.验证分类:

1. 服务器端验证(Java代码来完成验证(Struts的内置验证框架,可以完成服务器端验证))。

2. 客户端验证(js验证——在客户端执行,执行的时候依赖与客户度(手动js验证,jquery验证框架进行验证))

二.Struts的内置验证框架:

Struts2中验证有两种方式:

1. 手动验证。

2. 配置验证框架,自动验证。

三.内置验证框架使用步骤:

1. 需要验证的Action必须继承自ActionSupport类。

2. 创建验证配置文件。

要求:a) 配置文件必须和action在同一目录。

      b) 文件名的格式必须是:Action类名-validation.xml(验证Action中的所有方法) 

                             Action类名-访问Action的名字-validation.xml(只会验证Action中指定的方法)

3. 查看内置验证器:xwork-XXXXX.jar目录中(找到default.xml配置文件)

特别需要注意:

1. 使用了验证器之后,如果验证失败;必须配置<result name=input></result>表示验证失败之后,跳转的页面。

2. 如果jsp页面中使用了,Struts的标签;那么必须让这个jsp页面必须经过struts的核心过滤器,进行过滤;否则页面不能正常解析struts的标签。(web.xml 中配置过滤器,过滤  *.jsp)

3. 基本数据类型,不能使用Struts的内置验证,建议使用包装类。

四.手动验证步骤:

1. 继承ActionSupport,重写validate()方法。

在执行Action中具体的方法之前,会先执行validate()方法;如果有错误,则返回input指定的页面。(有错误:super.addFiledError())

手动验证总结:

1. 可以在实体中的setXxx()方法进行控制。

2. 在validate()方法中进行验证。

深入Struts2

Struts2运行原理:

请求  --- >自定义过滤器----> filterdispatcher ------> ActionProxy(代理,读取struts.xml的配置文件)---->ActionInvocation(action的调用者,调用具体的Action;在调用之前经过一系列的拦截器)——>执行完Action之后,跳转到对应的页面。

注意:struts中的所有编码处理都是i18n拦截器处理,所有的表单数据处理都是在系统默认拦截器中获取。

Struts.xml配置文件详解:

<constant name="" value=""></constant>

<!-- 常量:系统默认配置的量(名字不可改) -->

<!-- 常用的常量:struts.custome.i18n.resources(国际化常量) -->

<!-- 常用的常量:struts.i18n.encoding(编码方式常量,系统默认采用utf-8编码) -->

动态方法调用:

注意:1. 在配置<action>的时候,不用指定具体的方法(不用写method=“XXX”);

  2. 在请求action的路径指定需要执行的方法名即可。(格式:action名!方法名.action

使用通配符进行模糊匹配:

<action name="*Calc" class="com.zuxia.action.TestAction" method="{1}" >

   <result name=名字>{1}.jsp</result>

</action>

注意:使用“*”号表示模糊匹配的值。{1}表示占位符,在运行的过程中,被通配符所代替。

      在这个Action的配置文件中,都可以使用{1}占位。

Struts2对返回结果页面进行配置:

<result name=方法的返回值 type=””>页面路径</result>

type=”” 表示页面跳转的方式,默认表示内部跳转。

type=redirect 表示页面使用外部跳转,注意外部跳转request中的数据将会丢失。

type=redirectAction 表示跳转的页面将会是一个Action。

<result type= redirectAction>

   <param name=actionName>action的名字</param>

   <param name=namespace>命名空间的名字</param>

</result>

原样输出指定的页面:

<result name="ok" type="plainText">

<param name="location">test.jsp</param>

<param name="charSet">utf-8</param>

</result>

全局结果配置:

<!-- 配置全局的结果,跳转页面 -->

<global-results>

<result name="error">test.jsp</result>

<result name="ok">index.jsp</result>

</global-results>

注意:必须在action的最前面。

全局异常处理:

<global-exception-mappings>

<exception-mapping result="返回的结果名" exception="异常类型"></exception-mapping>

</global-exception-mappings>

在异常处理页面,显示异常的信息:

<%@ taglib uri="/struts-tags" prefix="s" %>

异常的信息:

<s:property value="exceptionStack"/>

<interceptors>

<interceptor name="firstinter" class="com.zuxia.interceptor.FristInterceptor" />

<interceptor-stack name="testStack">

<interceptor-ref name="firstinter" />

<interceptor-ref name="defaultStack" />

</interceptor-stack>

</interceptors>

在actin中调用使用如下方式:

<action …………>

<interceptor-ref name="testStack" />

</action>

本文出自 “涓涓细流” 博客,谢绝转载!

你可能感兴趣的:(struts2,职场,休闲)