ServletActionContext.getRequest 获得request
ActionContext.getContext().getSession() 获得session
ActionContext就是它,封装了些内置对象,很好!
以下还有详细的:
webwork Action中获取request, response对象的方法
import com.opensymphony.xwork.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionContext;
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
//ServletActionContext.APPLICATION;
//ServletActionContext.SESSION;
//ServletActionContext.PAGE_CONTEXT;
在webwork2的action里取request.getParameter参数
webwork的action已经脱离的request,是用getXxx()来取提交过来的参数
如果在写程序的时候特定需要自己来取Parameter可以通过以下两种方法实现
第一种用ActionContext类,所有的参数都从这里ActionContext.getContext().getParameters()取
他返回的是一个Map类型
Map param= ActionContext.getContext().getParameters();
如果有一个提交过来的username
那就可以这样写
param.get("username");
不过这里要注意一下param.get("username")是一个String数组(为什么要返回数据我也不知道,我从weblogic窗口看到
param.get("username")被out出来Ljava.lang.String,忙活了半天)
String value[] = (String[])param.get("username");
String username = "";
for(int i=0;i<value.length;i++)
{
username +=value[i];
}
这样就可以得到正确的username了
第二种方法是直接把request引用进来
ServletActionContext.getRequest().getParameter("username")
ServletActionContext.getRequest()就是httpservletrequest
这个类再import com.opensymphony.webwork.ServletActionContext
用起来方便些
webwork的action已经脱离的request,是用getXxx()来取提交过来的参数
如果在写程序的时候特定需要自己来取Parameter可以通过以下两种方法实现
WebWork之Session
---------
由
于WebWork对request,parameter,Session和Application都进行了封装,将这些隐含的对象封装成了相应的Map,
如RequestMap,ParameterMap,SessionMap和ApplicationMap,而这些Map就组成了
ActionContext,因此我们通常都不再需要与request,session这些底层的对象打交道了,这也是我一开始觉得迷惑的地方,因为我找
不到Session了。事实上,对于SessionMap的处理即是对Session的处理了。我们可以通过ActionContext的静态方法
getContext返回一个ActionContext的实例,然后再调用其getSession方法获得SessionMap,接着就可以利用put
和get方法对session进行读写的操作了。
而在页面上,我们可以通过以下的方式对session进行操作:
<webwork:property value="#session.name" />
#session.name表示从SessionMap中取得与"name"这个key对应的对象,实际上是调用了如下的
statement:ActionContext.getContext().getSession().get("name"),并且进行了类型的转
换。又如:
<webwork:property value="#session.player.name" />
则是在SessionMap中获得了Player对象之后,并调用类Player的getter方法:getName()获得name属性。
简而言之,为了能够降低与部署环境的耦合程度,WebWork将Servlet的隐含对象进行了封装,这在很大程度上简化了开发的工作。而且
WebWork也提供了类ServletActionContext,我们通过这个类中的getRequest方法获得原始的
HttpServletRequest,然后就可以对request和session这些底层对象进行操作了。但是,一般情况下,利用
ActionContext.getSession()可以完成几乎所有的工作了,我们又为什么要去碰那些底层的东西呢?因此我们应该优先考虑使用
SessionMap,而不是底层的session。
另外一个需要注意的问题,就是SessionMap和隐藏对象session的作用域是不同的。也就是说,通过
ActionContext.getContext().getSession().put("name","Fantasy
Soft"),往SessionMap中写入了与"name"这个key相对应的内容,但是在页面上通过
session.getAttribute("name")得到的将会是null。
访问Application,session,request 对象
Trim by Alex.Sue
Webwork提供了很多的方法来访问Session,Application,Request。
Eg:
Map session = (Map) ActionContext.getContext().get("session");
session.put("myId",myProp);
或者:
ServletActionContext.getRequest().getSession()
Note:不要在action的构造函数里调用ActionContext.getContext()。可能因为值未设置而返回的是null值。
Note Also:ActionContext.getContext().get(“session”)=(Map)
ActionContext.getContext().getContext.getSession().
如果需要访问HttpSession,可以通过ServletConfigInterceptor接口。
在视图层中,JSP可以通过以下的方式访问:
<ww: property value="#session.myId" />
<ww: property value="#request.myId" />
所有的servlet范围可以这样的访问:
Map request = (Map) ActionContext.getContext().get("request");
request.put("myId",myProp);
Map application = (Map) ActionContext.getContext().get("application");
application.put("myId",myProp);
Map session = (Map) ActionContext.getContext().get("attr");
attr.put("myId",myProp);
分享到:
相关推荐
它封装了当前请求的所有相关信息,如session、request、response对象以及值栈等。ActionContext允许你在Action之间共享数据,也可以通过它访问Servlet容器的相关服务。 **ServletActionContext** ...
ActionContext是WebWork中的一个重要组件,它封装了当前请求的环境信息,如Session、Request、Response对象以及本地化信息。ActionContext提供了访问和设置这些上下文数据的方法。 - **ServletActionContext**:在...
2. **ActionContext**:它持有当前请求的上下文信息,如参数、session、request、response等。 3. **配置管理器**:通过XML配置文件或注解来定义Action的映射、拦截器链以及结果视图。 4. **Interceptor(拦截器)...
- **介绍**:ActionContext是Action执行过程中所需的各种信息的容器,如Request、Response、Session等。 - **ServletActionContext**:特定于Servlet容器的ActionContext实现。 - **ServletDispatcher原理**:...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (fileToUpload != null && !fileToUpload....
- **Struts**中的模型层主要通过ActionForm来封装数据,继承自ActionForm的类通常包含了用于表单验证的方法。 - **WebWork**则采用了更为灵活的方式,模型对象可以直接是POJO(Plain Old Java Object),简化了...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { boolean isMultipart = ServletFileUpload....
由于WebWork已经被Struts 2所取代,这里不再详细展开其配置方法。WebWork框架中的配置与Struts框架类似,主要是通过配置文件指定Action的处理逻辑。 #### 五、总结 通过上述示例可以看出,无论是在JSP、Struts、...
在这个例子中,Servlet通过`getParameter`方法获取请求参数,然后在响应中返回处理结果。客户端可以通过回调函数处理这个响应。 总的来说,Ajax获取表单值并向Servlet传递数据的设计方案涉及到前端的XMLHttpRequest...
SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and ...
sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and ...
SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,...
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求参数 String username = request.getParameter("username"); String ...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); pw.print("<html><body><h1>Hello, world!...
2. **HTTP协议**:掌握Request和Response的概念,理解HTTP请求的Get、Post、Put、Delete等方法的应用场景。同时,了解HTTP如何基于TCP/IP协议工作,以及Socket连接的基本原理。 3. **服务器软件**:熟悉JBOSS、...
- 用户每次请求都会调用 `void service(request, response)` 方法。 - 映射为 `/*` 时,所有请求都会经过该 Servlet。 - **Filter**: - 在内存中唯一实例。 - 启动时完成初始化。 - 用户每次请求都会调用 `...
JSP安全编程实例浅析、JSP编程进度条设计实例、JSP的运行内幕、JSP和IIS的最佳解决方案实例分析、jsp内置对象--session对象和out对象、JSP中request属性的用法、用WebWork、JSP、Velocity建立注册页面、在JSP中使用...
默认的控制器接口非常简单,主要方法为`ModelAndView handleRequest(request, response)`。为了适应复杂的应用场景,Spring提供了多种抽象控制器,如AbstractController、AbstractCommandController、...
缺省的操作是一个非常简单的控制接口,他只提供了 ModelAndView handleRequest(request,response)方法。 3. 控制层 在 Spring 的 Web MVC 构架模式中,控制层是由 DispatcherServlet 和控制器组成的。控制器是负责...
在JSP或Servlet中,通常通过`request.getParameter()`方法获取表单数据。如果要获取名为"name"的表单字段的值,应使用`request.getParameter("name")`。题目中的第9题也涉及了这一知识点。 **页面重定向和转发**: ...