Struts.xml 配置文件说明

<?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>
    <!-- action请求默认后缀 -->
    <constant name="struts.action.extension" value="" />
    <!-- action返回结果编码.解决乱码问题 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 修改struts.xml后,无需重启Tomcat  -->
    <constant name="struts.configuration.xml.reload" value="true"/>
     <!-- package属性介绍
        1.name      ->包的名称,可自定义,可以配置多个包
        2.namespace ->命名空间,不同模块可以指定不同的空间,必须以"/"开头
        3.extends   -> 继承,值是直接或间接的继承struts-default,它也是一个xml文件
      -->
    <package name="xiif-default" extends="json-default">
        <result-types>
            <result-type name="stringResult" class="com.tcl.basic.obj.StringResult" />
        </result-types>
        <interceptors>
            <interceptor name="trimInterceptor"
                class="com.tcl.basic.interceptor.TrimInterceptor" />
            <interceptor-stack name="deskapiStack">
                <interceptor-ref name="trimInterceptor" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <!-- 配置默认拦截器 -->
        <default-interceptor-ref name="deskapiStack" />
        <!-- 配置默认的action(package子标签,置于action标签之上).当请求的action不存在时,执行默认的default -->
        <default-action-ref name="default"/>
        <action name="default">
            <result>/index.html</result>
        </action>
    </package>
    
</struts>

======================================================================

1.解决乱码问题

          <constant name="struts.i18n.encoding" value="utf-8"/> //设置编码格式为utf-8

2. 自定义扩展名

        <constant name="struts.action.extension" value="action,,tcl"/> //struts默认扩展名是action,可以自定义

3.设置开发模式

       <constant name="struts.devMode" value="true"/> //打开开发者模式,可在出错时提供友好的错误信息提示

以上参数都是在struts.xml中配置的,我们也可以在src目录下新建一个struts.properties文件,上面三个配置都可以写成下面这样,能实现同样的作用:

      struts.i18n.encoding=utf-8

      struts.action.extension=action,,tcl

      struts.devMode=true

4.设置配置文件修改后自动加载(开发时使用)

       <constant name="struts.configuration.xml.reload" value="true"/> //修改struts.xml后,无需重启Tomcat

5.引入其他配置文件(多在团队协作开发使用)

      <include file="com/tcl/struts/user.xml"/>

6. package包(着重介绍)

<?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属性介绍
        1.name      ->包的名称,可自定义,可以配置多个包
        2.namespace ->命名空间,不同模块可以指定不同的空间,必须以"/"开头
        3.extends   -> 继承,值是直接或间接的继承struts-default,它也是一个xml文件
      -->
    <package name="login" namespace="/user" extends="struts-default">
    <!-- action 属性介绍
        1.name   ->url请求名,不需要加后缀(.action)
        2.class  ->处理url对应的java类,class要求包名+类名
        3.method ->配置处理请求的方法,默认为execute;方法必须是public String修饰的
     -->
        <action name="login" class="com.tcl.action.LoginAction" method="execute">
        <!-- result属性介绍
            1.name:->匹配请求方法的返回值,默认是success
            2.type:->结果处理类型,默认是dispatcher转发
                 chain:  链接到下一个action,执行完actionA后执行actionB<result type="chain">exit</result>
                 redirect: 重定向到jsp页面
                 redirectAction:  重定向到下一个action
         -->
        
            <result name="success">/succ.jsp</result>
            <result name="error">/login.jsp</result>
        </action>
    </package>
</struts>

7.配置默认执行的class(package子标签,置于action标签之上)

      <!-- 当action标签中没有写class属性时,默认执行这个class-->

      <default-class-ref class="com.tcl.action.LoginAction"/>

8.配置默认的action(package子标签,置于action标签之上)

     <!--当请求的action不存在时,执行默认的default-->
    <default-action-ref name="default"/>
    <action name="default">
               <result>/index.jsp</result>
    </action>

