Struts2总结

时间:2024.5.13

Struts2.0

处理流程

Struts2总结

值栈

一次request只有一个值栈。

Action

1、当前正在访问的action永远在值栈栈顶。

2、服务器端跳转到另外一个action时值栈里会有两个action,且,先访问的action在栈底。

Struts2总结

默认action写法:

Struts2总结

<default-action-ref name="login"/>

命名空间

Struts2总结

路径

Struts2总结

标签

1、property标签:

获取值栈中的action属性值:

<s:property value="userName"/>

取值为字符串:<s:property value="'userName'"/>

设定默认值:<s:property value="admin" default="管理员"/>

设定html标签:<s:property value="'<hr color=red>'" escape="false"/>

2、set标签:

<s:set var="aaa" value="'userName'"/>

1、其中,value可以是一个ognl表达式,也可以是一个字符串。

2、指定set范围:可以为application、session、request、page,默认为action。

3、默认情况下,范围为action:在request中可以取值,也可以在ActionContext中取值。

从request取值:<s:property value="#request.aaa"/> 从ActionContext取值:<s:property value="#aaa"/>

set设定page范围:

<s:set var="abcd" value="'adbc'" scope="page"/> 从page范围取值:

<%=pageContext.getAttribute("abcd") %>

set设定session范围:

<s:set var="ss" value="'sss'" scope="session"/> 从session范围取值:<%=session.getAttribute("ss") %> 或者:<s:property value="#session.ss"/>

set设定application范围:

<s:set var="app" value="'appli'"

scope="application"/>

从application范围取值:

<%=application.getAttribute("app") %>

或者:<s:property value="#application.app"/>

3、bean标签:

<s:bean name="com.yjl.domain.Book" var="myBook"> <s:param name="bookName" value="'mybook'"/> </s:bean>

4、include标签(不能包含动态网页):

包含静态英文文件:

<s:include value="includeEnglish.html"/>

包含静态中文文件:

<s:include value="includeChinese.html"/>

%的用法:<s:set var="web"

value="'includeEnglish.html'"/>

<s:include value="%{#web}"></s:include>

%{}的意思是说:强制将花括号中间的内容强制转换成ognl表达式

5、date标签

<s:date name=”birthDate” format=”yyyy-MM-dd” /> 格式也可写成:”yyyy/MM/dd HH:mm:ss”

6、fielderror标签

<s:fielderror fieldname=”MyError” theme=”simple”/>

7、if elseif else标签

<s:if test="password.length()<6">密码太短</s:if> <s:elseif test="password.length()>6">密码太长</s:elseif>

<s:else>yeah!</s:else>

8、iterator标签

<s:iterator value="{1,2,3}">

<s:property/>|

</s:iterator>

<s:iterator value="{'aaa','bbb','ccc'}" var="x"

status=”status”>

<s:property value="#status.first"/>|

<s:property value="#x.toUpperCase()"/>| </s:iterator>

遍历map

<s:iterator value="#{1:'aaa',2:'bbb',3:'ccc'}" var="x">

<s:property value="key"/>|<s:property value="value"/><br>

</s:iterator>

异常

在action中写:

<exception-mapping result="error"

exception="java.lang.Exception"></exception-mapping>

也可以在包内写全局结果和全局异常映射,注意:全局结果一定要写在全局异常前面。

类型转换

1.List类型转换(注意通过url传值的写法)

http://localhost:8080/Struts2_TypeConversion/userLogin?books=java&books=xml&books=uml

2.Map类型转换(注意通过url传值的写法)

http://localhost:8080/Struts2_TypeConversion/userLogin?books=java&mapType[‘a’]=music&mapType[‘b’]=sleep

拦截器栈

Aspect-Oriented Programming

<package name="interceptor" extends="struts-default" > <interceptors>

<interceptor-stack name="mystack"> <interceptor-ref name="timer" /> <interceptor-ref name="logger" /> <interceptor-ref name="params" />

<interceptor-ref name="staticParams" /> </interceptor-stack>

</interceptors>

<action name="first" class="action.FirstAction">

<param name="who">比尔</param>

<interceptor-ref name="mystack"/> </action>

</package>

几种结果集类型

<result type="dispatcher">/dispatcher.jsp</result> <result type="redirect">/redirect.jsp</result> <!-- forward到另外一个action -->

<result type="chain">a2</result>

<!-- 重定向到另外一个action -->

<result type="redirectAction">a1</result> 全局结果集

在package中且action外写如下代码:

<global-results>

<result name="global">/global.jsp</result> </global-results>

要想使用其它包中的全局结果集,需继承那个包。

动态结果集

