struts2---访问WEB
一:在Action中,可以通过以下方式访问WEB的HttpSession,HttpServletRequest,HttpServletResponse等资源
与Servlet API解耦的访问方式
通过 import com.opensymphony.xwork2.ActionContext;
通过实现XxxAware接口;
特点:只能访问有限的servlet API对象。有限的方法(读取请求参数,读写域对象的属性,使session失效)
在主页面中调用action到struts.xml文件中然后找到Action类。在Action类中处理完后到struts.xml,然后找到相对性的jsp页面。展示信息

在struts.xml中找到Java类。

package com.struts2.action;
import java.util.Map; import org.apache.struts2.dispatcher.SessionMap; import com.opensymphony.xwork2.ActionContext; public class TestActionContext {
public String execute(){
//一:application
//1:获取ActionContext对象。 ActionContext是Action的上下文对象。可以从中获取到当前Action需要的一切信息。
ActionContext actionContext=ActionContext.getContext();
//2:获取application对应的MAP。
Map<String,Object> applicationMap =actionContext.getApplication();
applicationMap.put("applicationMapKey", "heluwei appllication");
//二:session
Map<String,Object> sessionMap=actionContext.getSession();
sessionMap.put("sessionKey", "heluwei session");
if(sessionMap instanceof SessionMap){
SessionMap sm = (SessionMap) sessionMap;
sm.invalidate();
System.out.println("session 失效了. ");
}
//3. request*
//ActionContext 中并没有提供 getRequest 方法来获取 request 对应的 Map
//需要手工调用 get() 方法, 传入 request 字符串来获取.
Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey", "requestValue");
//4. 获取请求参数对应的 Map, 并获取指定的参数值.
//键: 请求参数的名字, 值: 请求参数的值对应的字符串数组
//注意: 1. getParameters 的返回值为在 Map<String, Object>, 而不是 Map<String, String[]>
// 2. parameters 这个 Map 只能读, 不能写入数据, 如果写入, 但不出错, 但也不起作用!
Map<String, Object> parameters = actionContext.getParameters();
System.out.println(((String[])parameters.get("name"))[0]);
parameters.put("age", 100);
return "success";
}
}

在页面上显示信息:

二:实现XxxAware接口
<package name="actionContext" extends="struts-default">
<action name="TestActionContext" class="com.struts2.action.TestActionContext">
<result name="success">/fangwenWEB/test-actionContext.jsp</result>
</action> <action name="TestAware" class="com.struts2.action.TestAware">
<result name="success">/fangwenWEB/test-Aware.jsp</result>
</action>
</package>
package com.struts2.action;
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
public class TestAware implements ApplicationAware{
public String execute() {
application.put("applicationkey2", "Aware applicationValue");
return "success";
}
private Map<String,Object> application;
public void setApplication(Map<String, Object> application) {
this.application=application;
}
}
application Map注入到set方法中。然后定义一个application成员变量。

》session对应的Map实际上是SessionMap类型。强转后调用invalidate()方法。可使session失效。


二:耦合的方式
就是多了一个Servlet。
》调用 org.apache.struts2.ServletActionContext;
package com.struts2.action; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; public class TestServletActionContext {
public String execute(){
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
ServletContext context=ServletActionContext.getServletContext();
return "success";
}
}
》实现ServletXxxAware接口
package com.struts2.action; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware; public class TestServletAware implements ServletRequestAware,ServletContextAware{ public String execute(){
return "success";
}
private ServletContext context;
public void setServletContext(ServletContext context) {
// TODO Auto-generated method stub
this.context=context;
} public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub } }
struts2---访问WEB的更多相关文章
- Struts2 访问web元素
访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...
- 2.struts2访问web资源(在struts2中获取session,request等等)
什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...
- struts2 访问Web元素的4种方法
完整代码 :Struts12AccessWebElement.rar 第一种也是最常用的一种方法实现这几个接口 RequestAware,SessionAware,ApplicationAware s ...
- Struts2访问web元素的各种方法
1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...
- struts2访问web资源
通过ActionContext访问 public class TestActionContextAction { public String execute(){ //获取 ActionContext ...
- Struts2(四):在Action中如何访问Web资源
1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ...
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2在Action中访问WEB资源
什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...
- struts2中的action访问web对象
Struts2的Action就是一个普通的POJO对象,它和Web对象request.response.session和application没有耦合在一起,这样便于单独测试Action,那么我们在A ...
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
随机推荐
- 在google chrome浏览器上安装 Vue Devtools工具
[转]https://www.cnblogs.com/tanyongli/p/7554045.html Vue.js devtools是基于google chrome浏览器的一款调试vue.js应用的 ...
- tomcat 迁移到weblogic 问题
问题1: Caused by: java.lang.UnsupportedClassVersionError: com/audaque/datadiscovery/soap/service/impl/ ...
- 在Python中操作文件之truncate()方法的使用教程
在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...
- 大数据学习笔记之Zookeeper(二):Zookeeper实战篇(一)
文章目录 2.1 本地模式安装部署 2.2 配置参数解读 2.1 本地模式安装部署 1)安装前准备: (1)安装jdk (2)通过filezilla工具拷贝zookeeper到到linux系统下 (3 ...
- poj1065Wooden Sticks(dp——最长递减数列)
Description There is a pile of n wooden sticks. The length and weight of each stick are known in adv ...
- 使用Logistic Regression Algorithm进行多分类数字识别的Octave仿真
所需解决的问题是,训练一个Logistic Regression系统,使之能够识别手写体数字1-10,每张图片为20px*20px的灰度图.训练样例的输入X是5000行400列的一个矩阵,每一行存储一 ...
- 洛谷P2661 信息传递——并查集
给一手链接 https://www.luogu.com.cn/problem/P2661 这道题就是 并查集求最小环 TIPS:压缩路径的时候d[x]=d[fa[x]]+d[x],而不是d[x]=d[ ...
- shell 删除项目日志
删除半年之前的日志 find 后面紧跟目录 .为当前目录 -type f 指定查找的是文件 -mtime +180 查找180天之前的 -name 文件名筛选 -exec -rm -rf 执行的 ...
- Python 学习笔记17 文本 - 读写
在我们的编程过程中,我们经常需要对文件进行读写操作. 在Python中,对文本的读写非常的方便,只需要简单的几行代码就可以实现. 我们首先新建一个文本文件"Text.txt", 里 ...
- Maven安装、配置环境变量
一.首先在官网下载安装maven 1.进入官网 2.找到下载位置 3.点进去后是最新版的,若需要最新版就下这个,需要旧版本接着往下滑 4.下载历史版本 (1)点击"archives" ...