Struts2学习笔记复习整理

概念

前端处理框架
运行在web层,负责处理请求的
struts代替servlet处理访问服务器的请求

优势

struts2具有更加先进的架构以及思想

  • 自动封装参数
  • 参数校验
  • 结果的处理(转发/重定向)
  • 国际化
  • 显示等待页面
  • 表单的防止重复提交

Struts2历史

servlet是线程不安全的
(每次请求Servlet时都会产生一个Servlet对象,所以多个对象访问一个Servlet,会造成参数的覆盖,所以解决方法是将接收参数的线程变量放在方法中)
struts1基于线程不安全的servlet基础上构建
struts1基于线程安全的filter基础上构建
struts2与struts1区别就是技术上没有什么关系
struts2的前身是webwork框架

Struts2的核心就是拦截器(Interceptors),因为拦截器中体现了很多优秀的架构思想,首先,struts2帮我们封装了很多功能方法;其次,拦截器优秀的设计,如可插拔式设计(不是写死的);以及优秀思想体现,如aop思想

AOP思想

面向切面编程
体现在Filter,Interceptors
过滤器技术:架构上来讲,Filter能覆盖到所有的Servlet
拦截器技术:架构上来讲,Interceptors能覆盖到所有的Action,将接受参数功能放到拦截器
将纵向重复代码横向抽取
前处理->放行->后处理

Struts2框架的搭建

  1. 导包
  2. 书写Action类
    在这里插入图片描述
  3. 书写src/struts.xml
    在这里插入图片描述
  4. 将struts2核心过滤器配置到web.xml
    在这里插入图片描述

Struts2访问流程&Struts2架构

在这里插入图片描述

配置详解

核心配置struts.xml

在这里插入图片描述
Result类是一个接口,由转发和重定向实现

struts2常量配置

struts2默认常量配置位置
在这里插入图片描述

修改struts2常量配置

在这里插入图片描述在这里插入图片描述

常用常量配置

在这里插入图片描述

struts2配置进阶

struts.xml
在这里插入图片描述
在这里插入图片描述

struts2的默认配置

在这里插入图片描述

Action类详解

  • Action的书写方式
    在这里插入图片描述

Action方法

public String xx() throws Exception

结果跳转方式

struts.xml 中 action 元素 result 中的 type参数

转发

在这里插入图片描述

重定向

在这里插入图片描述

转发到Action

在这里插入图片描述

重定向到Action

在这里插入图片描述

访问servletAPI方式

原理

在这里插入图片描述
ActionContext 数据中心
|-request
|-response
|-ServletContext
|-requestScope
|-sessionScope
|-applicationScope
|-params
|-attrs

//获得ActionContext
ActionContext.getContext();
|-requestScope
|-sessionScope
|-applicationScope
|-params
|-attrs
//获得ActionContext中原生对象的工具类
ServletActionContext
|-request
|-response
|-ServletContext

通过ActionContext

在这里插入图片描述

通过ServletActionContext

struts2框架的使用就是脱离原生servlet对象,与servletAPI彻底解耦
在这里插入图片描述

通过实现接口方式

在这里插入图片描述

如何获得参数

Action是线程安全的,可以使用成员变量来接收参数
每次请求时都会创建新的Action实例对象(生命周期)
在这里插入图片描述属性驱动获得参数不推荐
在这里插入图片描述
在这里插入图片描述

StrutsMVC

MVC设计思想
M 业务模型 V视图 C控制
JAVAEE三层架构体现了MVC思想
V:客户端层 HTMLCSS JAVAscript
C:web层 Servlet JSP
M:Service层,Dao层 数据访问
在这里插入图片描述
Struts MVC
C:Filter:获得请求并且调用后台Action(线程安全,每次请求对应单独的Action)
M:Action:业务方法,参数接收都可以在Action中做
V:Result:转发重定向

集合类型参数封装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OGNL表达式

对象视图导航语言
${user.addr.name}
OGNL不仅仅可以视图导航,支持比EL(表达式语言)表达式更加丰富的功能

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述在这里插入图片描述

OGNL与Struts2的结合

Struts2为OGNL提供了一个OGNLContext—ValueStack

原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

参数接收

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述如何获得值栈对象,值栈对象与ActionContext对象是互相引用的

配置文件

在这里插入图片描述

在这里插入图片描述

自定义拦截器

拦截器生命周期
随项目的启动而创建,随项目的关闭而销毁
在这里插入图片描述在这里插入图片描述在这里插入图片描述

拦截器API

在这里插入图片描述在这里插入图片描述在这里插入图片描述

拦截器配置

struts.xml
在这里插入图片描述在这里插入图片描述在这里插入图片描述

拦截器拦截方法指定

在这里插入图片描述在这里插入图片描述

Struts2标签

标签体系

在这里插入图片描述

Struts2标签结构

在这里插入图片描述

  • 控制标签
    在这里插入图片描述
  • 数据标签
    在这里插入图片描述
  • 表单标签
    在这里插入图片描述
  • 非表单标签
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值