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.关于package和action
6. Struts2的配置-2.配置异常、视图、拦截器、验证器