struts常用操作

早期开发模型Servlet+JSP+JavaBean(Model2)显得力不从心,流程凌乱、数据传递无序、缺乏辅助功能。所以,使用structs2来解决问题。

struts2开发步骤

1.拷贝/apps/struts2-blank/WEB-INF/lib中的jar到项目的lib中.

2.在web.xml中配置Struts2的前端控制器-StrutsPrepareAndExecuteFilter.

struts配置web.xml

3.拷贝struts.xml文件到项目的source folder中.
-----------------------上述三步在准备开发环境---------
4.定义一个POJO类:HelloAction,并提供一个公共无参数的sayHello方法.

5.在struts.xml文件中,配置HelloAction.(把HelloAction交给Struts2框架管理).

6.访问Action.
格式:http://ip:port/contextPath/namespaceName/actionName[.action]
http://ip:port/contextPath/crm/hello[.action]

struts基本流程

action获取请求参数的三种方法

第一种:Action本身作为Model对象,通过setter方法封装(属性注入):在Action中提供setXxx方法来接受xxx参数的值(xxx表示参数名称).

**第二种:创建独立Model对象,页面通过ognl表达式封装(属性注入)使用最多的方式;
**

**第三种:使用ModelDriven接口,对请求数据进行封装(模型驱动):
**

访问ServletApi三种方式

方式1:通过让Action类去实现感知接口.
此时项目依赖:servlet-api.jar.

ServletRequestAware:感知HttpServletRequest对象;
ServletResponseAware:感知HttpServletResponse对象;
ServletSessionAware:感知HttpSession对象;

问题,和ServletAPI藕合严重;
一般的,我们不要,留给框架自己使用的.

方式2.使用ServletActionContext类,该类提供很多静态方法可以返回Servelet API对象.

可以这样来理解,ServletActionContext就是Servlet API的工具类.
使用的非常频繁,因为简单易用.

static HttpServletRequest getRequest() :返回HttpServletRequest对象
static HttpServletResponse getResponse() :返回HttpServletResponse对象
static ServletContext getServletContext() :返回ServletContext对象.

方式3.使用ActionContext类,本身是Struts2对Servlet API的封装.

什么是ActionContext: Action的环境对象,每一次请求都是一个新的Action对象,一个ActionContext对象封装了这一次请求的相关数据.
ActionContext使用了ThreadLocal模式,所以说是线程安全的.
创建ActionContext对象:
ActionContext ctx = ActionContext.getContext();


ActionContext的常用方法:
此时把作用域对象全部使用Map来表示.
获取请求参数:
以前: String request.getParameter(String name);
String[] request.getParameterValues(String name);
现在:
Map<String,String[]> getParameters();

操作request作用域对象:
以前:
设置共享数据:request.setAttribute(String name,Object value);
获取共享数据:Object value = request.getAttribute(String name);
现在: ActionContext本身就是对一次请求的封装.
设置共享数据:ActionContext.getContext().put(String name,Object value);
获取共享数据:Object vale = ActionContext.getContext().get(String name)

操作session作用域对象:
以前:
设置共享数据:request.getSession().setAttribute(String name,Object value);
获取共享数据:Object value = request.getSession().getAttribute(String name);
现在: 只需要得到Session的Map对象即可.
Map<String,Object> sessionMap = ActionContext.getContext().getSession();
设置共享数据:sessionMap .put(String name,Object value)
获取共享数据:Object value = sessionMap .get(String name)
操作application作用域对象:
以前:
设置共享数据:request.getServletContext().setAttribute(String name,Object value);
获取共享数据:Object value = request.getgetServletContext().getAttribute(String name);
现在: 只需要得到application的Map对象即可.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,576评论 18 399
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 6,725评论 0 50
  • 一. Java基础部分.................................................
    wy_sure阅读 9,297评论 0 11
  • 标签 如果要配置的标签,那么必须要先配置标签,代表的包的概念。 包含的属性 name包的名称,要求是唯一的,管理a...
    偷偷得路过阅读 5,278评论 0 0
  • 旅行的意义(1) 从小到大,从旅游到旅行,从走马观花到植入心灵,我每一次都告诉自己要记录下这些点点滴滴,可到...
    kingsqueen阅读 3,443评论 0 2

友情链接更多精彩内容