Struts2 新手总结


一、struts2 概念

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

    MVC:M(model)模型层,包含两层:业务数据和业务处理逻辑,例如:dao、service都属于model层。

 V(view)视图层,负责显示界面和页面交互。

 C(controller)控制层,模型M层与视图V层的桥梁,用于控制流程。

二、struts2与servlet对比

  优点:1、业务代码解耦,适合团队开发:将请求分发给不同的处理类,降低业务代码耦合度;

      2、提升开发效率:提供了一系列的API,可以大大提升项目开发的效率。

  缺点:1、执行效率偏低:需要使用反射,解析XMl等手段,会降低执行效率;

      2、结构复杂,需要学习成本:需要花费一定的成本学习struts2的API以及使用步骤。

三、struts2自身优势

  健壮性:struts2是一个成熟稳定的框架;

  易用性:易学好用;

  扩展性:struts2运用AOP的思想,使用拦截器来扩展业务控制器Action;

  侵入性:对业务代码依赖性很低,基本不需要导入其他包;

四、struts2/web.xml配置文件

<filter>
<filter-name>struts2</filter-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>

五、struts2的配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!--DTD配置-->

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- struts2中的配置一定要放在package中 -->
    <package name="default" namespace="/" extends="struts-default">

<!-- 配置当前Action的请求和相应属性

name表示请求的路径名称  class表示处理请求的Action类 -->
<action name="myUpload" class="com.hp.action.UploadAction">

<!-- result 用来指定相应的处理 name表示相应的字符串

在开始和结束标签之间配置相应的具体路径 -->
<result name="success">uploadOk.jsp</result>
</action>
    </package>
</struts>

六、struts2部分标签列举

<!-- 引入标签 -->

<%@ taglib prefix="s" uri="/struts-tags" %>

1、逻辑控制标签

..条件标签:条件标签主要有<s:if><s:elseif><s:esle>3个子标签,用于执行基本的条件流转

..迭代标签:<s:iterator>标签用于遍历集合(java.util.Collection)或者枚举值(java.util.Iterator)类型的对象。

    2、数据输出标签

..action标签:<s:action>标签用于在jsp页面中直接调用Action

..date标签:<s:date>标签用以格式化日期并显示

..bean标签:bean标签用于创建javaBean实例,需要java类提供相应的getter、setter方法

..parma标签:param标签用于为其他标签添加参数

..property标签:property标签用于输出一个属性值

..<s:url>标签和<s:a>标签:<s:url>标签通常与<s:a>标签一起使用,<s:url>标签主要用于赋值給href属性,用于指定链接的地址和传递的参数。

..<s:debug>标签:<s:debug>标签用于在页面上生成一个连接,当点击链接时,可以看到ValueStack 和 Stack Context中的内容

七、struts2拦截器配置

1:拦截器原理:

当请求struts2的action原理时,struts2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后穿成一个列表,最后一个一个的调用列表中的拦截器。

注:struts2拦截器是在访问action或action的某个方法,字段之前或之后实施拦截,并且struts2拦截器是可插拔的,拦截器是AOP的一种实现;

2:拦截器配置:

<!-- 通过指定拦截器名和拦截器实现类来定义拦截器 -->

<interceptors>

<!-- 定义一个名为myInterceptor的拦截器 -->

<interceptor name="myInterceptor" class="com.hp.action.myInterCeptor"></interceptor>

</interceptors>

<!--应用拦截器配置-->

<!-- 定义一个名为myBook的action -->

<action name="myBook" class="com.hp.action.BookAction">

<!-- 返回视图,转入success.jsp页面 -->
<result>/success.jsp</result>

<!-- 使用默认拦截器 -->

<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- 使用自定义拦截器 -->

<interceptor-ref name="myInterceptor"></interceptor-ref>
</action>

<!-- 定义一个全局的result -->

<global-results>
<result name="no_login">/login.jsp</result>
</global-results>

<!-- 拦截器与过滤器的区别 -->

1:拦截器是基于java的反射机制,过滤器是基于函数回调;

2:拦截器不依赖于servlet容器,过滤器依赖于servlet容器;

3:拦截器只能对action起作用,过滤器可以对几乎所有的请求起作用;

4:拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问;

5:在action生命周期中,拦截器可以多次被调用,而过滤器只有在容器初始化时被调用一次;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值