Struts基本概念

 内容源自:

Struts2基本概念

 

一.struts2体系结构:

1、Web浏览器请求一个资源。
2、过滤器Dispatcher查找方法,确定适当的Action。
3、拦截器自动对请求应用通用功能,如验证和文件上传操作。
4、Action的execute方法通常用来存储和重新获得信息。
5、结果被返回到浏览器。 

 

二.Struts2的具体工作流程

(1)  客户端(Client)向Action发用一个请求(Request)
(2)  容器(Container)通过web.xml映射请求,并获得控制器(Controller)的名字
(3)  容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExecuteFilter
(4)  控制器(Controller)通过ActionMapper获得Action的信息
(5)  控制器(Controller)调用ActionProxy
(6)  ActionProxy读取struts.xml文件获取action和interceptor stack的信息。
(7)  ActionProxy把request请求传递给ActionInvocation
(8)  ActionInvocation依次调用action和interceptor
(9)  根据action的配置信息,产生result
(10) Result信息返回给ActionInvocation
(11) 产生一个HttpServletResponse响应
(12) 产生的响应行为发送给客服端。

 

三.配置文件:

1、struts.xml

struts.xml是Struts 2 的核心配置文件,主要用于配置开发人员编写的action。

(1)基本格式如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <package name="test" extends="struts-default"/>
   <action name="Login1" class="com.chen.LoginAction1" >
   <result>/loginResult.jsp</result>
   <result name="input">/login1.jsp</result>
   </action>
   </package>
</struts>

①通过反射机制将请求参数注入到"com.chen.LoginAction1"类中
②调用"com.chen.LoginAction1"类的execute方法,该方法的原型为:public String execute() throws Exception;
③ 根据execute方法返回的String类型的字符串(如"input"),在配置文件中查找该字符串对应的页面,并转到该页面。

 

(2)标签详解
<package>标签
如果要配置<Action>的标签,那么必须要先配置<package>标签,代表的包的概念。包含的属性:
name         包的名称,要求是唯一的,管理action配置。
extends      继承,可以继承其他的包,只要继承了,那么该包就包含了其他包的功能,一般都是继承struts-default
namespace    名称空间,一般与<action>标签中的name属性共同决定访问路径,常见的配置如下:
namespace=""     -- 默认的名称空间(访问的方式和namespace="/"是一样的)
namespace="/"    -- 根名称空间
namespace="/aaa" -- 带有名称的名称空间,这样请求action时,URL是/namespace/name的形式
abstract         -- 抽象的。这个属性基本很少使用,值如果是true,那么编写的包是被继承的。     

<action>标签
代表配置action类,包含的属性:
name              和<package>标签的namespace属性一起来决定访问路径的。
class             配置Action类的全类名(默认值是ActionSupport类)
method            Action类中执行的方法,如果不指定,默认值是execute方法

<result>标签
action类中方法执行,返回的结果跳转的页面
name      结果页面逻辑视图名称
type        结果类型(默认值是转发,也可以设置其他的值)


注:
设置Struts2默认的Action:
在地址栏上输入一个不存在的action请求,程序会报404的异常。但是在<package>标签中通过<default-action-ref name="指定action标签name属性"></default-action-ref>来设置默认的Action。当在配置文件中找不到相应的action时,就由默认的action进行处理。
设置Action默认处理类:
在地址栏上输入一个正确的action请求,但是<action>标签中的class属性没有写具体的Action类也会报异常。在<package>标签中通过<default-class-ref class="指定action类的全路径"></default-class-ref>来设定action的默认处理类。

 

2、多个struts的配置文件的合并
为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。可以在使用<include>标签来引入其他的struts_xx.xml的配置文件。例如:

<struts>
<include file="conf/struts_user.xml"></include>
<include file="conf/struts_editer.xml"></include>
</struts>

这样可以把struts_user.xml和struts_user.xml各自编写,并放到一个文件目录下,使用时strus.xml直接包含这两个配置文件即可。需要注意的是struts_user.xml和struts_user.xml也必须按照strus的配置文件格式来写。

 

3、web.xml的配置

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>



    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

