配置Action(一)——包和命名空间

关于AD中如何绘制原理图及其封装 AD中如何绘制原理图及其封装 题记:这是一个比较基础的知识,之所以我打算写一篇这样的笔记,主要是因为在日常生活中,我极少绘制特殊模块或芯片原理图及其封装。久而久之就忘记咋画了,有时需要画封装的时候又想不起来,网上的资料虽然一堆堆的,但往往只是仅原理图的绘制,或者是仅封装的绘制。为此我写一篇这样的笔记,记录绘制原理图及其封装的一条龙服务,感觉这对我而言尤为重要。 本文分为三大板块,依次是原理图的绘制、封装的绘制、二者的联立 第一板块——原理图的绘制 原理图的建立 第二板块——封装的绘制 第三板块——二者的 阅读详情

本文摘自 李刚 《Java EE 企业应用实战》

 

 

实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让struts2的哪个Action处理哪个请求,也就是完成用户请求和Action之间的关系。我们可以认为struts2的基本“程序单位”。

 

一. 包

        Struts2使用包来组织Action,因此,将Action定义在包定义下完成,定义Action通过使用package下的action子元素来完成,而每个package元素配置一个包。

        Struts2框架中的核心组件就是Action和拦截器,Struts2框架使用包来管理Action和拦截器等,每个包就是多个Action、多个拦截器、多个拦截器引用的集合。

        配置package元素是必须指定name属性,这个属性是引用该包的唯一标识,除此之外,还可以指定一个可选的extends属性,extends属性必须是另一个包的name属性。指定extends属性表示让该包继承另一个包,子包可以从一个或者多个父包中继承到拦截器、拦截器栈、action等配置。

       除此之外,Action2还提供了一种所谓的抽象包,抽象包的意义是该报不能包含Action的定义。为了显示指定一个包是抽象包,可以为该package元素增加一个abstract = "true"属性。

       在struts.xml文件中,package 元素用于定义包配置,每个package元素定义一个包配置,定义package时可以指定如下几个属性:

       (1) name: 这是一个必须的属性,该属性指定该包的名字,该名字是该包被其他包引用的key。

       (2) extends: 该属性是一个可选属性,该属性指定该报继承其他包。继承其他包,就可以继承其他包中的Action定义、拦截器定义等。

       (3) namespace: 该属性是一个可选属性,该属性定义该包的命名空间。

       (4) abstract: 该属性是一个可选属性,他指定该包是否是一个抽象包,在抽象包中不能有package属性。

        因为Struts2的配置文件时从上到下进行处理,所以父包应该在子包的前面定义。

        下面是一个简单的struts.xml文件配置文件范例。在下面的struts.xml文件中配置两个包,其中名为default的包,继承了Struts2框架的默认包:struts-default。

<?xml version = "1.0" encoding = "UTF-8"?>
	<!--下面是Struts2配置文件的DTD信息 -->  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    "http://struts.apache.org/dtds/struts-2.0.dtd">
	<!--struts是struts2配置文件的跟元素 -->
