struts2基础(续)

搭建基于Eclipse的Struts2基础应用实例 Struts2是Apache软件基金会的顶级开源项目之一,它是一个基于MVC设计模式的Web应用框架。它将Web层的表示层和业务层进行分离,有助于提升代码的可维护性和可扩展性。Struts2通过拦截用户请求并将其分发到相应的业务逻辑处理组件中,简化了复杂请求的处理流程。 阅读详情

昨天发表完第一篇博客之后就停电了,今天就让我赶紧把昨天学习的东西继续拿来分享。

闲话不多说,昨天只是演示了一个最基础的struts2框架的小知识,那么接下来就让我介绍一下关于struts2的细节。


首先让我们来看一个重要的属性:namespace

     我们知道,这个属性是在struts.xml文件<package>中,其作用是定义该包的命名空间。命名空间可以用来区别同名的Action。在一个命名空间内Action名必须是唯一的。但是不同的命名空间中可以用同名的Action。

  •       如果某个包没有指定namespace,则该包使用默认的命名空间,默认的命名空间总是“”。 
  •       namespace决定了action的访问路径,默认为“”,可以接受所有路径的action。
  •       namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/(action的name值).aciton,/xxx/(action的name值).aciton,/xxx/yyy/ (action的name值).action
  •       namespace最好用模块来进行命名(这样就是更好的为了确定模块的作用,更明确)
再来看看Action配置中的各项默认值:
      代码示例:

       解释:
       1>如果没有为action指定class,默认是ActionSupport。
       2>如果没有为action指定method,默认执行action中的execute()方法。
       3>如果没有指定result的name属性,默认值为success
为了测试Action中存在的多个方法,我们程序员可以使用!+方法名调用指定方法,如下:
public class HelloWorldAction{
	private String message;
	....
	public String execute() throws Exception{
		this.message = "我的第一个struts2应用";
		return "success";
	}
	
	public String other() throws Exception{
		this.message = "第二个方法";
		return "success";
	}
注:  

假设访问上面action的URL路径为:/struts/test/helloworld.action

要访问action的other() 方法,我们可以这样调用:

/struts/test/helloworld!other.action

如果不想使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。

<constantname="struts.enable.DynamicMethodInvocation"value="false"/>

效果:

那么就会在页面上显示“第二个方法”

提示:

这种调用方式会带来安全隐患,所以在struts2版本2.3.15.2之后就不能使用DMI动态调用方法

默认的action

如果请求一个不存在的action,结果将是HTTP404错误,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。       默认的action使用default-action-ref元素来声明:

源代码:

<package name="defaultAction" namespace="/default“ extends="struts-default">
        <default-action-ref name="error"></default-action-ref>    
        <action name="defaultaction“ class="org.lesson05.DefaultAction">
            <result name="success">/defaultAction.jsp</result>
        </action>
        <action name="error">
            <result>/error.jsp</result>
        </action>
</package>
解释:

       我来大致解释一下配置这个的作用,比如我们开发的系统可能正在维护或者升级,我们的客户访问不到他们想访问的页面,而我们不能把报404错误的页面反馈给用户,那样会给用户留下极差的印象。所以我们可以单独设计一个错误页面,里面设置我们想要反馈给用户的信息,这样就可以将用户的意见大大降低。

多个Action共享一个视图--全局result配置

       当多个action中都使用到了相同视图,这是我们应该把result定义为全局视图。struts提供了全局forward,struts2中也提供了相似功能:

源代码:

<package ....>
	<global-results>
		<result name="message">/message.jsp</result>
	</global-results>
</package>
解释:

       这里就是简化代码的最经典的反映,多个action共享同一个视图。

为Action的属性注入值

       Struts2为Action中的属性提供了依赖注入功能,在struts2的配置文件中,我们可以很方便地为Action中的属性注入值。注意:属性必须提供setter方法。如下:
源代码:
Java类
public class HelloWorldAction{
	private String savePath;

	public String getSavePath() {
		return savePath;
	}
	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}
       ......
}
struts.xml
<package name="itcast" namespace="/test" extends="struts-default">
	<action name="helloworld" class="cn.itcast.action.HelloWorldAction" >
		<param name="savePath">/images</param>
		<result name="success">/WEB-INF/page/hello.jsp</result>
	</action>
</package>
解释:
  上面通过<param>节点为action的savePath属性注入“/images”

指定需要Struts2处理的请求后缀
       ¨前面我们都是默认使用.action后缀访问Action。其实默认后缀是可以通过常量”struts.action.extension“进行修改的,例如:我们可以配置Struts2只处理以.do为后缀的请求路径:
源代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.action.extension" value="do"/>
</struts>
补充:
   如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如:

<constant name="struts.action.extension" value="do,go"/>

解释:
             这样做更多的是让我们清楚每个模块的层次,更容易分清作用。