通过<url-pattern>/*</url-pattern>使得struts拦截所有URL请求。

Filter 过滤器是用户请求和处理程序之间的一层处理程序。它可以对用户请求和处理程序响应的类容进行处理,通常用于权限、编码转换等场合。

 

四。实现Action

1、把Action看作是POJO类
POJO(Plain Ordinary Java Object)简单的Java对象。简单来说,没有继承某个类,没有实现接口,就是POJO的类。我们直接写一个POJO类,把它当作struts2对应的一个Action类。这个类必须包含处理逻辑所需要的属性及相应的get、set方法,并且提供Struts2调用的execute方法。但通常不推荐这样做,这样不利于统一接口。

 

2、实现Action接口

Action接口中定义了5个常量,5个常量的值对应的是5个逻辑视图跳转页面(跳转的页面还是需要自己来配置),还定义了一个方法,execute方法,我们可以自己来实现。
常量值如下所示:
SUCCESS       -- 成功.
INPUT         -- 用于数据表单校验.如果校验失败,跳转INPUT视图.
LOGIN         -- 登录.
ERROR         -- 错误.
NONE          -- 页面不转向.

3、继承ActionSupport类,而该类实现了Action 、Validateable 、 ValidationAware 、TextProvider、LocaleProvider,Serializable接口。我们只需要根据实际情况重写一些其中的方法就可以满足需求。

 

五。实例

链接:https://blog.youkuaiyun.com/xiaokang123456kao/article/details/58601826

转载于:https://www.cnblogs.com/xym4869/p/8963736.html

Struts2体系结构图例详解 Struts2体系结构图例详解 MVC框架 立即下载

相关推荐

【参数不确定】敏感性分析(sensitivity analysis)

【运筹学】灵敏性分析

羊肉蛋花汤的博客 14万+

Struts2基本概念

一、Struts2体系结构 : 1、Web浏览器请求一个资源。 2、过滤器Dispatcher查找方法,确定适当的Action。 3、拦截器自动对请求应用通用功能,如验证和文件上传操作。 4、Action的execute方法通常用来存储和重新获得信息。 5、结果被返回到浏览器。 二、Struts2的具体工作流程 1、基本流程图 2、详细解释 (1) 客户端...

weixin_34302798的博客 183

【Hyper-V】虚拟机网络配置全解析:从端口映射到固定IP实战

本文全面解析Hyper-V虚拟机网络配置,从理解虚拟交换机三种模式(外部、内部、专用)的底层逻辑入手,指导用户创建稳定的内部/NAT网络,并详细演示如何在Linux与Windows虚拟机中配置固定IP。文章进一步深入讲解端口映射原理与netsh命令实战,以及双网卡配置和PowerShell自动化脚本等高级技巧,帮助用户彻底解决虚拟机网络“失联”问题,实现灵活可控的网络环境。

weixin_29290947的博客 269

Struts2体系结构图以及详解

Strut2的体系结构如图所示: 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);3、接着Filt

郭東的博客 2224

【图像大模型】RIFE实战:如何通过中间流估计实现4K视频的实时插帧优化

本文深入解析了基于深度学习的RIFE视频插帧算法,重点探讨其核心的中间流估计技术如何实现高效精准的帧生成。通过实战教程,详细介绍了针对4K视频的实时处理优化方案,包括环境配置、参数调优及性能瓶颈分析,帮助用户利用消费级显卡将低帧率视频转化为流畅的高帧率体验。

weixin_29093017的博客 458

一文看懂分布式存储架构

目录一、集中存储结构二、分布式存储1 、分布式存储的兴起2 、分布式存储的重要性3 、分布式存储的种类和比较三、分布式理论浅析1 、一致性和可用性2 、数据分布3 、复制4 、分布式协议5、跨机房部署四、分布式文件系统1、 Google 文件系统( GFS )2、 Taobao 文件系统( TFS )3、 Fackbook Haystack 文件系统4、 CDN 内容分发网络五、分布式键值系统1、 Amazon Dynamo2、 Taobao Tiar3、 ETCD4 、产品选型比较( Etcd , Zoo

weixin_70730532的博客 2万+

struts学习笔记之(1)—基本概念

Struts结构与Mysql 的BBS论坛编译 Struts 一、Framework struts是一个web framework,framework可以简单理解为框架,人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的Framework。Framework的体系提供了一套明确机制,从而让开

krystalcui 623

Xshell 连接 VMware虚拟机操作 截图和使用

vmwareVMware总部位于美国加州帕洛阿尔托(Palo Alto),是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案,企业通过数据中心改造和公有云整合业务,借助企业安全转型维系客户信任,实现任意云端和设备上运行、管理、连接及保护任意应用Xshell(安全终端模拟软件)Xshell [1]是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。

小 tom的博客 802

Struts的基本概念

Part 1 MVC模式      模型-视图-控制器(MVC模式)是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制

abc7845129630的博客 671

INFFUS 2025 | DDBFusion:基于双重分解和贝塞尔曲线的统一图像分解与融合框架

现有的图像融合算法大多集中于网络架构和损失函数的设计,采用统一的特征提取策略,却忽略了冗余信息和有效信息的划分。然而,对于互补信息而言,统一的特征提取器可能并不适用。因此,本文提出了一种基于贝塞尔曲线图像增强和分层分解的统一图像融合算法,并构建了一个自监督学习任务来学习有意义的信息。其中,贝塞尔曲线旨在模拟不同的图像特征,并构建特殊的自监督学习样本,因此作者的方法不需要特定任务的数据,并且可以在公共自然图像数据集上轻松进行训练。同时,作者的双重分解自监督训练方法可以为模型赋予冗余信息过滤能力。

小白学视觉 308

CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch

我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。

NJU phd 在读。 2634

Struts 框架的基本概念及实现MVC模式的原理

Struts 框架的基本概念当建筑师开始一个建筑项目时,首先要设计该建筑的框架结构,有了这份蓝图,接下来的实际建筑过程才会有条不紊,井然有序。同样,软件开发者开始一个软件项目时,首先也应该构思该软件应用的框架,规划软件模块,并定义这些模块之间的接口和关系。简单地说,框架是一组用于解决特定软件问题的类和接口的集合。框架可以提高软件开发的速度和效率,并且使软件更便于维护。框架提供了一整套预制的

小李专栏 2769

Far planner代码系列(2)

graph_decoder系列(2) 承接上文 我们接着来看decoder_node.cpp的代码部分 void GraphDecoder::Init() { /* initialize subscriber and publisher */ //graph_sub_ 订阅节点/robot_vgraph 其类型是visibility_graph_msg/Graph的消息 graph_sub_ = nh.subscribe("/robot_vgrap...

