`

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中Servlet的配置

    2、使用struts2提供的ActionContext类直接获取Servlet API。 在同一个项目中,如果既用到servlet又用了struts框架,运行项目时可能无法正常使用servlet,解决办法如下: 该类是定义了一个过滤器,当既用到struts2...

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

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

    Struts1与Struts2本质区别

    3 Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web...

    spring、Struts2、hibernate常见面试题

    本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现...

    struts项目学习笔记

    Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    java学习阶段所有的API帮助文档

    中文参考手册,spring3.1_帮助文档_英文,Struts 1.3.8 API,Struts 2 Core 2.0.6 API ,StrutsAPI 1.2.7,Tomcat5.5_Servlet_Jsp_API文档,Validator,VBScript_使用手册,XDoclet 1.2.3 API,XML指南,网页设计_...

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    BaseAction

    在Struts2中,操作Servlet API 的BaseAction 包括获取Request对象、获取Session对象、获取ServletContext对象、获取Response对象

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中...

    68个常用开发手册

    java_ee_api_中英文对照版.chm jBPM 4.4 API.chm jdk 1.7_api_doc.CHM JDK_API_1_6_zh_CN.CHM jquery1.7 中文手册.chm JQuery_1.4_API.CHM jQuery文档.chm JSP API.chm Jsp帮助文档.chm JSP语法.chm Linux基础命令...

    Struts2获取参数的三种方法总结

    Struts2不在建议我们使用原生的servletAPI来获取参数,这样做的目的是事项Struts2的action与servlet进行解耦,可以在日后更加方便的对action类进行测试。 Struts2获取参数的三种办法: (1)属性驱动方式 (2)...

    各种开发手册大全

    │ Servlet API[China].chm │ Servlet-API.chm │ servlet.chm │ Spring-Reference_zh_CN.chm │ spring2.5.5_API.chm │ Spring3.0.2-RELEASE-API.chm │ Struts2.chm │ struts2中文教程.chm │ struts2标签.chm...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare ...

    达内java培训目录

    Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    JAVA-SSH面试题

    struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。 struts2.0 Action不依赖于容器,允许Action脱离容器单独测试。如果需要,Struts2 Action...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

Global site tag (gtag.js) - Google Analytics