在action类中属性r的值为“/*.Jsp”。

在配置文件中中写${r},意思是获取Value Stack 中的值。如: <result>${r}</result>

带参数的结果集

一次request只有一个值栈,所以,当结果的类型为redirect并且想给跳转到的页面传递参数时,Value Stack是空的,应从Stack Context中获取值。 注意:当result类型为forward时,为同一个request,所以也是同一个

值栈。

配置文件中:

<result

type="redirect">/success.jsp?t=${type}</result> 从Stack Context 获取值:<s:property

value="#parameters.t"/>

OGNL(Object Graph Navigation Language)表达式 特殊

[i]:i大于等于零,表示在值栈中,从第i个开始,从上往下,所有元素的集合。可以用[i].xxx来取值。

访问值栈中的对象的普通属性

userName:yjl

使用域模型的值访问

book.bookName:JAVA

访问值栈中对象的普通方法1 userName.length():3

访问值栈中对象的普通方法2(book是Book类的一个实例) book.say():我是一本 JAVA 书!

访问值栈中action的普通方法

say():我是 yjl

访问值栈中对象的静态属性

@com.yjl.action.OGNLAction@VARNAME

访问值栈中对象的静态方法

@com.yjl.action.OGNLAction@methodName()

访问Math类的静态方法

@@max(2,3)

访问Stack Contex中的值

#parameters.book.bookName:JAVA #parameters.book.price:30.0

集合

注释:

listName:List集合对象名

mapName:Map集合对象名

setName:Set集合对象名

访问List,Map,Set listName|mapName|setName

访问List中某个元素 listName[1]

访问List中某个属性的集合

listName.{bookName},这个表达式的意思是说listNamebookName的集合。

注意:ognl表达式中‘{}’可以代表一个集合。

中所有

访问List中某个属性的集合中的特定值 listName.{bookName}[0] 或 listName[0].age

访问Set中某个元素

setName[1]:这是错误的!因为Set是无序的。

访问Map中某个元素

mapName.keyName 或 map['keyName']

访问Map中所有key

mapName.keys:[四川, 河南, 山西]

访问Map中所有value

mapName.values:[重庆, 新乡, 太原]

访问容器大小(List、Map、Set一样) mapName.size() 或 listName.size

投影(过滤)

就是说将符合条件的值筛选出来。‘?#’、‘ ^#’、‘ $#’都是过滤条件。 ‘^’表示第一个,‘$’表示最后一个。

listName.{?#this.price==25}[0]:我是一本数学类型的微积分书!

投影

listName.{^#this.price>25}.{bookName}:[大学语文]

投影

listName.{$#this.bookName=='微积分'}.{bookName}:[微积分]

国际化(很少用)

属性配置文件的三种级别:action、package、applacation。

<constant name="struts.custom.i18n.resources" value="LoginAction"/>,LoginAction是资源文件的开头。

在获取值的时候写ognl表达式getText(’welcome’)。

动态语言切换:

只需传递参数request_locale=en_US即可换成英文。

资源文件中可以有占位符,示例:

welcome=你好{0},在获取值的时候可以这样写:

<s:text name="welcome">

<s:param value="userName"></s:param> </s:text>

Token拦截器原理:

在提交页面中写<token></token>标签,请求页面时,服务器会在页面上产生一个随机字符串并将页面发送到客户端同时会将这个字符串放在session中,提交页面的时候会将页面中的那个字符串和session中的比较,如果两个字符串不一样,则会返回一个错误,根据配置文件中的<result name="invalid.token">/error.jsp</result>,返回相应页面。这样就实现了防止重复提交。

更多相关推荐:
Struts2面试总结(20xx版)

1Struts2中Action通过什么方式获得用户从页面输入的数据又是通过什么方式把其自身的数据传给视图的Action从页面获取数据有三种方式1通过Action属性接受参数2通过域模型获取参数3通过模型驱动获取...

Struts2总结

第一章MiniStruts的制作不使用Servlet也不使用requestgetParameter获取参数是用户能够直接访问Dao中的查询方法1可以使用filter过滤器用来拦截用户的表单提交请求的路径请求的参...

Struts2最全面总结

20xx年5月13日221312Struts2总结fdteamcaptain陈玉龙1Struts2的起源和背景Struts2以WebWork优秀的设计思想为核心吸收了Struts1的部分优点建立了一个兼容Web...

Struts2基础知识总结

Day1一框架概述1三大框架是企业主流JavaEE开发的一套架构Struts2SpringHibernate2什么是框架为什么要学框架框架是实现部分功能的代码半成品使用框架简化企业级软件开发学习框架清楚的知道框...

Struts2 总结

Struts2框架主讲李洪鹤以下笔记均为我本人亲自整理若有描述不对或代码错误请同学们及时更改一下重新上传上去谢谢1234567891011Struts是基于MVC的轻量级框架1实现了MVC2轻量侵入性与量级成正...

struts2基础总结

Struts2基础三种方式接收用户输入1使用领域对象接收用户输入2使用ModelDrivenaction页面示例注意代码黑体部分3使用action属性接收用户输入二种方式访问requestsessionappl...

struts2总结

struts1和struts2的区别struts1sun公司1核心控制器ActionServlet2需要继承Action或者DispachAction3必须在web容器中配置4页面信息可以封装到formBean...

struts2学习小结

一配置问题最新的struts2为GA版221其中必须类库为1commonsfileupload121jar2commonsio132jar3freemarker2316jar4javassist37gajar5...

Struts2开发总结

Struts2项目开发总结注Struts2版本Struts216数据库Oracle9i所须架包commonslogging104jarcommonsfileupload121jarfreemarker2313j...

Struts2实践总结

拦截器Struts2中的输入校验使用Annotation取代strutsxml配置Struts2与AJAX交互驾驭XML数据第一个Struts2程序当我们在一个新的工作空间中创建一个Web项目的时候首先要将我们...

struts2常用标签方法总结

1输出action中属性值在jsp页面中显示用ltspropertyvaluequot属性名quotgt如果是对象域则表示为ltspropertyvaluequot对象属性名quotgt2在页面中实现自动增加的...

hibernate,struts,spring面试总结

Hibernate工作原理及为什么要用原理1读取并解析配置文件2读取并解析映射信息创建SessionFactory3打开Sesssion4创建事务Transation5持久化操作6提交事务7关闭Session8...

struts2总结(34篇)