(Struts2)在Struts2框架中使用Servlet的API

Struts2框架下访问Servlet API的多种策略 Struts2框架是Java领域中用于开发Web应用的成熟框架之一,它基于MVC模式,极大地简化了Java Web应用的开发。在深入了解Struts2的高级用法之前,首先需要对Struts2的执行流程有一个总体的认识。ActionContext是Struts2框架中用来存储Action执行过程中所需的数据和对象的一个容器。它是Action类的执行上下文,为Action提供了一个灵活的操作环境。 阅读详情

1、在Action类中也可以获取到Servlet一些常量的API

     *   需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收,然后保存到三个域对象中,最后再显示到JSP的页面上

         *   提供JSP的页面,以供两种方式的使用

<form action="${pageContext.request.contextPath }/demo1Action.action" method="post">
	姓名: <input type="text" name="username" /><br/>
	密码: <input type="password" name="password"/><br/>
	<input type="submit" value="注册" />
</form>

2、完全解耦合的方式

      *   如果使用该方式,Struts2框架中提供了一个类,ActionContext类,该类中提供了一些方法,通过方法获取Servlet的API

      *   一些常用的方法如下:

     *   Action类的代码:

/**
 * 完全解耦合的方式, 使用servlet的API
 * @author Administrator
 */
public class Demo1Action extends ActionSupport {
	public String execute() throws Exception {
		// 完全解耦合的方式
		ActionContext context = ActionContext.getContext();
		// 获取到请求的参数,封装所有请求的参数
		Map<String, Object> map = context.getParameters();
		// 遍历获取到的数据
		Set<String> keys = map.keySet();
		for (String key : keys) {
			// 通过key, 来获取值
			String[] vals = (String[]) map.get(key);
			System.out.println(key  + ": " + Arrays.toString(vals));
		}
		
		// 如果向request对象中存入值
		context.put("msg", "小风");
		// 获取其他map集合
		context.getSession().put("msg", "小苍");
		context.getApplication().put("msg", "小泽");
		
		return SUCCESS;
	}
}

     *   配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="demo1" namespace="/" extends="struts-default">
		<action name="demo1Action" class="com.itheima.demo1.Demo1Action" method="execute">
			<result name="success">/demo1/suc.jsp</result>
		</action>
	</package>
</struts>

      *   suc.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	${sessionScope.msg }
	${applicationScope.msg }
	${requestScope.msg }
</body>
</html>


3、使用原生Servlet的API方式

     *   Struts2框架提供了一个类,ServletActionContext,该类中提供了一些静态的方法

     *   具体的方法如下:

             *   getPageContext()

             *   getRequest()

             *   getResponse()

             *   getServletContext()

     *   Action类的代码:

/**
 * 原生的API
 * @author Administrator
 */
public class Demo1Action extends ActionSupport {
	public String execute() throws Exception {
		// 获取到request对象
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("msg", "小明");
		request.getSession().setAttribute("msg", "小凤");
		ServletActionContext.getServletContext().setAttribute("msg", "小小");
		
		return SUCCESS;
	}
}


下一篇:结果页面的跳转

Struts2-API+Struts2中文帮助文档 Struts2-API+Struts2中文帮助文档。 API为英文格式,帮助文档记录了Struts2各大知识点的详细代码案例,不错的参考资料 立即下载

相关推荐

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

Struts2笔记——与ServletAPI解耦

与ServletAPI解耦的访问方式 为了避免与 Servlet API 耦合在一起, 方便 Action 做单元测试, Struts2 对 HttpServletRequest, HttpSession 和 ServletContext 进行了封装, 构造了 3 个 Map 对象...

chuanke1344的博客 239

山景BP10_128DBG开发板通过蓝牙连接手机放歌实验回顾

最近在学习上海山景公司的BP10_128DBG的开发板,因为网上关于BP10开发板的帖子也比较少,在学习的时候也没有太多的参考资料,基本上都是官方的历程。蓝牙放歌这个demo对我来说也比较复杂,特写下此博客进行记录、总结,大家有需要的可以参考。

weixin_56646002的博客 2020

配置Struts2及Struts2访问servlet api的方式

Struts2的起源与背景   在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量。 其他MVC框架都无 法与其相比,作为一一款优秀的MVC框架、虽然Struts1可以很好地实现将控制与业务逻辑相分离, 但是其自身也存在一定的缺陷,这些缺陷体 现在以下几方面。 1.表现层支持单   Struts1框架只支持JSP作为其...

weixin_30396699的博客 178

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 358

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 494

struts2中耦合servlet API

Struts2的Action并未直接与任何Servlet  API偶合,这也是Struts2的一个改良的地方。但如何进行访问? 方法一:.[一般推荐使用](只能获得request,而response则得不到) Struts2提供了一个ActionContext类,Struts2中的Action可以通过它进行访问。 其方法有:get(),getApplication(),getCont

E01014165的专栏 591

perl 安装DBI和DBD

还可以从cpan.perl.org站点下载tar压缩文件形式的源代码发行版本,解压缩后,切换到相应的文件目录 cd DBI-1.54 perl Makefile.PL make make test make install 安装DBD时候 需要export ORACLE_HOME 验证安装: perldoc DBD::Oracle perldoc DBI 在线文档; perldoc -m

zhaoyangjian724的专栏 1754

Struts2 学习总结(三):Struts2在action中访问request,application,session对象的方式

接下来介绍Struts2中访问request,application,session对象的方式 在上面介绍了通过action访问用户输入,从而替代了访问HTTP Servlet Request,实现了与web层的解耦,但在某些特殊场景中,action中需要访问这些对象。Struts提供了多种方式访问这些对象,可以将这些方式大体分为两类: 与Servlet API解耦的方式和与Servlet A...