9.配置全局结果集(package子标签,置于action标签之上)

       <global-results>

             <!-- 所有的aciton中,只要action里面的方法返回了comehere字符串时,就都跳到这个a.jsp页面来 -->

             <result name="comehere">/a.jsp</result>

     </global-results>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux常用命令】

一、防火墙相关 1、查看防火墙状态 systemctl status flrewalld2、如果防火墙是开启状态的&#xff0c;需要关闭 systemctl stop firewalld3、永久行关闭操作&#xff08;禁止开机自启动&#xff09; 因为防火默认是开启状态的&#xff0c;如果只是手动关闭&#xff0c;先次…

elasticsearch集群部署-实操

elasticsearch&#xff08;集群&#xff09; 案例版本&#xff1a;elasticsearch 8.6.2 操作系统&#xff1a;CentOS 7 注意&#xff1a;全程使用普通用户操作。 0、节点信息 节点描述192.168.127.10master192.168.127.11slave…slave02 1、环境配置 1.1 修改文件 /etc/se…

中国大学MOOC地下水污染与防治答案

本文转载自 众课帮 众工号 1、下列哪项不属于有机污染物综合指标&#xff08; &#xff09; A、高锰酸盐指数 B、化学需氧量&#xff08;COD&#xff09; C、浊度 D、总有机碳&#xff08;TOC&#xff09; 答案&#xff1a;浊度 2、饮用水水质指标常说的“两虫”是指( ) A、贾…

【Java】抽奖系统———保姆学习教程

目录 一、抽奖系统介绍 二、代码实现 1、随机生成中奖号码 1.1、中奖号码createNumber方法 1.2、控制判断contains方法 2、用户输入中奖号码 3、判断中奖情况 3.1、判断奖项isWin方法 三、完整代码 一、抽奖系统介绍 抽奖的号码由6个红色球号码和1个蓝色球号码组成。红色…

第24节——react hooks组件传值 - 父子组件之间的传值

一、概念 一句话概括&#xff0c;react hook 父子组件之间通过props进行传值 二、父传子 父组件&#xff1a;在子组件标签上定义属性 子组件&#xff1a;函数组件接收一个props是一个对象&#xff0c;父组件传的属性名就是props对象的key&#xff0c;属性的值就是对应的val…

python实现Flask GET Demo

python代码 from flask import Flask, request, jsonifyapp Flask(__name__)#用/data路径路由 app.route(/data) def get_data():## 以下一行是从URL中获取参数的get方法data request.args.get(data)return jsonify(data data,info "success !",code "200…

十五、垃圾回收相关算法

目录 一、标记阶段&#xff1a;引用计算法对象存活判断引用计算法 二、标记阶段&#xff1a;可达性分析算法三、对象的finalization机制四、MAT和Jprofiler的GC Toots的溯源五、垃圾清除算法之标记-清除算法六、垃圾清除算法之复制算法七、垃圾清除算法之标记-压缩算法八、小结…

智慧园区:AI边缘计算技术与视频监控汇聚平台打造智慧园区解决方案

一、行业趋势与背景 智慧园区是现代城市发展的重要组成部分&#xff0c;通过智能化技术提高园区的运营效率、降低成本、增强环境可持续性等具有重要作用。在智慧园区中&#xff0c;人工智能和视频汇聚技术是重要的前置技术。人工智能技术可以实现对数据的智能化处理和分析&…

时序数据库 TimescaleDB 安装与使用

TimescaleDB 是一个时间序列数据库&#xff0c;建立在 PostgreSQL 之上。然而&#xff0c;不仅如此&#xff0c;它还是时间序列的关系数据库。使用 TimescaleDB 的开发人员将受益于专门构建的时间序列数据库以及经典的关系数据库 (PostgreSQL)&#xff0c;所有这些都具有完整的…

2023/9/13 -- C++/QT