<struts>
	<!--配置第一个包,该包名为default,继承了struts-default-->
	<!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 -->
	<package name="default" extends="struts-default">
		<!--下面定义了拦截器部分-->
		<!--以下的该元素可以出现,也可以不出现,但最多出现1次 -->
		<interceptors>
			<!--定义拦截器栈-->
			<!--下面的元素可以出现0次,也可以出现无限多次 -->
			<interceptor-stack name="crudeStack">
				<!-- 下面的元素必须出现,可以出现无数多次 -->
				<interceptor-ref name="params" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>
		<!-- 下面的元素可以出现0次,也可以出现无限多次 -->
		<default-action-ref name="showcase" />
		<!--定义一个Action,该Action直接映射到showcase.jsp页面-->
		<action name="showcase" class="" method="" convertor="">
			<!-- 下面的元素可以出现0次,也可以出现无限多次 -->
			<param name="参数名">参数值</param>
			<!-- 下面的元素可以出现0次,也可以出现无限多次 -->
			<result>showcase.jsp</result>
		</action>
		<!--定义一个Action,该Action类为lee.DateAction-->
		<action name="Date" class="lee.DateAction">
			<result name="success">/date.jsp</result>
		</action>
	</package>

	<!--定义一个名为skill的包,该包直接继承default的包-->
	<package name="skill" extends="default" namespace="/skill">
		<!--定义默认的拦截器引用-->
		<default-interceptor-ref name="crudeStack" />
		<!--定义一个名为Edit的Action,该Action对应的处理类是lee.SkillAction-->
		<action name="edit" class="lee.SkillAction">
			<result>/empmanager/editskill.jsp</result>
			<interceptor-ref name="params" />
			<interceptor-ref name="basicStack" />
		</action>
		<!--定义一个名为Save的Action ,该Action对应的处理类lee.SkillAction,使用skill方法作为处理方法-->
		<action name="Save" class="lee.SkillAction">
			<result name="input">/empmanager/editSkill.jsp</result>
			<result name="redirect">edit.action?skillName=${currentSkill.name}
			</result>
		</action>
	</package>
</struts>  

        上面的struts.xm文件中第一个package中定义继承了一个struts-default父包,那这个父包位于何处呢?其实它位于struts核心jar包struts2-core-2.x.x.jar文件中,只要解压该文件就能看到一个struts-default.xml文件。

        从上面的配置片段就可以看出,struts2-core-2.x.x.jar里已经定义了struts-default抽象包,该包下包含了大量的结果类型定义、拦截器定义、拦截器引用定义等,这些定义是配置普通Action的基础,所以开发者的package通常应该继承于struts-default包。

        注意:实际上所有struts2插件文件都会提供一个struts-plugin.xml文件,而不同的struts-plugin.xml文件会定义另一个抽象包,用于被需要使用该插件的开发者继承,所以如果我们使用struts2中的某个插件时,可能需要用到struts插件文件中的包。

 

二. 命名空间

        从前面的内容可知,每定义一个package元素时,都可以指定一个namespace属性,用于指定该包对应的命名空间。

        Struts2只所以提供命名空间的功能,主要是为了处理同一个web应用中包含同名的Action的情形,Struts2以命名空间方式来管理Action,同一个命名空间中不能有相同的Action,不同的命名空间中可以有不同的Action。

        Struts2不支持为单独的Action设置命名空间,而是通过包指定namespace属性来为包下面的所有Action指定共同的命名空间。如果配置package时没有指定namespace属性,那么包下的所有Action处于默认的包空间下。

        下面用一个应用示例来说明Struts2的命名空间的用法。看下面的struts.xml文件中的代码这份配置文件中配置两个package,并为后一个package指定了命名空间为/book。

<?xml version = "1.0" encoding = "UTF-8"?>
	<!--下面是Struts2配置文件的DTD信息 -->  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    "http://struts.apache.org/dtds/struts-2.0.dtd">
	<!--struts是struts2配置文件的跟元素 -->
<struts>
<!--配置国际化资源常量,指定国际化资源文件的baseName为messageResource-->
<!--下面的元素可以出现0次,也可以出现无限多次 -->  
    <constant name="struts.custom.i18n.resource" value="messageResource"/>  
	<!--配置名为lee的包,该包继承了struts2的默认包,没有指定命名空间,将使用默认命名空间-->
	<!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 -->
	<package name="lee" extends="struts-default">

		<!--配置一个名为Login的Action-->
		<action name="login" class="lee.LoginAction">
		  <result name ="input">/login.jsp</result>
			<result name ="error">/error.jsp</result>
			<result name = "success">/success.jsp</result>
		</action>
	</package>
<!--配置名为get的包,该包继承了struts2的默认包,指定该包的命名空间为/book-->
	<!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 -->
	<package name="get" extends="struts-default" namespace = "/book">
		<!--配置一个名为getBooks的Action-->
		<action name="getBooks" class="lee.GetBooksAction">
		  <result name ="input">/login.jsp</result>
			<result name = "success">/success.jsp</result>
		</action>
	</package>
