• Struts2学习笔记


    1.Struts2概念:

    处理访问服务器的请求(代替了servlet)

    2.Struts2优势:

    (1)自动封装参数

    (2)参数的校验

    (3)结果的处理(转发,重定向)

    (4)显示等待页面

    (5)防止表单的重复提交

    (6)国际化

    3.Struts2具有更加先进的架构,思想

    (1)struts2与struts1的区别(几乎是两个框架,没有太多联系)

    (2)struts2基于过滤器filter构建的框架

    4.搭建struts2框架

    (1)导包

     

    (2)编写Action类

    (3)编写src/struts.xml(先引入约束)

    (4)将struts2核心过滤器配置到web.xml

    5.struts2架构

    (1)输入访问的地址找到过滤器filter,访问路径为/*

    (2)过滤器回去找核心配置文件struts.xml,去每个package中查找namespace

    (3)在包中寻找action,并且创建出action对象,调用名为method=""的方法

    (3)通过返回值判断是否是返回结果<result name="返回值">,若是则返回相应的页面

    6.struts2获得参数

    (1)属性驱动

    (2)对象驱动

    (3)模型驱动(ModelDriver)

    7.拦截器(Interceptor)

    (1)拦截器封装了很多功能

    (2)优秀的设计,可插拔式设计

    (3)aop思想(面向切面编程)【将纵向重复代码,横向抽取】

    8.struts.xml配置详解

    <!-- package:将action配置封装,可以在package中配置很多action

    name属性:包名,起到标识左右,不能与其它包名重复

    namespace属性:给action的访问路径中定义一个命名空间

    extends属性:继承一个指定的包(必选)

    abstract属性:包是否是抽象的;标识包不能独立运行,专门被继承

    -->

    <package name="hello" namespace="/hello" extends="struts-default">

    <!-- action元素:配置action类

    name属性:决定action访问资源名

    class属性:action类的完成类名

    method属性:指定调用action中的方法来处理请求

    -->

    <action name="HelloAction" class="com.javaweb.hello.HelloAction" method="hello">

    <!-- result元素:结果配置

    name属性:标识结果处理的名称;与action方法的返回值对应

    type属性:指定调用哪一个result类来处理结果,默认使用转发

    标签体:填写页面的相对路径

    -->

    <result name="success">/hello.jsp</result>

    </action>

    </package>

    9.拦截器(Interceptor)配置详解

    自定义拦截器

    (1)拦截器创建(拦截器生命周期:项目启动时创建,关闭时销毁)

    1)新建类并实现接口Interceptor

    2)新建类并继承AbstractInterceptor类

    3)新建类并继承MethodFilterInterceptor类(定制拦截器拦截的方法)

     

      

    (2)拦截器配置

    1)注册拦截器

    <interceptors>

        <interceptor name="myInter3" class="拦截器完整类名"></interceptor>

    2)注册拦截器栈

    <interceptor-stack name="myStack">

    <!-- 自定义拦截器引入(建议放在20个拦截器之前) -->

    <interceptor-ref name="myInter3">

    <!-- 指定哪些方法不拦截 (不能与拦截方法同时执行)-->

    <param name="excludeMethods">add,del</param>

    <!-- 指定哪些方法需要拦截 -->

    <param name="includeMethods">add,del</param>

    </interceptor-ref>

    <!-- 应用默认拦截器栈(20个) -->

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

    </interceptor-stack>

    3)指定默认拦截器栈

    <default-interceptor-ref name="myStack"></default-interceptor-ref>

    <!-- 定义全局结果集 -->

    <global-result>

    <result></result>

    </global-result>

    </interceptors>

    拦截器api

    (1)放行

    (2)前后处理

    (3)不放行,直接跳转页面

  • 相关阅读:
    asp.net mvc上传头像加剪裁功能
    CSS基础部分总结
    Web前端之初学CSS
    JavaScript中的new操作符的原理解析
    JS常用数组API汇总
    【NOIP2020提高B组模拟11.26】卡常题
    【NOIP2020提高B组模拟11.26】逗气
    CSP-J/S总结
    计数题
    浅谈线段树——基础篇
  • 原文地址:https://www.cnblogs.com/FanJava/p/8057165.html
Copyright © 2020-2023  润新知