一:在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的更多相关文章

  1. Struts2 访问web元素

    访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...

  2. 2.struts2访问web资源(在struts2中获取session,request等等)

    什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...

  3. struts2 访问Web元素的4种方法

    完整代码 :Struts12AccessWebElement.rar 第一种也是最常用的一种方法实现这几个接口 RequestAware,SessionAware,ApplicationAware s ...

  4. Struts2访问web元素的各种方法

    1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...

  5. struts2访问web资源

    通过ActionContext访问 public class TestActionContextAction { public String execute(){ //获取 ActionContext ...

  6. Struts2(四):在Action中如何访问Web资源

    1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ...

  7. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Struts2在Action中访问WEB资源

    什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...

  9. struts2中的action访问web对象

    Struts2的Action就是一个普通的POJO对象,它和Web对象request.response.session和application没有耦合在一起,这样便于单独测试Action,那么我们在A ...

  10. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

随机推荐

  1. ORA-02298问题处理

    参考:http://blog.163.com/yvtong@126/blog/static/8753524720132223343722/ ORA-39083: Object type REF_CON ...

  2. Python模块学习之xlrd、xlutils、openpyxl 读写/追加Excel文件

    Python操作Excel的四个工具包 xlrd: 对Excel进行读相关操作,注意只能操作 .xls xlwt: 对Excel进行写相关操作,注意只能操作 .xls,且只能创建一个全新的Excel然 ...

  3. Win7崩溃程序目录

    很烦,占用系统空间,毫无用处 C:\Users\你的用户名\AppData\Local\CrashDumps C:\Users\你的用户名\AppData\Local\Microsoft\Window ...

  4. jQuery遍历集合

     jQuery 遍历List集合 $(function(){ var tbody = ""; var obj =[{"name ":"xxxx&quo ...

  5. Eclipse+Pydev环境下出现error “eclipse Non-UTF-8 code”

    文件首行加上”#coding=utf-8”   ,这一句话可控制代码中可输入中文字符

  6. python3 -tensorflow-dataset 之map函数 lambda隐函数的应用

    ###隐函数lanbda及map函数的应用实例 ''' lambda 参数1,参数2,参数3,...:表达式 ''' f = lambda x,y :x+y print(f(1,2)) ###输出3 ...

  7. Vue-实现简单拖拽(自定义属性)

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  8. Interface-接口的实现与注意事项

    package cn.learn.Interface; public interface MyInterfaceA { public abstract void methodA(); public a ...

  9. MyBatis-Spring的sqlSessionTemplate

    转自:http://www.cnblogs.com/yhtboke/p/5611375.html SqlSessionTemplate SqlSessionTemplate是MyBatis-Sprin ...

  10. telnet访问出现telnet:Unable to connect to remote host: No route to host

    Linux下的防火墙默认是不允许telnet服务通过的,所以,当防火墙不允许telnet服务通过时就会出现上面的这种情况,可以将防火墙关闭或者勾选允许telnet服务即可解决如上的问题.