当前位置: 首页 > 编程日记 > 正文

struts2之配置文件struts.xml详解

struts配置文件 struts.xml配置参数详解

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配置文件 但由于只加载一个 所以通过此方式-->
<include file="struts2.xml"/>
<!--struts与spring整合中将对象工厂交给spring管理 默认无--><constant name="struts.objectFactory" value="spring" /><!-- struts 拦截请求后缀为.action 修改此值可以改变访问路径--><constant name="struts.action.extension" value="action" /><!-- 开启开发模式 在页面会有一个小按钮 点击可以查看struts的存值栈中各个值 包括自己后台添加的 和内置的--><constant name="struts.devMode" value="true" /><!-- 修改struts配置否自动加载 --><constant name="struts.configuration.xml.reload" value="true" /> <!-- 文件上传最大值 --><constant name="struts.multipart.maxSize" value="104857600" /> <package name="dabai" namespace="/" extends="struts-default"></package></struts>

package:通常一个人配置的时候没什么用当多人配置 时 各个xml不在同一文件然后action还可能同名的情况下package就显得格外重要了。必须配置 且多个xml时不能重复

namespace:/ 代表根目录  /test 代表test目录下  通常配置 /   前台访问action的路径 可各种添加路径随自己先换  但访问时也需要修改不然就404 了  如 /a   访问时就访问  /a/*.action。  必许配置

extends:通常我们都会配置成struts-default  这包含了struts提供的很多功能 如默认的二十多个拦截器和上传文件功能等,也可以继承自己配置的 如果不闲麻烦的话  必须配置

如上图所示 按照struts的约束 进行依次说明

result-type  :通常在action中配置  见<action>

<inteceptors> 在此标签中按约束配置

  <interceptor>自定义拦截器 :属性name:自定义在栈中引用  class:完整的类名

    <interceptor-stack>拦截器栈 :属性: name:自定义 在 设置需要拦截器栈的地方应用

      <interceptor-ref>拦截器引用  :属性 name: 引用<interceptor>中配置的name   但切记最后加上对struts默认拦截器的引用 (把自定义的配置在前  至于配置在后貌似没有什么关系  可能有但我没发现)

         <param>参数:一个拦截器引用可配置多个用于设置不同值  如excludeMethod

      <interceptor-ref>

              <interceptor-stack>

      <interceptor>

<inteceptors>

<default-action-ref>  属性:name :引用拦截器栈 即struts默认的二十几个拦截器加上自定义的

<global-result>

  <result> 属性: name: 对应 action返回的字符串  此处时所有action返回 对应的name 优先匹配 class:类名:完整类名  若交由spring管理objectFactory除外  type; dispatcher(默认)。redirect,redirection(转到Action中   但是会丢失传递的参数   ,chain 转到Action携带参数  stream 不常用  用于文件下载

<global-exeption-mappings>由名字可见  可以配置多个exception-mapping

  <exception-mapping> 属性:result:响应结果  只可以是全局result中的某个  exception:如java.lang.exception  

<global-exeption-mappings>

<action> 属性: name:访问的类名映射  class  action对应的完整类名  由spring管理时可以写成bean的name  method:可选项 为便于配置 通常将action的name配置成 xxAction_*  method配置成{1}代表匹配xxAction_后面内容与方法第一个匹配上的方法

  <result> 属性:name :acton返回的字符串处理  

<action

 

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><constant name="struts.objectFactory" value="spring" /><package name="dabi1" namespace="/" extends="struts-default"><!-- 注册拦截器 拦截器栈 设置默认拦截器 --><interceptors><interceptor name="loginInterceptor"class="com.dabai.mall.filter.LoginInterceptor"></interceptor><interceptor-stack name="loginStack"><interceptor-ref name="loginInterceptor"><param name="excludeMethods">login,register,read</param></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><default-action-ref name="loginStack"></default-action-ref> <!-- 设置全局结果集 --><global-results><result name="toLogin" type="redirect">/login.jsp</result></global-results><global-exception-mappings><exception-mapping result="asd" exception="asd">/error.jsp</exception-mapping></global-exception-mappings><!-- 由于配置了struts.object value=spring --><action name="userAction_*" class="userAction" method="{1}"><result name="login">/login.jsp</result></action><action name="productAction_*" class="productAction" method="{1}"><result name="addProduct">/addProduct.jsp</result><result name="productList">/productList.jsp</result></action><action name="orderAction_*" class="orderAction" method="{1}"><result name="addOrder">/orderList.jsp</result></action><action name="categoryAction_*" class="categoryAction" method="{1}"></action><action name="orderItemAction_*" class="orderItemAction" method="{1}"></action></package>
</struts>

转载于:https://www.cnblogs.com/notably/p/10503169.html

相关文章:

ceph bluestore 源码分析:刷缓存(trim)逻辑

环境 ceph版本&#xff1a;12.2.1 部署模式&#xff1a;ec 21 osd&#xff1a; 3个 且资源池已经有数据 执行命令&#xff1a;ceph daemon osd.0 flush_store_cache 进行刷缓存。即将dump_mempools内存池管理的bluestore cache中的无用数据进行释放 主要参数: bluestore_cac…

php中怎么过滤器_PHP 过滤器(Filter)

过滤多个输入表单通常由多个输入字段组成。为了避免对 filter_var 或 filter_input 重复调用&#xff0c;我们可以使用 filter_var_array 或 the filter_input_array 函数。在本例中&#xff0c;我们使用 filter_input_array() 函数来过滤三个 GET 变量。接收到的 GET 变量是一…

c++ Qt向PHP接口POST文件流

Qt调用PHP写的接口&#xff0c;向其传递图片文件&#xff0c;并保存在服务器。 二进制文件无法直接传递&#xff0c;Qt采用Base64进行编码发送&#xff0c;PHP解码保存为文件。 注意&#xff1a;PHP收到数据之后会将POST过来的数据中的加号()替换为空格&#xff0c;造成接收到的…

在网络通讯中应用Protobuf

Protobuf的设计非常适用于在网络通讯中的数据载体&#xff0c;它序列化出来的数据量少再加上以K-V的方式来存储数据&#xff0c;对消息的版本兼容性非常强&#xff1b;还有一个比较大的优点就是有着很多的语言平台支持。下面讲解一下如何在TCP通讯应用中集成Protobuf. Protobuf…

JS中Math函数的常用方法

Math 是数学函数&#xff0c;但又属于对象数据类型 typeof Math > ‘object’ console.dir(Math) 查看Math的所有函数方法。 1&#xff0c;Math.abs() 获取绝对值 Math.abs(-12) 12 2&#xff0c;Math.ceil() and Math.floor() 向上取整和向下取整 console.log(Math.ceil(1…

C++ 泛型编程 -- 函数模版

文章目录定义声明调用方式函数模版的重载函数模版的特点工作中一个同事写了测试demo&#xff0c;想要自己尝试使用发现调用老出错&#xff0c;请教的时候发现是函数模版&#xff0c;有自己的调用方式&#xff0c;并且发现核心代码中大量的函数模版和类模版。特此做一个函数模版…

bellman_ford寻找平均权值最小的回路

给定一个有向图&#xff0c;如果存在平均值最小的回路&#xff0c;输出平均值。 使用二分法求解&#xff0c;对于一个猜测值mid&#xff0c;判断是否存在平均值小于mid的回路 如果存在平均值小于mid的包含k条边的回路&#xff0c;那么有w1w2w3...wk < k * mid,即(w1-mid)(w2…

守护进程中创建的对象php,在PHP中生成守护进程(Daemon Process)

前两天看到一篇文章《如何使用PHP编写daemon process》&#xff0c;其中对核心代码却没有细说&#xff0c;我又查了一些资料&#xff0c;还看了一本《理解Unix进程》&#xff0c;才搞明白生成守护进程的时候发生了什么。这段代码是这个样子的&#xff1a;function run(){//第一…

log4j个人使用整理

Log4j介绍&#xff1a; 略过。 配置&#xff1a; Eclipse项目中添加log4j.jar到lib下。 在bin目录下新建log4j.properties&#xff0c;编辑好log4j配置文件。 样例分析&#xff1a; 1 log4j.rootLoggerWARN, stdout, file2 log4j.appender.stdoutorg.apache.log4j.ConsoleAppen…

完全理解 Python 迭代对象、迭代器、生成器(转)

完全理解 Python 迭代对象、迭代器、生成器 本文源自RQ作者的一篇博文&#xff0c;原文是Iterables vs. Iterators vs. Generators nvie.com&#xff0c;俺写的这篇文章是按照自己的理解做的参考翻译&#xff0c;算不上是原文的中译版本&#xff0c;推荐阅读原文&#xff0c;谢…

Rocksdb 与 TitanDb 原理分析 及 性能对比测试

文章目录前言Rocksdb的compaction机制compaction作用compaction分类level style compaction&#xff08;rocksdb 默认进行的compaction策略&#xff09;level 的文件存储结构compaction过程compaction中的level target sizeuniversal style compactionfifo style compactionTit…

经典SQL练习题

题目地址&#xff1a;http://blog.csdn.net/qaz13177_58_/article/details/5575711 1、 查询Student表中的所有记录的Sname、Ssex和Class列。select sname,ssex,class from STUDENT2、 查询教师所有的单位即不重复的Depart列。select depart from TEACHER group by departselec…

php url模式在哪修改,php如何修改url

php如何修改url2020-07-03 12:15:40php修改url的方法&#xff1a;1、通过配置文件修改URL规则&#xff1b;2、设置URL伪静态&#xff0c;即限制伪静态的后缀&#xff1b;3、在配置文件中开启路由支持&#xff0c;并配置路由&#xff1b;4、将URL进行重写即可。PHP对URL设置一、…

国外十大最流行PHP框架排名

以下为十个目前最流行的基于MVC设计模式的PHP框架。1. YiiYii是一个基于组件的高性能的PHP的框架&#xff0c;用于开发大规模Web应用。Yii采用严格的OOP编写&#xff0c;并有着完善的库引用以及全面的教程。从MVC&#xff0c;DAO/ActiveRecord&#xff0c;widgets&#xff0c;c…

python_web框架

一、web框架 web框架&#xff1a; 自己完成socket的web框架&#xff1a;如&#xff0c;Tornado等由WSGI完成socket的web框架&#xff1a;如&#xff0c;Django、flash等两种实现过程&#xff1a; 第二种WSGI方式的&#xff0c;由于自带socket所以可直接写后端代码。 python标准…

g-gdb 调试多线程

代码调试工具gdb是一个能够让我们在工作中高效排查代码异常根源的利器。 在此将gdb针对多线程的调试方式做一个笔记&#xff0c;也方便后续回顾以及分享大家。 本文采用的是一个简单的多线程代码示例&#xff0c;同时调试是在mac上进行的 mac安装gdb brew install gdb即可 基…

php数据库html文本,关于php,mysql,html的数字分页和文本_php

请勿盗版&#xff0c;转载请加上出处http://blog.csdn.net/yanlintao1请勿盗版&#xff0c;转载请加上出处http://blog.csdn.net/yanlintao1首先进行样式展示希望对大家有所帮助&#xff0c;也希望大家给出意见和建议&#xff1a;第一种&#xff1a;数字分页第二种&#xff1a;…

WinDbg加载不同版本CLR

WinDbg调试.net2.0和.net4.0程序有所不同&#xff0c;因为.net4.0使用新版本的CLR。例如&#xff1a; mscoree.dll 变为 mscoree.dll 和 mscoreei.dll&#xff0c; mscorwks.dll 变为 clr.dll&#xff0c; mscorjit.dll 变为 clrjit.dll。 因此&#xff0c;在.net2.0加载mscorj…

交换机***工具——Yersinia

Yersinia是国外一款专门针对交换机执行第二层***的***工具。目前的版本是0.7.1。目前支持的操作系统及版本号如表1所示。表1 Yerdinia支持的操作系统操作系统名称版本号OpenBSD3.4 (pcap库版本至少0.7.2以上)Linux2.4.x和2.6.xSolaris5.8 64bits SPARCMac OSX10.4 Tiger (Intel…

Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解

文章目录前言Rocksdb写流程图WAL 原理分析概述文件格式查看WAL的工具创建WAL清理WALMANIFEST原理分析概述查看MANIFEST的工具创建 及 清除 MANIFEST文件内容CcolumnFamily 详解概述API介绍核心数据结构创建以及删除MEMTABLE 实现概述实现Rocksdb写入逻辑概述实现总结关于写的一…

react 入门

首先安装node.js环境 下载地址 https://nodejs.org/en/download/检查安装版本 进入命令行npm -v~~3. 安装react命令环境 npm install - g react-native-cli ~~~ 初始化项目 FirstAppreact-native init FirstApp 转载于:https://www.cnblogs.com/liu-ya/p/10511537.html

将字符串打乱输出

将字符串打乱输出 Dim i,mm,Str,StrPosition,NewStrStr  "1234567890"For i1 To Len(Str)    StrPosition  GetRandomMath(1,Len(Replace(Str,mm,"")))    Str  Replace(Str,mm,"")    mm  Mid(str,StrPosition,1)   …

php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法

本文实例讲述了帝国CMS图集字段的大图,小图,说明的调用方法。分享给大家供大家参考。具体方法如下&#xff1a;复制代码代码如下:$arr array();$arr $navinfor[morepic];$newarr explode(egetzy(rn),$arr);$count count(explode(egetzy(rn),$navinfor[morepic]));//图集的图…

static和global的区别

1.global在整个页面起作用。2.static只在function和class内起作用。global和$GLOBALS使用基本相同&#xff0c;但在实际开发中大不相同。global在函数产生一个指向函数外部变量的别名变量&#xff0c;而不是真正的函数外部变量&#xff0c;一但改变了别名变量的指向地址&#x…

vue 之 nextTick 与$nextTick

VUE中Vue.nextTick()和this.$nextTick()怎么使用&#xff1f; 官方文档是这样解释的&#xff1a; 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM。 虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考&#xff…

Linux创建线程时 内存分配的那些事

文章目录问题描述问题分析针对问题1 的猜测:针对问题2 的猜测:原理追踪总结问题描述 事情开始于一段内存问题&#xff0c;通过gperf工具抓取进程运行过程中的内存占用情况。 分析结果时发现一个有趣的事情&#xff0c;top看到的实际物理内存只有几兆&#xff0c;但是pprof统计…

mysql plsql循环语句吗,Oracle PLSQL 在游标中用while循环实例程序

Oracle PLSQL 在游标中用while循环实例程序Oracle PLSQL 在游标中用while循环实例程序Oracle PLSQL 在游标中用while循环实例程序declarecursor emp_cur is select * from emp;v_emp emp%rowType;beginopen emp_cur;while emp_cur%notfound --while肯定要跟loop一起用的 且是控…

【原创】Linux环境下的图形系统和AMD R600显卡编程(11)——R600指令集

1 低级着色语言tgsi OpenGL程序使用GLSL语言对可编程图形处理器进行编程&#xff0c;GLSL语言&#xff08;以下高级着色语言就是指GLSL&#xff09;是语法类似C的高级语言&#xff0c;在GLSL规范中&#xff0c;GLSL语言被先翻译成教低级的类汇编语言&#xff0c;然后被翻译成硬…

VBScript中InStr函数的用法

InStr([start, ]str1, str2[, compare]) [用途]&#xff1a;返回str2在str1中的位置。匹配成功时&#xff0c;返回值最小值为1&#xff0c;未匹配到时返回0。 [参数说明]&#xff1a; start:在str1中开始匹配的位置&#xff0c;1表示从头开始&#xff0c;不能为0或更小值。 可选…

洛谷P3122 [USACO15FEB]圈住牛Fencing the Herd(计算几何+CDQ分治)

题面 传送门 题解 题目转化一下就是所有点都在直线\(AxBy-C0\)的同一侧&#xff0c;也就可以看做所有点代入\(AxBy-C\)之后的值符号相同&#xff0c;我们只要维护每一个点代入直线之后的最大值和最小值&#xff0c;看看每条直线的最大最小值符号是否相同就好了 以最大值为例&am…