struct2复习、梳理


构建

1、Maven

   

        javax.servlet

        servlet-api

        2.5

        provided

   

   

        org.apache.struts

        struts2-core

        2.5.2

Web.xml

    Struts2

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    Struts2

    /*

2配置文件

    "user" extends="struts-default">

        "login" class="com.loginAction" method="login">

            "ERROR">error.jsp

            "SUCCESS">result.jsp

       

        "test" class="com.StorageAction" method="storage">

            "storage">/index.jsp

       

        "{前台名称} " class="类地址 " method="方法名(可默认) ">

            "{后台返回字符串} ">/{页面}

       

   

3类

继承

extends ActionSupport

返回字符串

**********************************************************

--其他

在struts2值栈中存储数据的三种方式

1用值栈对象中的set方法

public String execute() throws Exception {

        //1 获取值栈对象

        ActionContext context = ActionContext.getContext();

        ValueStack stack = context.getValueStack();

        //2 调用值栈对象中的set方法

        stack.set("demo", "DemoData");     

        return "success";

    }

2用值栈对象中的push方法

  public String execute() throws Exception {
        //1 获取值栈对象
        ActionContext context = ActionContext.getContext();
        ValueStack stack = context.getValueStack();
        //2 调用值栈对象中的push方法
        stack.push("abcd"); 
        return "success";
    }

3在action中定义变量(或对象),使用相应的get方法

//1. 声明变量
    public String name;
    //2. 生成变量的get方法
    public String getName(){
        return name;
    }
    //3. 在执行方法中为变量赋值
    public String execute() throws Exception {
        name = "DemoData";
        return "success";
    }

补充:list集合的示例

 
    // 1. 定义list变量
    private List<User> list = new ArrayList<User>();
    // 2. 生成get方法
    public List<User> getList() {
        return list;
    }
    public String execute() throws Exception {
        //3 向list中设置值
        User user1 = new User();
        user1.setUsername("小奥");
        user1.setPassword("123");
        user1.setAddress("美国");
        User user2 = new User();
        user2.setUsername("小王");
        user2.setPassword("250");
        user2.setAddress("越南");
        list.add(user1);
        list.add(user2);
        return "success";
    }

整体总结

一、 概述

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

二、 Action

action属性 :

 


动态方法调用:

       

            /list.jsp

            /update.jsp

            /add.jsp

       

       

   
默认action配置:

 默认的action是在访问一个不存在的action的时候访问的action,配置默认action,只需要在package中添加如下配置:

       

       

       

            /index.jsp

       

   
通配符映射:

使用通配符映射的方式可以大大减少action的数量,所谓通配符就是使用*,用于匹配0个或多个字符。在action的配置中,可以为name属性使用*来匹配任意的字符。比如下面的配置:

   

                /{1}.jsp

           

        {1}会被name属性中的*的内容填充,比如在浏览器中访问/editUser,会映射到action.EditUserAction类,返回到User.jsp页面中。其中的{1}实际上就是作为占位符的,大括号的值可以是0-9,其中{0}代表整个请求URL。比如下面的配置:

   

                /{1}_{2}.jsp

            

三、 拦截器

(1)创建拦截器组件(创建一个类,实现Interceptor接口,并实现intercept方法;也可以继承MethodFilterInterceptor,这种方式可以使action中某个方法不进行拦截)

public String intercept(ActionInvocation invocation){

   //拦截器--前部分处理

   invocation.invoke();

   //拦截器--后续处理     

}

(2)注册拦截器

   

       

           

           

       

   

               (3)引用拦截器(哪个Action希望被拦截器扩展,需要在此action配置下,引用拦截器)

   

     

     

       

       

     

   

拦截器栈

    

   

GF ? 2020/5/4