struts2学习笔记--(1)

本文深入探讨了Struts2框架的基本概念,详细介绍了其在Web应用中的角色与工作原理,涵盖了三层架构、三大框架、Struts2的执行时序及内部流程、配置文件管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts2 学习笔记(1)

第一章:Struts2基本概念

  • 1.1 三层架构和三大框架
    • 1.1.1 三层架构

开发架构分为C/S架构和B/S架构,其中B/S架构中系统标准三层架构为:web(表现)层,service(业务)层,dao(持久)层。
web层:用户向服务端发送请求,服务端接受请求并作出回应(http请求响应)。web层分为控制层和展示层,控制层接收请求,展示层展示结果。其业务需求依赖service层。
web层设计一般采用MVC模型,即modle(数据模型),view(视图),controller(控制器)。MVC模型只应用于web(表现)层。
service层:处理业务逻辑和事务一致,依赖dao层,被web层依赖。
dao层:负责数据持久化。

  • 1.1.2 三大框架

在这里插入图片描述
三大框架功能如图:Struts2主要负责web层的请求封装处理,hibernate主要负责dao层的数据持久化,Spring为整体服务提供IoC(控制反转)和AOP(面向切面编程)。
IoC:将组件之间依赖关系从程序内部提到容器外部,并在程序运行期间动态创建组件需要的对象实例,以注入的方式发送给各个组件(依赖注入DI)。
AOP:剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来。

  • 1.2 Struts2介绍

    struts2是采用MVC架构的轻量化Web框架,采用拦截器(intercepter)机制处理用户请求。主要用于web层用户请求的封装处理和响应。

第二章:Struts2入门

  • 2.1 Struts2执行时序

在这里插入图片描述
1) tomcat启动,加载web.xml文件,遇到标签会创建过滤器对象。
2) struts2的核心过滤器(StrutsPrepareAndExcuteFilter)会负责加载struts.xml配置文件。
3) 当用户发送请求,前端控制器(StrutsPrepareAndExcuteFilter)会根据请求找到struts.xml中相应的配置。
4) 匹配完成,实例化动作类。
5) 调用指定动作方法(方法有返回值)。
6) 根据返回值,找到与返回值对应的结果视图。
7) 响应浏览器

  • 2.2 struts2内部执行流程

1)浏览器发送请求,进入struts2过滤器进行过滤
2)符合要求,进入struts2内部,创建动作类。不符合,进入下个过滤器或放行
3)进入系列拦截器,符合要求则执行动作方法
4)倒序重新进入拦截器

第三章:Struts2配置文件

  • 3.1 struts2中的配置文件

    当tomcat加载应用时同时加载struts2的配置文件。按加载顺序包括:
    1) default.properties(不可修改)
    2) struts.default.xml(不可修改)
    3) struts-plugin.xml(不可修改)
    4) struts.xml(可修改)
    5) struts.properties(可修改)
    6) web.xml(可修改,给过滤器配置参数)

  • 3.2 struts.xml中的标签

  • 3.2.1 标签

<!—开启开发者模式-- >

作用:更改struts2中的常量
属性:name:常量名字;value:指定的值

  • 3.2.2 标签

struts2引入面向对象概念,采用分包管理,且包与包之间可以有序继承。管理方便,易于模块开发。





其他属性:
abstract:声明抽象包,只要没有action标签即可
namespace:命名空间,模块管理url,以‘/’开头

  • 3.2.3 标签

作用:关联动作名称,动作类,动作方法
属性:
name:动作名称,唯一
class:动作类名(全限定类名)
method:动作方法名称

  • 3.3 动作类的三种创建方式
  • 3.3.1 无侵入式(不用


写一个动作类,写明动作方法,struts.xml文件中写明全部属性

  • 3.3.2 实现Action接口(少用)

动作类 implement Action。接口方法为execute(),因为默认execute()方法,所以不用指定action标签中的method。
PS:Action接口中定义的常量
SUCCESS:一般用于成功
ERROR:一般用于动作方法执行失败
LOGIN:一般用于返回登录界面
NONE:不返回任何结果视图,和return null一样
INPUT:一般用于回显

  • 3.3.3 继承ActionSupport类(默认动作类)

ActionSupport类实现了Action接口

  • 3.4 action业务配置方式
  • 3.4.1 一个请求对应一个业务控制类的一个方法
  • 3.4.2 动态调用方法

一般不使用,有漏洞
一个请求匹配一个动作类,不指定动作。
请求格式:Action名称!方法名.action
url:/userMgr!add
配置:




  • 3.4.3 通配符方式
*为通配符,代表任意字符串,{1}代表第一个*号 当前台发送a_bUser是,第一个*为a,第二个*为b
  • 3.4.4 注解的方式

导入三个jar包:
asm-3.3.jar
asm-commons-3.3.jar
struts2-convention-plugin-2.3.16.3.jar
例子:
// 相当于package的extends
@ParentPackage(“struts-default”)
// 相当于package的namespace
@Namespace("/")
public class LoginAction {
// login请求所对应的业务处理类,name为视图名称,location为返回的页面
@Action(value=“login”,results={
@Result(name=“success”,location="/main.jsp"),
@Result(name=“fail”,location="/error.jsp")
})
public String execute() {
if (loginName.equals(“admin”)) {
return “success”;
} else {
return “fail”;
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值