博客 1534

Struts基本概念,优点及不同版本关系

Struts基本概念,优点及不同版本关系 基本概念:struts是apache基金会的一个开源项目,是一套实现MVC的框架 MVC = 程序分层设计的思想 = Model(数据访问层1)/View(视图层 3)/Control(控制层2) 早期的web应用程序中,servlet,jsp中,既包含Java代码(处理数据逻辑,处 理业务逻辑的代码),又包含了H

弗兰-随风小欢的博客 514

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

struts2基本概念

Struts2基本概念 struts2是什么? struts是一个严格按照MVC分层思想,把客户端和服务端响应流程编写的开发框架。 MVC分层原理 这是现在最基本的分层方式,结合了SSH架构。 1.Pojo层就是对应数据库表的实体类。 2.Dao层就是使用了hibernate连接数据库、操作数据库(CRUD)。 3.Service层:引用对应的Dao数据库操作,在这里可以编...

weixin_43151099的博客 404

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Struts 基本概念,优点及不同版本之间的关系

strutx 1.x struts 是 apache 基金会的一个开源项目。 struts 是一套实现 MVC的框架。 MVC = 程序分层设计的思想 = Model(数据访问层1) / View(视图层3) / Control(控制层2) 这只是基本的分层,一些大项目层数会更多(比如:安全,权限等等)。 早期的 web 应用程序中,servlet,jsp 中,既包含Java代码(处理数...

weixin_30256505的博客 151

Struts2 基本概念

一、概述 Struts2是一个基于MVC设计模式的web应用框架,相当于一个servlet,在MVC设计模式中,Struts2作为控制器Controller来建立模型与视图的数据交互。 在传统Servlet+jsp的结构中Servlet要响应请求,分发请求,处理业务,这样看来Servlet就太臃肿了,而且业务逻辑也全是硬编码,不利于维护。Struts就是来干掉Servlet的 在MVC设计模式...

青春的法法 720

Struts2入门及基本概念

Struts2基本概念掌握Struts 2的执行过程能够使用Struts 2框架开发简单应用能够使用Struts 2实现数据校验掌握Struts 2框架的标签使用 基本概念 掌握Struts 2的执行过程 能够使用Struts 2框架开发简单应用 能够使用Struts 2实现数据校验 掌握Struts 2框架的标签使用 ...

肖肖的博客 471

struts基本概念

struts struts是开源框架。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP

interface2016的博客 708

复习Struts2的基本概念,开发流程;面向对象

Struts2的基本概念: Struts2是一个严格按照MVC分层思想,按照Controller,Service,Dao,pojo编写代码,处理客户端和服务端之间交互的框架。 Struts2开发流程: 1. 客户发送了一个request请求 2. 这个请求经过了一系列的过滤器,比如 ActionContextC...

weixin_44364127的博客 203

(韩顺平视频)struts基本概念及其优缺点

*struts的几个基本概念 1.struts是一个框架(frameset) 2.struts是一个web框架 3.框架提高了程序的规范的同时,也约束了程序员的自由 *struts为什么有 因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展。所以我们有必要用一个统一的规范来开发项目。 *struts的好处 1.程序更加规范化 2.程序开

flyleekungfu的专栏 624

Struts2框架--学习笔记(上):搭建struts2工程、struts2基本概念、struts2对页面数据的操作

概述: Struts2框架应用于javaee三层框架中的web层。是在Struts1和webwork基础上发张的一个全新的框架。 一、搭建一个最基本的struts2工程步骤: 1、导入基本的jar包依赖: 2、创建action: 首先:比较一下servlet和struts2的action的区别: (1)每次访问servlet的时候,都会执行service方法。 写类继承ht...

张维鹏的博客 1084

Struts2第1天+struts2基本概念、struts2的入门(环境搭建,基本使用)、struts2的配置文件详解、Strut2+Hibernate查询客户列表、关于struts.xml中没有提示...

第1章struts2基本概念 1.1三层架构和三大框架各自的位置 1.1.1三层架构: 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器。在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们课程...

banxihan9345的博客 456

struts基本概念(2)

一、struts使用步骤:     1.导包(基本)     2.web.xml配置struts控制器  C     3.页面开发  V     4.处理类开发 M()     5.配置struts.xml     6.部署运行   二、struts访问session(servlet )      1.解耦方式:ActionContext         Map    

穆雄雄的博客 485
上一篇: SSH三大框架的工作原理及流程
下一篇: Struts2的动态Action实现
aabb7654321
博客等级 码龄12年 10粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值