当前位置: 代码迷 >> Web前端 >> JavaWeb体系结构的了解-8.Struts使用
  详细解决方案

JavaWeb体系结构的了解-8.Struts使用

热度:243   发布时间:2012-10-20 14:12:47.0
JavaWeb体系结构的理解-8.Struts使用

本文对Struts2进行简略梳理,基础的内容请看参考部分。

开发流程

Struts2的开发流程为:1.Jar包添加到项目的classpath当中,web项目就是添加到WEB-INF的lib目录下。2.配置StrutsPreparedAndExecuteFilter过滤器和过滤器。3.源码目录下新建Struts.xml文件,在其中定义Action对象,这些配置信息需要位于一个继承自struts-default的包中。4.创建返回结果页面。

Action对象

Action用于对Http请求进行处理,他是一个接口,我们一般不直接实现这个接口,而是继承自ActionSupport。表单提交的数据会自动注入到Action对象中相对应的属性,只要属性有Setter方法。查找返回页面时,根据方法返回的字符串来匹配result标签中定义的name名即可,如果不指定,name默认为success。静态Action默认执行方法的execute方法,动态Action可以定义多个方法,使用ActionName!funName的方法调用。可以使用通配符*\来匹配0个或者多个字符,\是转义符。

Struts2的开发模式

和ServletAPI的交互:Struts2提供了Map类型的request、session、application等对象,其访问使用方法为:

对象

获取方法

备注

ActionContext

getContext()

 

Request

ActionContext.getContext.get(“request”)

 

Session

ActionContext的get方法和直接获取方法getSession()

 

Application

ActionContext的get方法和直接获取getApplication

 

域模型:域模型是将某一领域的实体封装成实体对象,http请求参数可以注入到实体对象的属性中。使用表单字段名为user.name这样的方法来进行注入。

驱动模型:Action实现了ModelDriven接口后,可以用方法getModel获取实体模型,进而对其进行操作,省去了域模型中的注入方法。

OGNL表达式

OGNL表达式是一种表达式语言,他能访问JavaWeb中的数据。OGNL的上下文中存放多种元素,根元素可以直接访问,其他元素使用#开头访问。例如#user.name或者book.name等。值栈是OGNL的上下文,值栈及其他值获取及使用方法为:

对象

获取

代码

值栈

直接获取

${user.name}

Application中对象

#application.name

 

Request中对象

#request.name

 

Session中对象

#sesssion.name

 

Parameters

#parameters.name

 

不指定范围的att

#attr.name

 

访问静态方法属性

@com.a.bean@name;

@com.a.bean@getName();

需要配置开发模式,在struts.xml下:<const name=”struts.devMode” value=”true”/>

 

访问数组

List、set、map集合

List[0]、map.key、map.keys、map.values

投影与选择

List.{name}投影name列

List.{?#this.age>20}选择

其中?号代表所有元素,^代表满足条件的第一个元素,$代表满足条件的最后一个条件。

Struts2的标签库

OGNL结合Struts2标签库才能使用,下面列出Struts2的标签(数据,控制,表单)。Struts2使用默认样式输出Struts2标签的表现,可以修改配置文件使其使用更为使用的模板输出html表现。

标签

作用

实例

数据标签property、set、a、param、action、push、date、include、url

Action用于执行action请求。Push用于将值压入栈中。

url用于映射Action的URL地址。

<s:set var=”name” value=”value” scope=”request”></s:set>

<s:property default=”null” value=”#request.name”/>

 

控制标签if、elseif、else、iterator、

 

<s:if test=”true”>aa</s:if>

<s:elseif test=”true”></s:elseif>

<s:else></s:else>

表单标签form、hidden、textfield、password、radio、select、textarea、checkbox、checkboxlist、submit、reset

 

 

拦截器类似Servlet的过滤器,其在Action调用处理前调用处理。数据验证机制用于对数据进行自动验证。

参考文章

1.      Struts的简单使用

2.      Struts+Spring+Hibernate整合的简单实例

3.      理解Struts

4.      Struts2工作流程理解

5.      Struts2的配置-1.关于packageaction

6.      Struts2的配置-2.配置异常、视图、拦截器、验证器

 

  相关解决方案