首页 > 编程知识 正文

actionscript是什么意思,struts2数据交互

时间:2023-05-03 06:31:39 阅读:58764 作者:2650

公式: http://apps.hi.Baidu.com/share/detail/16057446

操作上下文(操作上下文)

操作上下文介绍

从上面的学习用户注册示例中,可以看到Xwork与Web无关,我们的操作不依赖于任何Web容器,而是它们的Java serrion 可以不执行的请求(Request )的参数(Param )可以使用阻止程序框架自动调用相应的Action字段(get )、set )方法。 但是,只要获取请求参数的值就能完全满足我们的功能要求吗? 否,web APP应用程序开发不仅需要将请求参数自动设置为Action字段,还需要直接在Action中获取请求(请求)或会话)的信息。 此外,还需要直接访问JavaServlet Http请求) HttpServletRequest

带着这些问题,让我们来看看以下功能要求之一:

必须在操作中获取请求参数" username "的值。

action context context=action context.get context (;

map params=context.get parameters (;

stringusername=(string ) params.get ) username

为了实现这个功能,我们使用了三个步骤。

1、获取我们现在的ActionContext对象的context,Actioncontext是什么高雅的行人?

2、从context对象获取我们所有的请求参数,获取的是一个Map对象params吗?

3、居然可以从我们的映射对象params中获取我们需要的请求参数“username”的值。

action context (com.opensymphony.xwork.action context )是运行操作时的上下文,可以将上下文视为容器。 实际上,这里的容器是Map。 此容器包含运行操作时所需的对象,如下所示:我们的上下文包含请求的参数(Parameter )、会话(Session )和servlet上下文(ServletContext

每次运行ActionContext时都会创建新的ActionContext。 操作上下文是线程安全的。 这意味着在同一线程中,ActionContext中的属性是唯一的,因此ActionContext可以用于多线程。

当前ActionContext对象可以从ActionContext.getContext ) (这是ActionContext的静态方法)中获取。 看看这个代码。

publicstaticactioncontextgetcontext (

actioncontextcontext=(action context ) actionContext.get );

if (上下文==null ) {

ognlvaluestackvs=newognlvaluestack (;

context=newaction context (vs.get context ) );

设置上下文(上下文);

}

返回上下文;

}

一般来说,我们的ActionContext是action context=(action context ) actionContext.get ); 获得了。 让我们来看看在这里创建actionContext对象。 staticthreadlocalactioncontext=newactioncontextthreadlocal (; ActionContextThreadLocal是实现ThreadLocal的内部类。 ThreadLocal可以命名为“线程特定变量”,为使用该变量的每个线程提供变量值的副本。 这使您可以独立地修改每个线程的副本,而不会与其他线程的副本发生冲突。 这将确保ActionContext属性只显示在相应的当前请求线程上,并且是线程安全的。

让我们看看如何在ActionContext中获取HttpSession :

map session=action context.get context ().getSession );

为什么我们获取的session是地图类型的对象? 本来,我们的WebWork框架将许多与Web相关的对象重新打包。 例如,这里不是直接与底层HttpSession交互,而是将HttpSession对象重新打包为Map对象进行操作。 只有框架的包装,我们的Actoion才能完全与Web层结合。

如果操作需要与某些对象(如Java servlet的HttpSession和HttpServletRequest )直接交互,该怎么办? 请参阅以下ServletActionContext。

ServletActionContext

servletaction context (com.opensymphony.webwork.servletaction context )。 此类直接继承上述ActionContext,并提供直接访问与JavaServlet相关的对象的功能

1、javax.servlet.http.http servlet请求对象

2、javax.servlet.http.http servlet响应;启用http servlet的对象

3、javax.servlet.servlet上下文信息

4、javax.servletconfig:servlet配置对象

5、javax.servlet.JSP.pagecontext:http页面上下文

ServletActionContext不仅提供对这些对象的访问,而且继承了父类的许多ActionContex功能,如OgnlValueStack和Action的名称

让我们来看几个简单的例子。 让我们看看如何从ServletActionContext中检索Java servlet的相关对象。

1、获取http servlet请求对象:

httpservletrequestrequest=servletactioncontext.getrequest (;

2、获取http会话对象:

htpsessionsession=servletactioncontext.getrequest ().getSession );

ServletActionContext和ActionContext有重复的功能,但我们的Action该如何选择呢? 我们遵循的原则是,如果ActionContext能够实现我们的功能,则不要使用ServletActionContext,而尽量避免ActionContext直接访问Java servlet中的相关对象使用ActionContext时需要注意。 请勿在Action构造函数中使用ActionContext.getContext () )。 在这种情况下,ActionContext检索的值可能为null,因为某些ActionContext值可能尚未设置。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。