博客
关于我
007--在Struts2的Action中访问Servlet API三种形式
阅读量:706 次
发布时间:2019-03-17

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

在Struts2中,处理表单参数接收是一个标准操作,可以通过多种方式实现。本文将详细介绍如何在流程执行完后接收提交表单参数的方法,并提供实际的实现示例。

1. 使用ActionContext接收表单参数

Struts2提供了ActionContext对象,允许在Action中访问HttpServletRequest、HttpSession、ServletContext等Servlet API。通过使用ActionContext可以在Action中直接操作这些对象,这在提高开发效率方面非常有用。

步骤说明:

  • 获取ActionContext对象

    ActionContext actionContext = ActionContext.getContext();
  • 通过ActionContext操作不同的数据层次

    • Application级别:使用getApplication()方法获取application-level的Map对象。
    Map
    application = actionContext.getApplication();application.put("name", "王灿");
    • Session级别:使用getSession()方法获取session-level的Map对象。
    Map
    session = actionContext.getSession();session.put("name", "小明");
    • Request级别:直接使用put()方法将参数存入ActionContext中。
    actionContext.put("name", "飞飞");
  • 示例:整合以上方法

    public class MyAction extends ActionSupport {    private HttpServletRequest httpRequest;    @Override    public void setServletRequest(HttpServletRequest request) {        this.httpRequest = request;    }    @Override    public String execute() throws Exception {        System.out.println("action执行:" + http_request.getCharacterEncoding());        /*         * 使用ActionContext获取各层级别的参数         */        ActionContext actionContext = ActionContext.getContext();        Map
    applicationMap = actionContext.getApplication(); applicationMap.put("app_name", "MyApplication"); Map
    sessionMap = actionContext.getSession(); sessionMap.put("session_name", "Session Value"); actionContext.put("request_name", "Request Value"); return SUCCESS; }}
  • 2. 通过实现特定接口的方式

    Struts2提供了多个Aware接口,如ServletRequestAwareSessionAwareServletContextAware等,允许Action直接访问HttpServletRequest和其他Servlet对象。这是另一种接收表单参数的有效方式。

    示例:实现ServletRequestAware接口

    public class MyAction2 extends ActionSupport implements ServletRequestAware {    private HttpServletRequest httpRequest;    @Override    public void setServletRequest(HttpServletRequest request) {        this.httpRequest = request;    }    @Override    public String execute() throws Exception {        System.out.println(httpRequest.getParameter("username"));        return SUCCESS;    }}

    3. 使用ServletActionContext直接访问API

    Struts2还提供了ServletActionContext类,通过静态方法可以直接获取HttpServletRequest、HttpServletResponse等对象。

    示例:直接访问Servlet API

    public class MyAction3 extends ActionSupport {    @Override    public String execute() throws Exception {        HttpServletRequest request = ServletActionContext.getRequest();        request.getSession().setAttribute("user", "张三");        return SUCCESS;    }}

    4. 注意事项和优化建议

    • 数据持久化:理解数据在还是会被持久化到数据库,或者仅为短暂存储,避免数据丢失。
    • 超时_manage:合理设置超时机制,防止长时间未处理的数据被丢弃。
    • 框架设计:遵循Struts2框架设计原则,避免直接耦合,保持可维护性。

    通过以上方法,可以在Struts2中高效地接收和管理表单参数。选择最适合你项目需求的方式,确保代码清晰简洁,同时保持与框架的契合度。

    转载地址:http://zzahz.baihongyu.com/

    你可能感兴趣的文章
    python 加密解密(base64, AES)
    查看>>
    Python 包管理器和 Node.js
    查看>>
    Python 单词字母顺序不变且所有倒排
    查看>>
    python 启动提示IDLE's subprocess didn't make conne...
    查看>>
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>
    python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
    查看>>
    python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
    查看>>
    Python 和Java 哪个更适合做自动化测试?
    查看>>
    Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
    查看>>
    python 图片转ico
    查看>>
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>
    Python 在并行进程之间共享字典
    查看>>
    Python 垃圾收集器文档
    查看>>
    python 基于 wordcloud + jieba + matplotlib 生成词云
    查看>>
    python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
    查看>>
    Python编程:Tkinter图形界面设计(2)
    查看>>
    Python 基础 - Day 5 Learning Note - 模块 之 标准库:time (1)
    查看>>