struts2粗略总结

来源:互联网 发布:bae 数据库 编辑:程序博客网 时间:2024/06/05 11:22
struts2是三大框架之一,框架就是我们在开发过程中总结的一些经验,使用框架可以提高开发效率,较少代码量和编码时间,提高软件质量。提高软件的维护性和扩展性。struts2所需要的jar包:
       
Struts-core-2.x.x.jar : Struts 2 框架的核心类库

  xwork-2.x.x.jar : XWork类库,Struts 2 在其上构建

  ognl-2.6.x.jar : Object Graph Navigation Language , Struts 2 框架通过其读写对象的属性。

  freemarker-2.3.x.jar : Struts 2 的UI标签的模版使用 Freemarker编写。

  commons-logging-1.1.x.jar : ASF出品的日志包。

  commons-fileupload-1.2.1.jar : 文件上传组件。

一、struts2由来:         
        struts2 和struts 1代码风格几乎不一样 ,因为
Struts 2是在WebWork2基础发展而来的,虽说是在WebWork2基础发展而来,但实际是被收购的,所以与struts1代码风格不一样。

二、struts2的核心:
        struts2的核心是拦截器(过滤器)
       
Struts 2 框架的绝大部分功能是通过拦截器来完成的,当FilterDispatcher拦截到用户请求后,大量拦截器将会对用户请求进行处理,然后调用用户

自定义的Action 类中的方法来处理请求

         拦截器的配置:

         在struts.xml文件中来定义的,使用<interceptor.../>元素,格式如下:

     <interceptor name = "拦截器名" class = "拦截器实现的类">    <param name = "参数名">参数值</param>   </interceptor>
其中<param.../>可以省略,但在有的时候就需要为其传入拦截器参数。

  有时候一个Action要配置不只一个拦截器,往往多个拦截器一起使用来进行过滤。这时候就要配置几个拦截器组成的拦截器栈。定义拦截器栈用

<interceptor-stack.../>,格式如下:

    <interceptor-stack name = "拦截器栈名">    <interceptor-ref name = "拦截器一"></interceptor-ref>    <interceptor-ref name = "拦截器二"></interceptor-ref>    <interceptor-ref name = "拦截器三"></interceptor-ref>  </interceptor-stack>

注意:在配置拦截器栈时,用到的拦截器必须是已经存在的拦截器。拦截器栈也可以引用拦截器栈。

配置web.xml文件拦截器(在Struts 2中,Struts框架是通过Filter启动的,他在web.xml中的配置如下):

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name></display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>   <!-- 配置拦截器  -->  <filter>    <filter-name>struts</filter-name>    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>struts</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>

配置struts.xml:(Struts.xml是 Struts 2 的核心配置文件,主要用于配置开发人员编写的action

    <?xml version="1.0" encoding="UTF-8"?>    <!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"        "http://struts.apache.org/dtds/struts-2.3.dtd">    <struts>      <constant name="struts.devMode" value="true"></constant>      <package name="struts" extends="struts-default">               <!-- 声明拦截器 -->         <interceptors>            <interceptor name="my" class="com.sc.lanjieqi.LanJieQi"></interceptor>         </interceptors>         <action name="login" class="com.sc.action.YongHuCaoZuoAction">                             <!-- 调用拦截器 ,调用滴定仪拦截器后必须调用defaultStack拦截器-->             <interceptor-ref name="my"></interceptor-ref>             <interceptor-ref name="defaultStack"></interceptor-ref>              <result>/success.jsp</result>              <result name="err">/err.jsp</result>              <result name="xiugai">/xiugai.jsp</result>              <result name="denglu">/index.jsp</result>         </action>      </package>    </struts>

配置struts2.xml时:

             注意:

               result中的name属性有下:

               1、success : 表示请求处理成功,该值也是默认值。

               2、error :表示请求处理失败。

               3、none :表示请求处理完成后不跳转到任何页面。

               4、input :表示输入时如果验证失败应该跳转到什么地方。

               5、login :表示登录失败后跳转的目标

三、使用struts2时,程序执行的过程:
                 用户通过view视图(jsp页面) 发出请求,请求进入拦截器(控制器controller),经过拦截器后进入                 action(model)进行数据处理,然后返回到拦截器,拦截器再将处理结果发送到view视图。

  action要继承或者实现的类:
         可以继承ActionSupport类或者实现Action接口。 定义拦截器继承
AbstractInterceptor类。

原创粉丝点击