</struts>  

       在上面的struts.xml配置文件,配置两个包:lee和get,配置get包时namespace属性配置包的命名空间属性为/books。

       对于名为lee的包而言,该包没有指定namespace属性。如果该包没有指定namespace属性那么该包使用默认的命名空间,默认空间名总是" "。

       当某个包指定了命名空间后,该包下所有的Action处理的URL应该是命名空间+Action名。以上面的代码中get包为例,该包下包含了名为getBooks的Action,该Action处理的URL为:

http://localhost:8080/namespace/book/GetBooks.action

      注意:Struts2中的命名空间的作用等同于Struts1中的模块的作用,它允许以模块化的方式来组织Action。

      除此之外,Struts2还可以显示指定根命名空间,通过设置某个包的namespace = "/"来指定根命名空间。

       (1) 具体路径命名空间和默认命名空间

        如果请求为/barspace/bar.action,系统首先查找/barspace命名空间里名为bar的Action,如果在该命名找到对应的Action,则使用该Action处理用户的请求;否则,系统将到默认的命名空间中查找名为bar的Action,如果找到对应的Action,则使用该Action处理用户的请求;如果两个命名空间里都找不到名为bar的Action,则系统将出现错误。

      注意:默认的命名空间里的Action可以处理任何命名空间下的Action请求。意思就是说,如果存在URL为/barspace/bar.action的请求,并且/barspace的命名空间下没有名为bar的Action,则默认命名空间下名为bar的Action也会处理用户的请求。但是根命名空间下的Action只处理根命名空间下的请求,这就是根命名空间和默认命名空间的区别。

 

       (2) 根命名空间和系统默认命名空间

        如果请求为/login.action,系统会根据根命名空间("/")中查找名为login的Action,如果在根命名空间中找到了名为login的Action,则该Action处理用户的请求;否则系统将转为在默认命名空间中寻找名为login的Action,如果默认的命名空间中有名为login的Action,则由该Action处理用户的请求。如果两个命名空间中都找不到名为login的Action,那么系统将出现错误。

      注意:命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action系统将先在/bookservice/search的命名空间下查找名为get的Action,如果在该系统命名空间内找到名为get的Action,则由该Action处理该用户的请求;如果在该命名空间中没有找到名为get的Action,系统将直接进入默认的命名空间中查找名为get的Action,而不会在bookservice的命名空间下查找名为get的Action。

 

 

 

 
SAP 系统中的数字签名解决方案及应用案例分析 在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。 阅读详情

相关推荐

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

Struts2的默认命名空间和根命名空间

Struts2的默认命名空间:namespace=""; 根命名空间namespace="/"; 如/login.action,系统会先在根命名空间下查找名为login的Action,如果查找不到会在默认命名空间下查找 ...

wei881867504的博客 462

AI量化交易工作台Vibe-Trading:用自然语言驱动策略回测与多智能体研究

量化交易通过数学模型和计算机程序执行投资决策,其核心在于将市场规律转化为可验证的策略。传统量化开发涉及数据获取、策略编写、回测验证等复杂工程,对非编程背景的从业者构成较高门槛。随着大语言模型技术的发展,自然语言交互正成为降低技术使用难度的关键。Vibe-Trading项目正是这一趋势的实践,它将金融工程任务封装为可调用的工具与技能,允许用户通过自然语言指令直接驱动策略回测、因子研究和投资组合分析。其技术价值在于构建了一个模块化的AI Agent框架,通过ReAct推理框架协调多个专项技能,并创新性地引入多智

weixin_28695161的博客 1565

struts2默认命名空间和根命名空间

<br />    默认的命名空间“ namespace="" ”,根命名空间“ namespace="/" ”。   <br />    <package name="test" extends="struts-default"> ,如果未指定命名空间,则命名空间默认为“ namespace="" ”。<br />    默认命名空间里的Action可以处理任何命名空间下的Action请求。例如,如果存在URL为/barspace/bar.action的请求,并且/barspace的命名空间下没有

security08的专栏 7427

AUTOSAR BswM配置实战:手把手教你用Vector Davinci Configurator搭建第一个模式管理规则