为应用指定多个struts配置文件

        在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:


源代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-user.xml"/>
	<include file="struts-order.xml"/>
</struts>

解释:
   通过这种方式,我们就可以将Struts2的Action按模块添加在多个配置文件中

Struts2快速基础入门实战指南 本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC架构的Java Web应用程序框架,它简化了开发过程并提供了对控制流的更好控制。本文是一个初学者友好型的快速入门指南,将引导读者了解Struts2的核心概念,包括Action类、配置文件、MVC模式、拦截器、ValueStack、OGNL表达式语言以及结果类型。教程将一步步带领读者构建一个简单的Strut... 阅读详情

相关推荐

Struts2基础应用实践:一个入门级案例

本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC模式的Java Web应用框架,通过Action和Result实现业务逻辑和表现层的分离。本文通过一个简单的例子,指导如何配置Struts2应用,包括添加依赖、创建配置文件 struts.xml 、编写 HelloWorldAction 类以及展示如何使用Struts2标签在J...

weixin_42608299的博客 970

struts2学习---基础篇(续)

1:namespace必须用斜杠开头,你的namespace是什么,你访问的时候工程名后要跟什么。然后再跟对应的action 解释:package中namespace属性是可以不写的,等用于“namespace=""”,等空意味着只要你在url中输入action的name,不管是“http://localhost:8080/aaa/bbb/index”还是“http://localhost:...

weixin_30826095的博客 105

VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)

VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che

chengbaola的博客 1365

Struts2基础学习总结

一、Struts2简介参考《JavaEE 轻量级框架应用与开发—S2SH》Struts框架是流行广泛的一个MVC开源实现,而Struts2是Struts框架的新一代产品,是将Struts1和WebWork两种技术进行兼容、合并的全新的MVC框架。Struts2框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易。Struts1运行原理:

纸上得来终觉浅 绝知此事要躬行 1万+

gem5 run parsec2.1 ---- 亲测跑通教程

使用gem5模拟仿真parsec2.1,排除了各种bug,成功跑通,亲测有效!!!

m0_55539563的博客 1547

手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程

本文详细介绍了在Android 14中调试ShellTransitions机制的方法,重点通过Log追踪ActiveTransition与Handler的匹配过程。文章提供了关键日志点植入策略、Handler匹配机制解析及实战调试案例,帮助开发者解决窗口转场动画中的卡顿和错乱问题,提升系统动画性能。

weixin_42652674的博客 431

Struts2 基础入门

什么是Struts2 Struts2 是 Apache 软件组织推出的一个基于 MVC 模式的轻量级 Web 框架,自问世以来,就受到了广大 Web 开发者的欢迎。目前,Struts2 在 Java Web 开发领域中已占据了十分重要的地位。 目前为止,Struts 框架拥有两个主要版本:Struts1.x 和 Struts2.x。Struts1 是最早的基于 MVC 模式的轻量级 Web 框架,它能够合理划分代码结构,并包含验证框架、国际化框架等多种实用工具框架。 随着技术的不断进步,Struts1 的局

李鲤驴的博客 1743

GD32F303 ADC+DMA实战:用硬件过采样搞定多通道数据采集(附完整代码)

本文详细介绍了GD32F303系列MCU通过ADC+DMA结合硬件过采样技术实现多通道数据采集的实战方案。从硬件设计要点到软件配置全解析,包括时钟树配置、ADC模块初始化和DMA传输设置,提供了完整的代码示例和优化技巧,帮助工程师构建高精度、低功耗的数据采集系统。

weixin_30466039的博客 320

Struts2基础

1、Struts2概述 1.1 理解MVC原理 MVC(Model-View-Controller 模型-视图-控制器),是一种程序设计理念。目前,在Java Web应用方面MVC框架有很多,常用的流行框架有Struts、JSF、Tapestry、Spring MVC等,在这些框架之中,Struts和Spring MVC框架的应用最为广泛。 到目前为止,Struts框架拥有两个主要的版本,分...

pan_junbiao的博客 1152

【大二组培训】2017年电子设计大赛H题总结(软件部分)

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt im

HAIBARA的博客 3024

基于51单片机的电子记分牌的设计

