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)不放行,直接跳转页面

posted @ 2017-12-18 13:43  MichaelKai  阅读(149)  评论(0编辑  收藏  举报