Struts2框架中访问Servlet API

本文详细介绍了在Struts2框架中如何以解耦和耦合两种方式访问ServletAPI。解耦方式下,通过ActionContext获取Session、Request和Application,依赖Map进行存取;耦合方式则直接使用ServletActionContext获取HttpServletRequest、HttpSession和ServletContext,设置属性。这两种方式各有特点,影响着代码的依赖性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts2框架中访问Servlet API


在struts2中可以使用Servlet提供的方法,有以下两种方式访问:

  • 与Servlet API解耦的访问方式
  • 与Servlet API耦合的访问方式

1、解耦的方式

若以解耦的方式进行访问,组件框架之间相互独立,能够独自正常运行,不进行依赖操作。如下图:
在这里插入图片描述
其中获取Session和Application的方法返回的均是Map,而获取Request的方法返回的是Object,需要转成Map。实际上,通过这种方式,是依赖于Map来进行存取的。

以下为代码实例:

		if(username.equals("admin") && password.equals("123456") ) {
			// 获取Session,返回map
			Map<String,Object> session = ActionContext.getContext().getSession(); 
			session.put("currentUser", username);
			// 获取Request,返回Object
			Map request = (Map) ActionContext.getContext().get("request");
			request.put("name", "ycz");
			// 获取Application,返回Map
			Map<String,Object> application = ActionContext.getContext().getApplication();
			application.put("word","事与愿违");
			return SUCCESS;
		}

然后在页面中可以直接取出Map中的值进行使用:
在这里插入图片描述

2、耦合的方式

若以耦合的方式访问,组件框架之间相互依赖,缺少其中一个组件则可能无法正常运行。如下图:
在这里插入图片描述
这里返回的就不再是Map了,而是需要的各种类型,在页面中需要从对应的域中来取。代码如下:

		if(username.equals("admin") && password.equals("123456") ) {
			// 获取Request
			HttpServletRequest request = ServletActionContext.getRequest();
			request.setAttribute("address", "四川成都");
			// 获取Session
			HttpSession session = ServletActionContext.getRequest().getSession();
			session.setAttribute("user", username);
			// 获取
			ServletContext context = ServletActionContext.getServletContext();
			context.setAttribute("name", "程志毅");
			return SUCCESS;
		}

然后在页面中从各个域中取出需要的值即可:
在这里插入图片描述

Rebuild started: Project: Project *** Using Compiler &#39;V6.22&#39;, folder: &#39;E:\Keil_v5\ARM\ARMCLANG\Bin&#39; Rebuild target &#39;Target 1&#39; assembling startup_stm32f10x_md.s... Start/core_cm3.c(445): error: non-ASM statement in naked function is not supported 445 | uint32_t result=0; | ^ Start/core_cm3.c(442): note: attribute is here 442 | uint32_t __get_PSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(465): error: parameter references not allowed in naked functions 465 | "BX lr \n\t" : : "r" (topOfProcStack) ); | ^ Start/core_cm3.c(461): note: attribute is here 461 | void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(479): error: non-ASM statement in naked function is not supported 479 | uint32_t result=0; | ^ Start/core_cm3.c(476): note: attribute is here 476 | uint32_t __get_MSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(499): error: parameter references not allowed in naked functions 499 | "BX lr \n\t" : : "r" (topOfMainStack) ); | ^ Start/core_cm3.c(495): note: attribute is here 495 | void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); | ^ 4 errors generated. compiling core_cm3.c... compiling misc.c... compiling system_stm32f10x.c... compiling stm32f10x_adc.c... compiling stm32f10x_dac.c... compiling stm32f10x_exti.c... compiling stm32f10x_dbgmcu.c... compiling stm32f10x_dma.c... compiling stm32f10x_crc.c... compiling stm32f10x_cec.c... compiling stm32f10x_bkp.c... compiling stm32f10x_can.c... compiling stm32f10x_flash.c... compiling stm32f10x_pwr.c... compiling stm32f10x_fsmc.c... compiling stm32f10x_
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值