基于51单片机的电子记分牌的设计 电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图(2)软件设计3 设计原理分析3.1 电源、复位、下载电路的设计(见图1、2、3)3.2 时钟电路的设计3.3 矩阵键盘电路的设计3.4 数码管显示电路设计4程序代码 摘要 本设计为电子记分牌设计,是以STC89C52芯片为核心,辅以必要电路设计进行的。用4位LED七段数码管显示比赛两方的分数(每方分数用2位

行走的皮卡丘 2037

struts2总结

struts2了解 1.到Apache下载Struts 2.0包  http://people.apache.org/builds/struts/2.0.10/ 2.将Struts 2.0 lib下的jar文件加到工程的构建路径(/WEB-INF/lib)--commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,str

mike_caoyong的专栏 3021

功能安全实战系列12-英飞凌TC3xx锁步核及其自检开发

本文介绍了英飞凌Tricore系列芯片的锁步核(Lockstep Core)功能及其故障注入自检机制。锁步核通过主核和检查核同步执行指令,并比较输出结果来检测硬件故障。文章详细阐述了锁步核的工作原理、使能配置方法以及故障注入自检的实现过程。故障注入测试通过专用寄存器LCLTEST触发,系统会定期自动测试比较器节点,验证锁步核的故障检测能力。当检测到异常时,会触发SMU模块的警报机制。该技术为汽车电子系统提供了重要的功能安全保障。

initiallizer的博客 923

Struts2 详解

  (一)自己实现struts2框架        Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。最初的struts1.x很快在企业开发中流行了起来,与此同时,当时还有一个非常的优秀的web开发框架诞生,那就是webwork,但webwork...

qq_41889810的博客 2882

ROS2入门到精通—— 2-9 ROS2实战:Nav2常见的工程问题(参考3D视觉工坊)

本文介绍了Nav2常见的工程问题,还有调试DWB的一些经验,以及DWB的一些缺点

BigDavid123的博客 1070

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Struts2权威指南总结3:Struts2基础

1,struts1的mvc实现: Struts1是世界上最古老的mvc框架,出现于2001年。由ActionServlet作为核心API。 Struts1使用ActionForm接受请求参数。   2,WebWork WebWork以ServletDispatcher为核心。使用ServletDispatcher处理用户的所有请求,它是整个WebWork框架的核心控制器。 WebWor

您已进入防沉迷系统... 1400

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[java][struts2]Struts2框架按照如下顺序加载struts2配置

为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。四、在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值。

一名不太专业的程序员 3364

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Struts2学习笔记15:Struts2的文件上传和下载【续】二

 Struts2学习笔记15:Struts2的文件上传和下载【续】二第十三讲学习内容:使用struts2实现文件上传处理两个小问题:处理用到的文件struts2-core-2.0.11.jar中org.apache.struts2/default-properties对于中文乱码的处理设置临时存放目录

风达的专栏 1287

struts2基础配置

1.导包 2.在web.xml里配置struts2过滤器 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http...

lchenjiwen的博客 154

【Java基础】之Struts1与Struts2比较

在说到Struts1与Strus2的区别之前,不得不先提到MVC。MVC是一个种设计模式,代表了一种多层的应用程序的实现方式。处理过程为:首先控制器接受了用户的请求,并决定应该调用哪个模型来处理,然后模型处理了用户的请求后返回数据,最后控制器确定用相应的视图将模型返回的数据呈献给用户。     说完了MVC,再说一下为什么要用Struts框架。JSP、Servlet、JavaBean技术的出现给

不忘初心 1529

Struts2基础详解

Struts2版本 登录struts的官网,然后我们就能看到如下的内容。选择相应的安装包进行下载 Struts2应用开发步骤在web.xml文件中定义核心Filter来拦截用户请求 在web.xmlwen中配置如下片段 <!--定义struts2的核心Filter--> <filter> <filter-name>str

Emily的博客 462

Struts 2 基础知识总结

1.Struts 2实现MVC的方式 2.Struts 2 的使用 1.首先导入Struts 2 的核心jar包,配置web.xml文件 &lt;filter&gt; &lt;filter-name&gt;Struts2&lt;/fileter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter...

AXibaaa的博客 249

Struts2目录结构和基础JAR包介绍

Struts2的官方下载网址为http://struts.apache.org,在该网址中可以下载最新版本的 Struts2。 下载成功后,将压缩包进行解压,解压后的目录如图 1 所示。 图 1Struts2 的文件夹结构 下面针对图 1 中所示的目录进行简单介绍,具体如表 1 所示。 表 1 Struts2 的目录介绍 名称 作用 apps 用于存放官方提供的 Struts2 示例程序,这些程序可以作为学习者的参考资料。各示例均为 war 文件,可以通过 zip 方式进行...

段远山 618

【Struts2基础】——Struts1 & Struts2 区别

truts2是WebWork的升级,而不是Struts1.x的升级。虽然Struts2提供了与Struts1.x的兼容,但已经不是Struts1.x的升级。对于已有已有Struts1.x开发经验的开发者而言,Struts1.x的开发经验对于Struts2并没有太大的帮助;相反,对于已经有WebWork开发经验的开发者而言,WebWork的开发经验对Struts2的开发将有很好的借鉴意义。

梵高先生 649
上一篇: struts2基础
下一篇: struts2的通配符使用以及路径问题浅析
Retror
博客等级 码龄14年 16粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值