本文详细介绍了如何使用Vector Davinci Configurator工具配置AUTOSAR BswM模块,实现车身控制ECU的模式管理规则。通过实战案例,从环境准备、核心概念梳理到具体配置步骤,包括ModeRequestPort、ModeCondition、Logical Expression和Rules的构建,帮助工程师快速掌握BswM配置技巧,提升汽车电子软件开发效率。

weixin_28678831的博客 351

Android音频输出流实战:从AudioFlinger到HAL层的完整调用链解析

本文深入解析了Android音频输出流的完整调用链,从应用层的AudioTrack和AAudio API,到系统服务AudioFlinger的混音调度,最终抵达硬件抽象层(HAL)。文章结合实战经验,探讨了如何利用底层机制优化音频延迟、处理设备切换,并提供了性能调优与问题排查的具体方法,是开发高性能音频应用的实用指南。

weixin_29208327的博客 251

struts2学习笔记之九:struts2的命名空间

struts2的命名空间适用于多人开发,根据不同模块命名不同的命名空间,方便开发和管理 struts2如果没有配置命名空间,默认命名空间为"/",Struts2中Action的完整路径应该为:namespace+Action的名称 但是在jsp中调用的时候,不需要加/, 首先在指定的命名空间下查找Action,如果找到了就使用此Action,如果没有找到在上层目录中查找,一直到 根(缺省命...

weixin_30824599的博客 167

史上最小白之RNN详解

1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当...

Tink1995的博客 4万+

struts2快速入门

一、概述: status2是一个基于MVC设计模式的WEB应用框架,本质上相当于servlet,在MVC设计模式中,status2作为控制器来建立模型与视图数据的交互。 status2和status1的体系结构发生了巨大变化,status2以WebWork为核心。采用拦截器的机制来处理用户的请求,这样使得业务逻辑控制器能够与servletAPI完全脱离开。相对于WebWork来说status2变化很小。 二、常见WEB层框架: status2 status1 WebWork SpringMVC 三、快速

weixin_40222311的博客 2040

NI-HIL学习开篇

自我介绍下,四年零部件厂工作经验,一年(至今)主机厂工作经验,负责BMS/VCU方向软硬件测试。 学习目的:把握新能源汽车的测试发展趋势,顺应历史的洪流。 学习目标:1.掌握HIL开发测试流程中的IO配置、开环验证、闭环模型开发及调试、自动化测试 2.掌握第三方模型的搭建及simulink关联仿真(2019.05.21新增:需巩固练习matlab基础——2...

masonson的专栏 4177

基于SC、SCL、BP、SCAN和SSC的译码算法及Matlab代码

本文将介绍几种常见的译码算法,包括SC(Successive Cancellation)、SCL(Successive Cancellation List)、BP(Belief Propagation)、SCAN(Soft-Input Soft-Output Successive Cancellation)、SSC(Stacked Successive Cancellation)的原理,并提供相应的Matlab代码实现。以上是基于SC、SCL、BP、SCAN和SSC的译码算法的Matlab代码示例。

ByteWhisper的博客 944

package action;

package action; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.struts2.ServletActionContext; import bean.User; import com.opensymphony.xwork2.ActionSupp

Gaara的专栏 512

Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来从 AssetBundle - 完整系列教程学习 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

android action命名空间,配置Action(一)——包和命名空间

本文摘自 李刚 《Java EE 企业应用实战》实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让struts2的哪个Action处理哪个请求,也就是完成用户请求和Action之间的关系。我们可以认为struts2的基本“程序单位”。一. 包Struts2使用包来组织Action,因此,将Action定义在包定义下完成,定义Acti...

weixin_31474035的博客 601

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Struts:包&命名空间、配置Action、Action复用

实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。配置Action就是让Struts2知道哪个Action处理请求,也就是完成用户请求和Action之间的对应关系。可以把Action当成Struts2的基本“程序单位”。 定义Aciton时,至少需要指定该Action的name属性,该name属性既是该Action的名字,也指定了该Action所处理的请求的URL。 如果没有指定Action的method属性,默认值为execute()方法。 如果没有指定Acti.

燕双嘤 693

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Action包和命名空间及其动态方法调用

Action包和命名空间 属性: name:指定包的名称(必选) extends:指定继承的包,可继承到拦截器,action等配置 namespace:指定包的命名空间 abstract:抽象包不能含有action的定义   namespace 提供命名空间,用于处理同一web应用下有同名的action。 访问namespace需在url加上该路径。 默认命名action可

MisterPan 2895

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

配置Action

配置Action 实现了Action类后,就可以在struts.xml中配置该Action类了。配置Action就是让Struts2 知道哪个Action处理哪个请求,也就是完成用户请求和Action之间的对用关系,我们可以认为,Action是Struts2的“程序单元”。 一.包和命名空间   Struts2使用包来组织命名空间,因此,将Action定义放在包定义下完成,定义Action通...

weixin_30786617的博客 456

Struts2:配置Action——包和命名空间

本文摘自 李刚 《Java EE 企业应用实战》     实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让struts2的哪个Action处理哪个请求,也就是完成用户请求和Action之间的关系。我们可以认为struts2的基本“程序单位”。   一. 包         Struts2使用包来

别样的风采是我 5423

Struts2学习之配置Action

引言 如何让Action与相应的请求匹配呢? 包和包名空间        Struts2使用包来组织Action , 因此,将Action 定义放在包定义下完成,定义Action 通过使用<package…/>下的<action… ./>子元素来完成, 而每个package 元素配置一个包。 例子 <pack...

qq_41827511的博客 275

【SSH三大框架】Struts2基础第三篇:配置Action以及调用Action的三种方式

配置Action以及调用Action的三种方式

u010800530的专栏 9861

struts.xml配置文件中的包,命名空间,默认继承的介绍

/*struts.xml配置文件中的包的介绍 <packagename="itcast"namespace="/test"extends="struts-default"> <actionname="helloworld"class="cn.it.acti...

choutanzu3300的博客 350

Struts 命名空间 默认action配置 Result 配置 异常处理

Struts 命名空间的操作: 在 jsp页面的测试代码: users/Method1.action?username=zhangsan">测试add users/Method2.action?username=lisi">测试show action默认测试 全局Result测试 type = “RedirectAction” 测试 //namespace=“users”就是自己定义的

man_tou_22 438

Struts2_Action访问与Action方法调用

一、Action访问路径 Action的访问路径是由struts.xml文件中配置的Action所在包的命名空间,Action的名字和常struts.action.extension共同决定的 例如: /1.jsp /2.jsp

sunvsjay1890的专栏 3409

struts2之Action配置

1.包和命名空间1.1包struts2使用包来管理其核心组件,如Action,拦截器等。在struts.xml中,使用<package …>来定义包,在<package…>中,配置Action,拦截器,全局参数等。<package…>元素,可以有以下属性: name:必需属性,指定包的名字,也是被其他包引用的唯一key。 extends:可选属性,指定该包继承其他包。继承了其他包,可以继承其他包中的

Minhellic的博客 680

struts包和命名空间

配置元素时必须指定name属性,这个属性是引用该包的唯一标识。除此之后,还可以指定一个可选的extend属性,该属性值必须是另一个包得name值。指定extend属性表示让该包继承另一个包,子包可以从一个或多个父包中继承到拦截器,拦截器栈,action等配置。 配置属性,用于指定该包对应的命名空间,如果没有配置该属性的话,则action处在默认的包空间下。配置namespace是因为同一

话别深秋 2275

struts2 action跨包跳转配置方法

在struts2中,从一个包(package)的action访问另一个包中的action,二者在不同的namespace中时,需要在struts的配置文件中作如下配置 /other view type可以选择相应的结果类型 namespace指定命名空间; actionName指定action名称,注意不加后缀; 需要传递的参数由param节点在后面指明,分

工作学习笔记 2870
上一篇: 泛型类、泛型方法的使用与理解
下一篇: Hibernate概述
IMFuckingHigh
博客等级 码龄18年 85粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值