`

Struts2中获得Servlet API对象

 
阅读更多

Struts2中传统Servlet API类型被处理成Map类型
  
访问更方便
   不依赖传统Servlet API类型——解耦合

关于ActionContext
       所在包com.opensymphony.xwork2
       ActionContext被称为Action上下文或Action环境
       ActionContext提供每个Action运行时与之相关的所有信息
访问Servlet API

       ActionContext类提供getContext()方法获得实例
       通过ActionContext类的实例可获得Map类型的请求、会话 等
       通过put()get()方法在Map类型的对象中存取数据

示例:

package cn.web.action;
import java.util.Map;
import cn.web.entity.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginJavabeanAction extends ActionSupport {
	
	private  User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {
		if(user==null){
			return "login";
		}
		System.out.println(user.getLoginName());
		if("admin".equals(user.getLoginName())){
			//关于ActionContext
			//获取session
			Map<String,Object> session = ActionContext.getContext().getSession();
			session.put("userSession", user);
			
			//获取application,示例设置一个计数
			Map<String,Object> application = ActionContext.getContext().getApplication();
			if(application.get("num") == null){
				application.put("num", 1);
			}else{
				Integer num = (Integer) application.get("num");
				application.put("num", num+1);
			}
			
			//获取request,注意获取方式
			Map<String,Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
			request.put("address", "中国");
			
			//获取parameter,请求的参数只能获得,不能增加
			Map<String,Object> parameters = ActionContext.getContext().getParameters();
			//注意parameters.get()与 request.getParameterValues()类似
			//获得如checkbox类(名字相同,但值有多个)的数据。
			//接收  对象 的数组
			String[] name = (String[]) parameters.get("user.loginName");
			System.out.println("user.loginName为:"+name[0]);
			//禁止这样操作,增加参数 parameters.put("access", "通过");
			
			/* 在页面中获取保存数据提倡的方式 (#作用域)
			    <s:property value="#request.loginAccess"/>
			*/
			
			return "admin";
			
		}else if("comm".equals(user.getLoginName())){
			return "comm";
		}else{
			return "login";
		}
	}
}

 

------------------------------------------------------------------------------------

 

获得Servlet API对象的方式

一、通过ActionContext获得

             如上面的示例就是这样

       自己获得request: ac.get("request")

       自己获得session: ac.getContext.getSession()

二、实现接口

          让“别人(如struts容器)”为你提供Servlet API的对象

          通过实现相应接口获得Servlet API对象

            获得parameter需要实现ParameterAware接口

            获得request需要实现RequestAware接口

            获得session需要实现SessionAware接口

            获得application需要实现ApplicationAware接口

(   LoginAtion 是交给Struts容器管理的,

  当LoginAtion实现了上面的接口,Struts容器会往这些接口预定义的方法里注入它需要的相应的值,

 是由servletConfig拦截器,将源于Servlet API的各种对象注入到Action 的。

  从而也就能使用 servletApi 的对象了


 

public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware {
	
	Map<String,Object> request;
	Map<String,Object> session;
	Map<String,Object> application;
	//这样就获得了request,session以及application(servletApi的对象),
        //然后就可以在execute()方法里使用servletApi的对象了
	
       /*  
               省略部分代码
            
          */

        @Override
	public void setApplication(Map<String, Object> request) {
		this.request = request;
	}
	@Override
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}
	@Override
	public void setRequest(Map<String, Object> application) {
		this.application = application;
	}

       /*  
               省略部分代码
            
          */
}
 

 

 


 

分享到:
评论

相关推荐

    Struts2访问ServletAPI

    本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...

    Struts2 直接访问Servlet API(二十五)

    Struts2是一个非常流行的...综上所述,了解如何在Struts2中直接访问Servlet API是非常有用的技能,它可以帮助开发者更好地控制Web应用程序的行为,并在必要时提升性能。但同时,也要注意平衡灵活性和代码的可维护性。

    Struts2之Servlet API及单元测试初识案例struts005

    Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...

    MAX的struts2教程、struts2 API、servlet API

    3. **理解注解**:查看Struts2中的注解,了解其在代码中的作用和配置方式。 4. **深入源码**:API文档可以帮助开发者在必要时深入源码,理解框架内部的工作机制。 最后,"Servlet+API[China].chm"是Servlet API的...

    struts2之Action访问Servlet API

    在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...

    Struts2 part 3:在Action中使用ServletAPI

    在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...

    Struts2中Servlet的配置

    在Struts2中,Servlet的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...

    strut2 servletapi

    1. **HttpServletRequest对象**:在Struts2中,我们可以从Action上下文(`ActionContext`)获取到`ServletActionContext`,然后通过`ServletActionContext.getRequest()`方法获得`HttpServletRequest`对象。这个对象...

    详解Struts2中Action访问Servlet API的几种方法

    详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...

    java上传与下载——struts2和servlet案例

    在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...

    struts2中获得request对象

    本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...

    关于struts和servlet同时用

    2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...

    Java Servlet API (英文版)

    本文将深入探讨Java Servlet API的相关知识点,包括其基本概念、主要接口和类以及它们在实际开发中的应用。 1. **Servlet基本概念** - **Servlet**: 是一个Java类,遵循Servlet API规范,用于扩展服务器的功能。...

    struts2和struts1 API及使用指南 chm

    1. **Action接口**:Struts1中的Action类需要实现Action接口,而在Struts2中,可以实现Action接口或直接使用ActionSupport类,后者提供了默认的行为。 2. **请求处理**:Struts1通过Servlet的service方法处理请求,...

    Struts1-1API.rar_Struts1_API_struts 1 api_struts1_struts1 api_st

    在标签中,我们看到"struts1_api"、"struts_1_api"、"struts1"等关键词,这些都与Struts1的API文档相关。"struts1.4_api"则可能指的是Struts1的1.4版本API,这个版本可能包含了一些特定的更新和改进。 在压缩包的...

    struts2学习利器(api+深入浅出struts2+struts2权威指南)高清版

    学习Struts2,你需要理解MVC架构的基本原理,熟悉Servlet和JSP的基础知识,因为Struts2是在这些基础上构建的。同时,掌握OOP(面向对象编程)和设计模式将有助于你更好地运用Struts2。通过阅读这些资源,你可以逐步...

    J2EE中文API(Servlet)

    6. **Filter和Listener**:Servlet API还提供了Filter和Listener接口,用于在请求到达Servlet之前进行预处理(Filter),或者监听Servlet生命周期及Web应用中的各种事件(Listener)。 7. **MVC模式**:Servlet常与...

Global site tag (gtag.js) - Google Analytics