zoukankan      html  css  js  c++  java
  • Struts2

    Struts 2是在WebWork2基础发展而来的。

    注意:struts 2和struts 1在代码风格上几乎不一样。

    Struts 2 相比Struts 1的优点:

    1、在软件设计上Struts 2 没有像Struts 1那样跟Servlet API 和 struts API 有着紧密的耦合。

     Struts 2的应用可以不依赖于Servlet API和Struts API 。
    

    2、Struts 2 提供了拦截器,利用拦截器可以进行AOP编程。

    3、Struts 2 提供了类型转换器。

    4、Struts 2 提供支持多种表现层技术,如:JSP 、 freeMarker等。

    5、Struts 2 的输入校验可以指定方法进行校验。

    6、Struts 2 提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

    Struts 2 体系结构 :

      1、Web浏览器请求一个资源。

      2、过滤器Dispatcher查找方法,确定适当的Action。

      3、拦截器自动对请求应用通用功能,如验证和文件上传操作。

      4、Action的execute方法通常用来存储和重新获得信息。

      5、结果被返回到浏览器。

    搭建Struts 2 开发环境

      1、找到开发Struts 2的应用需要用到的jar包。

      2、编写Struts 2的配置文件。

      3、在web.xml中加入Struts 2 MVC启动框架配置。

    开发Struts 2 最少用到的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 : 文件上传组件。

    Struts 2 各种中文件详解:

    1、struts.xml文件

    struts.xml需要存放在WEB-INF/classes下,模板如下:

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

    2、web.xml文件

    在Struts 2中,Struts框架是通过Filter启动的,他在web.xml中的配置如下:

    复制代码

    struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 复制代码 在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件

    struts.xml完成初始化操作。

      注意:struts 2 读取到 struts.xml的内容后,以javabean形式存放在内存中,以后Struts 2对用户

    的每一次请求处理将使用内存中的数据。

      Filter 过滤器是用户请求和处理程序之间的一层处理程序。它可以对用户请求和处理程序响应的类容进行处理,通常用于权限、编码

    转换等场合。

    3、ActionSupport 类

     ActionSupport 类为 Action 提供了一些默认实现,主要包括预定义常量、从资源文件中取文本资源、接收验证错误信息和验证的默认实现。
    

    Struts 2 数据验证及验证框架的应用:

      1、数据校验

      Action 继承了 ActionSupport 类 ,而该类实现了 Action 、Validateable 、 ValidationAware 、TextProvider、LocaleProvider

    Serializable 接口。

      在Validateable 接口定义了一个 validate() 方法 , 在用户自定义 Action 类中重写该方法就可以实现 验证功能。

      

    复制代码
    1 public class LoginAction extends ActionSupport
    2 {
    3
    4 private String username ;
    5 public String getUsername() {
    6 return username;
    7 }
    8
    9 public void setUsername(String username) {
    10 this.username = username;
    11 }
    12 @Override
    13 public String execute() throws Exception {
    14 // TODO Auto-generated method stub
    15 if ( ! username.equals("HelloWorld"))
    16 {
    17 Map request = (Map) ActionContext.getContext().get("request") ;
    18 request.put("name", getUsername()) ;
    19 return SUCCESS;
    20 }
    21 else return ERROR ;
    22 }
    23 public void validate()
    24 {
    25 //如果名字为空,则把错误信息天骄的Action类的fileError
    26 if (this.getUsername() == null || this.getUsername().trim().equals(""))
    27 {
    28 addFieldError("username" , "名字不能为空") ;
    29 }
    30 }
    31 }
    复制代码
    在类中定义了校验方法后,该方法会执行系统的 execute() 方法之前执行。如果执行该方法后,Action类的fieldError中已经包含了数据校验错误信息,

    将把请求转发到input逻辑视图处,所以在 Action配置中也要配置一下。

    /login.jsp /error.jsp /main.jsp  注意:

      result中的name属性有下:

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

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

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

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

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

      2、Struts 2 验证框架的应用

       Struts 2 提供了大量的数据校验器,包括表单域校验器和非表单域校验器。

      (1)必填字符串校验器

       该校验器的名字是 requiredstring 其校验规则定义文件如下:

      

    复制代码

    true 请输入用户名 复制代码 文件命名:ActionName-validation.xml:其中ActionName 就是需要校验的用户自定义的Action 类的名字。而且该文件应该与Action 类文件放置在

    同一路径下。

      (2)必填校验器

      该校验器的名字就是 required 。该校验器与requiredstring 的差别就是 可以有空字符串。配置如下:

    复制代码

    请输入用户名 复制代码 (3)整数校验器

        该校验器的名字为 int ,该校验器要求字段的整数值必须在一定范围内。配置如下:

    复制代码

    50 100 大小必须在50至100之间 复制代码  (4) 日期校验器

      该校验器的名字是 date , 该校验器要求字段的日期值必须在指定范围类,所以也有 min 和 max 参数。配置格式:

    复制代码

    1900-01-01 9999-01-01 时间必须在1900-01-01至9999-01-01之间 复制代码  (5) 邮件地址校验器

      该校验器的名称是 email ,该校验器要求字段的字符如果非空,就必须是合法的邮件地址。格式如下:

    复制代码

    邮箱地址无效 复制代码  (6) 网址校验器

      该校验器的名称是 url , 该校验器要求字段的字符如果非空,就必须是合法的URL地址 。 格式 和 (5)邮箱校验器 类似。

      (7) 字符穿长度校验器

      该校验器的名称是 stringlength ,该校验器要求字段的字符长度必须在指定的范围之间 ,所以它有 minLength 和 maxLength 两个参数。

    它的个数如 (3)整数校验器 类似。

      (8) 正则表达式校验器

      该校验器的名称是 regex ,它检查被校验字段是否匹配一个正则表达式。

    3、Struts 2 拦截器:

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

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

      拦截器的配置:

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

     

        参数值

      
     其中<param.../>可以省略,但在有的时候就需要为其传入拦截器参数。

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

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

    复制代码
     

        

        

        

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

      

      拦截器实现类:

      Struts 2 提供了一些接口或类供程序员自定义拦截器。如:com.opensymphony.xwork2.interceptor.Interceptor 接口。

    该接口中有三个方法:

      void init () :用于初始化资源。

      String intercept (ActionInvocation invocation) :用于实现拦截的动作。

      destroy () :用于销毁在init()方法中打开的资源。

  • 相关阅读:
    Encrypted Handshake Message
    RSAParameters Struct
    What if JWT is stolen?
    What's the difference between JWTs and Bearer Token?
    RSA Algorithm Example
    第18届Jolt大奖结果公布
    Ruby on rails开发从头来(windows)(三十六) 调试技巧
    Ruby on rails开发从头来(四十二) ActiveRecord基础(主键和ID)
    YouTube开放基础技术架构 让用户建自家YouTube
    Ruby on rails开发从头来(四十) ActiveRecord基础(Boolean属性)
  • 原文地址:https://www.cnblogs.com/nicebaby/p/6063747.html
Copyright © 2011-2022 走看看