Struts2知识点

1.Struts2简介

   1.概念:轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。低侵入性,与业务代码的耦合度很低。Struts2实现了MVC,并提供了一系列API,采用模式化方式简化业务开发过程。

   2.与Servlet对比

    优点:业务代码解耦,提高开发效率

    缺点:执行效率偏低,需要使用反射、解析XML等技术手段,结构复杂

2.Struts2使用

   1.使用步骤

    导入Struts2核心jar包

    在web.xml配置前端控制器filter

<filter>


    <filter-name>Struts2</fileter-name>


    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>


</filter>


<filter-mapping>


    <filter-name>Struts2</filter-name>


    <url-pattern>/*</url-pattern>


<filter-mapping>

3.参数传递

   1.Action从页面取值  

    a)基本属性注入(页面,Action)

   

   2.页面从Action取值

    a)使用EL表达式

2.页面从Action取值

    a)使用EL表达式

2.页面从Action取值

    a)使用EL表达式

4.OGNL

   

      1.概念:Object Graph Navigation Language,是一门功能强大的表达式语言,类似于EL。Strut2默认采用OGNL表达式访问Action的数据,实际                   上是通过ValueStack对象来访问Action。

  2.用法:在Struts2中,OGNL表达式要结合Struts2标签来访问数据

    EL:${user.userName} <==> OGNL:<s:property value="user.userName">

    *a)访问基本属性  <s:property value="属性名"/>

    *b)访问实体对象  <s:property value="对象名.属性名"/>

    c)访问数组/集合  <s:property value="someArray[1]"/> | <s:property value="someList[1]"/>

    d)访问Map  <s:property value="someMap.key" />

    e)运算  <s:property value="'My name is' + name" />

    f)调用方法  <s:property value="name.toUpperCase()" />

    g)创建集合  <s:property value="{'a','b','c'}" /> ArrayList

    h)创建Map  <s:property value="#{'mm':'MM','nn':'NN'}" /> LinkedHashMap

5.Action基本原理

   1.6大核心组件

      

     FC:前端控制器,负责统一的分发请求

  Action:业务控制器,负责处理某一类业务

  ValueStack:Action与JSP数据交互的媒介

  Interceptor:拦截器,负责扩展Action,处理Action的共通事务

  Result:负责输出的组件

  Tags:标签,负责显示数据、生成框体

   2.获取Session的方式

     

      a)ActionContext

      - ActionContext.getContext().getSesion(),返回Map<String, Object>

   b)ServletActionContext

      - ServletActionContext.getRequest().getSession(),返回HttpSession

    c)SessionAware(推荐使用)

      - 让Action实现SessionAware接口

      - 实现setSession(Map<String, Object> session)方法,Struts2会在实例化Action后调用方法,通过方法参数将Session对象注入进来

      - 定义成员变量,接收注入进来的Session对象

 

猜你喜欢

转载自blog.csdn.net/caozefei_2018/article/details/80331735
今日推荐