作业&#xff1a; 1> 将之前定义的栈类和队列类都实现成模板类 栈&#xff1a; #include <iostream> #define MAX 40 using namespace std;template <typename T> class Stack{ private:T *data;int top; public:Stack();~Stack();Stack(const Stack &ot…

TouchGFX之缓存位图

位图缓存是专用RAM缓冲区&#xff0c;应用可将位图保存&#xff08;或缓存&#xff09;在其中。 如果缓存了位图&#xff0c;在绘制位图时&#xff0c;TouchGFX将自动使用RAM缓存作为像素来源。位图缓存在许多情况下十分有用。 从RAM读取数据通常比从闪存读取要快&#xff08;特…

Linux下Minio分布式存储安装配置(图文详细)

文章目录 Linux下Minio分布式存储安装配置(图文详细)1 资源准备1.1 创建存储目录1.2 获取Minio Server资源1.3 获取Minio Client资源 2 Minio Server安装配置2.1 切换目录2.2 后台启动2.3 查看进程2.4 控制台测试 3 Minio Client安装配置3.1 切换目录3.2 移动mc脚本3.2 运行mc命…

结构型设计模式

结构型设计模式 结构型设计模式主要总结了一些类或对象组合在一起的经典结构&#xff0c;这些经典的结构可以解决特定应用场景的问题。结构模式包括&#xff1a;代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、亨元模式。 1. 代理模式 实现方式&#xff…

Vue3后台管理系统Element-plus_侧边栏制作_无限递归

在home.view中添加代码 <template><div><div class"common-layout"><el-container><el-header class"common-header flex-float"><div class"flex"><img class"logo" src"../assets/logo…

【Redis】Redis实现分布式锁

【Redis】Redis常见面试题&#xff08;1&#xff09; 文章目录 【Redis】Redis常见面试题&#xff08;1&#xff09;1. 为什么要用分布式锁2. Redis如何实现分布式锁3. Redis接受多个请求模拟演示4. 使用Redis实现分布式锁会存在什么问题4.1 一个锁被长时间占用4.2 锁误删 【Re…

vue2+element-ui批量导入方法并判断上传的文件是否为xls或xlsx

业务需求: 代码结构: <el-dialogtitle"批量导入":close-on-click-modal"true"close"close()":visible"true"width"35%":center"true"><div class"el-dialog-div"><!-- 头部区域布局 -…

【基本数据结构 四】线性数据结构:队列

学习了栈后,再来看看第四种线性表结构,也就是队列,队列和栈一样也是一种受限的线性表结构,和栈后进先出的操作方式不同的是,队列是FIFO的结构,也就是先进先出的操作方式。 队列的定义 队列这个概念非常好理解。可以把它想象成排队买票,先来的先买,后来的人只能站末尾…

软考知识汇总--结构化开发方法

文章目录 1 结构化开发2 耦合3 内聚4 设计原则5 系统文档6 数据流图6.1 数据流图的基本图形元素 7 数据字典 1 结构化开发 结构化方法总的指导思想是自顶向下、逐层分解&#xff0c;它的基本原则是功能的分解与抽象。它是软件工程中最早出现的开发方法&#xff0c;特别适合于数…

「C++程序设计 (面向对象进阶)」学习笔记・二

0、引言 本专栏的系列文章是在学习 北京邮电大学 崔毅东 老师的《C程序设计 (面向对象进阶)》课程过程中整理的。欢迎前往专栏了解更多相关内容~ &#x1f600; 有关于现代 C 的基本介绍&#xff0c;请前往《现代C基本介绍》&#xff01; &#x1f514; 先决条件 本专栏的系列…

定时器+BOM

9.定时器BOM 1.定时器 **概念:**重复执行一个函数 1.1setInterval() setInterval(“代码/函数”,时间,参数),返回定时器的序列号,默认从1开始 clearInterval(序列号)清除定时 <button class"start">开启定时器</button><button class"close…