博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2---访问WEB
阅读量:4684 次
发布时间:2019-06-09

本文共 4059 字,大约阅读时间需要 13 分钟。

一:在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
applicationMap =actionContext.getApplication();         applicationMap.put("applicationMapKey", "heluwei appllication");         //二:session         Map
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
requestMap = (Map
) actionContext.get("request");                 requestMap.put("requestKey", "requestValue");                                  //4. 获取请求参数对应的 Map, 并获取指定的参数值.                 //键: 请求参数的名字, 值: 请求参数的值对应的字符串数组                 //注意: 1. getParameters 的返回值为在 Map
, 而不是 Map
                //     2. parameters 这个 Map 只能读, 不能写入数据, 如果写入, 但不出错, 但也不起作用!                 Map
parameters = actionContext.getParameters();                 System.out.println(((String[])parameters.get("name"))[0]);                                  parameters.put("age", 100);     return "success";         } }

 

 

在页面上显示信息:

 二:实现XxxAware接口

/fangwenWEB/test-actionContext.jsp
/fangwenWEB/test-Aware.jsp
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
application; public void setApplication(Map
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            }}

 

转载于:https://www.cnblogs.com/bulrush/p/7726021.html

你可能感兴趣的文章
常用的匹配正则表达式和实例
查看>>
小组成员及其git链接
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
plsql 查询存储过程死锁语句_插入语句/存储过程死锁
查看>>
bootstrap table 收缩_bootstrap-table方法之:expandRow-collapseRow,展开或关闭当前行数据...
查看>>
jsp跳转到本身页面_五种JSP页面跳转方法详解
查看>>
mysql r_mysql:’r’是什么意思?
查看>>
无法加载 mysql 扩展_请检查您的 php 配置. - 文档_无法载入 mysql 扩展 请检查 PHP 配置...
查看>>
非空 默认 男 mysql_MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
查看>>
mysql错误修改数据_mysql数据修改问题
查看>>
navicat忘记mysql密码_navicat连接My SQL时忘记root密码处理方法
查看>>
mysql 左连接 左外连接吗_什么是左外连接?左外连接在工作表查询中的应用
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>
docker 删除多余镜像_多余Basedisk删除和vDisk镜像反转技术简介
查看>>
mysqlin会使用索引吗_被面试官虐了,索引为何使用B+树,你知道吗
查看>>
mysql8单节点500m_Kubernetes 部署 Mysql 8.0 数据库(单节点)
查看>>
mysql数据工厂生产_MySQL超时与天蓝色数据工厂副本
查看>>