知且行的博客 1033

手把手教你学PCIE(1.38)--基本概念:ATU(地址转换单元)

ATU(Address Translation Unit)是一种硬件单元,用于在PCIe系统中进行地址转换。它将设备的本地地址(外部地址)转换为系统内存或配置空间中的全局地址(内部地址),反之亦然。ATU的工作原理:通过地址匹配和转换,确保事务能够在不同的地址空间之间正确路由。配置寄存器:通过配置寄存器来设置地址转换规则。应用场景:地址空间隔离、访问控制、动态地址管理、虚拟化和多租户。

MHD0815的博客 2057

openCv +3.4.0 车牌定位(C++版本)

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc.hpp> #include "opencv2/shape.hpp" using namespace ...

Bamboo265925的博客 2337

【Struts2】Struts2框架访问Servlet API

Struts2框架访问Servlet API 使用解耦的方式访问Servlet API 获取HttpServletRequest对应的对应的map对象 获取HttpSession对应的对应的map对象 获取ServletContext对应的对应的map对象 使用耦合的方式访问Servlet API 获取HttpServletRequest对象 获取HttpServletResponse对象 获取HttpSession对象 获取ServletContext对象 使用解耦的方式访问Servlet

Need not to know 212

【YOLO多模态检测顶刊】TGRS 2025范文解读,RGFNet 可见光-红外图像融合目标检测,2026年基于YOLO多模态融合属于发文热点,小论文和大论文通用,通读顶刊了解做实验和论文写作的全流程

🔥本文提出了一种反射率引导的渐进特征对齐网络(RGFNet)用于全天候无人机目标检测。该方法利用Retinex理论从可见光图像中提取光照不变的反射率特征,设计了反射率引导协同对齐模块(RCAM)实现跨模态双向特征对齐,并通过光照感知选择性融合模块(LSFM)在共享状态空间中进行高效特征交互。在DroneVehicle和DVTOD数据集上的实验表明,RGFNet分别达到81.4%和88.5%的mAP,显著优于现有方法。该方法有效解决了低光照条件下可见光-红外图像特征错位问题,为全天候无人机检测提供了新思路。

Ai缝合怪、助力小伙伴高效发论文 1078

五、Struts2框架中如何使用Servlet的API

有两种方式,一种是调用框架提供的api间接的使用Servlet的api,也叫完全解耦的方式,另一种直接使用原生Servlet的API。 完全解耦合的方式 如果使用该种方式,Struts2框架中提供了一个类,ActionContext类,该类中提供一些方法,通过方法获取Servlet的API,一些常用的方法如下: static ActionContext getContext() :获取Actio...

热爱不止,前行不息 244

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Struts2框架中使用Servlet的API

1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上。 * 提供JSP注册的页面,演示下面这三种方式 &lt;h3&gt;注册页面&lt;/h3&gt; &lt;form action="${ pageContext.request.co...

qq_37186314的博客 258

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA框架Struts2 servlet API

一:servlet API 1)完全解耦接口:   使用ActionContext类进行相关操作: 1 package jd.com.actioncontex; 2 3 import com.opensymphony.xwork2.ActionContext; 4 import com.opensymphony.xwork2.ActionSupport; 5 impo...

weixin_30729609的博客 89

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Struts2中的技术分析之在Struts2框架中使用Servlet的API

技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上。 * 提供JSP注册的页面,演示下面这三种方式 <h3>注册页面...

weixin_30532837的博客 137

Struts2框架中使用Servlet的API示例

1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上。 * 提供JSP注册的页面,演示下面这三种方式 <h3>注册页面</h3> <form action="${ pageContext.request...

weixin_30485291的博客 95

在Struts2框架中使用Servlet的API

1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上。 * 提供JSP注册的页面,演示下面这三种方式 <h3>注册页面</h3> <fo...

weixin_30608131的博客 72

Struts2框架之Action动作类获取Servlet的API

①通过"org.apache.struts2.ServletActionContext"可以获取到: "struts.xml"配置文件: &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configu

C8WATER 343

Struts2框架中访问Servlet API

Struts2框架中访问Servlet API

qq_42640067的博客 238

Struts2框架之在动作类中访问Servlet API

Struts2框架将Servlet进行了封装,但是有时候我们又希望获取request、response、session等对象,因为有些数据需要使用这些域对象进行前后端的传递。下面将介绍动作类中访问Servlet API的两种方式。 方式一:通过ServletActionContext获取 【推荐使用】 Demo结构: LoginAction.java文件 package cn.hestyle.w...

hestyle的博客 380

框架 ---Struts2 servlet的API访问 复杂类型的数据封装 结果页面配置 no 02.

在使用Struts2的框架的过程中,发现struts2和servlet的API是解耦的。在实际开发中,经常使用到Servlet的API,比如进行登陆。将用户信息保存大盘session中,有的时候需要向页面输出一下 ...

x.1000001000的博客 263

ssh备考-05Struts2 Action类下的重要API(原生Servlet的API、跳转配置、框架自身的数据封装、自定义拦截器)

目录 一、Struts框架中如何使用原生Servlet的API 方法一、使用ActionContext类(完全解耦合的方式)(不好用,了解) demo1.jsp demo1Action.java ★ struts.xml suc.jsp 方法二、使用ServletActionContext类(原生Servlet的API的方式)(好用,掌握)★ demo1.jsp里加上 ...

树叶子的博客 386
上一篇: Struts2框架Action类的三种写法
下一篇: (Struts2)结果页面的跳转
Jadan-Z
博客等级 码龄10年 8粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值