struts2基本配置详解2
接上篇struts2基本配置详解,还有一些配置没有讲到,下面将继续。
struts.xml
<package name="com.amos.web.action" namespace="/" extends="struts-default">
<action name="HelloWorldAction" method="execute">
<result name="success" type="dispatcher">
suc.jsp
</result>
</action>
</package>
1)、<action>中不指定method属性会是什么结果?
将exeucte方法改名为execute2(),并在struts.xml中删除method属性,然后重新发布项目。
HelloWorldAction.java
public class HelloWorldAction extends ActionSupport{
public String execute2() throws Exception {
System.out.println("欢迎使用struts2!"); return "success";
}
}
结果依然是正确的。为什么不写method的属性也会正常输出??
查看一下ActionSupport,然后发现execute方法会有默认的返回值为,如下,截取文档内容:
A default implementation that does nothing an returns "success".
Subclasses should override this method to provide their business logic.
由此可知,method默认为excute(),返回值为"success"
2)、<result> 中不指定name属性会是什么结果?
重新发布项目,依然是成功,由此可知,name默认为"success"
3)、<result>中不指定type属性会是什么结果?
重新发布项目,依然是成功,由此可知,type默认为"dispatcher",即默认为转发
如果要使用重定向,必须将type赋值为redirect,即type="redirect",如下所示
<result name="success" type="redirect">
suc.jsp
</result>
浏览器中输入http://localhost:8080/struts2/HelloWorldAction
发现已经重定向到suc.jsp了。
4)、两种方式访问Action
>>方法1,使用.action扩展名 例,http://localhost:8080/struts2/HelloWorldAction.action
>>方法2,不使用扩展名 例,http://localhost:8080/struts2/HelloWorldAction
两种方式访问效果一样。从源码中查看原因?
在struts2-core/2.3.16/struts2-core-2.3.16-sources.jar/org/apache/struts2/default.properties下第79行有如下设置:
struts.action.extension=action,,
action或者为空
如何更改默认扩展名?
>>方法1,在src/main/resource目录下,即与struts.xml同级目录下,新建struts.properties,在其中写入想要的扩展名即可
struts.action.extension=action,hi,amos,,
这里新添加了.hi和.amos扩展名。
效果如下:
>>方法2,将值配置到struts.xml中,如下所示:
<struts>
<constant name="struts.action.extension" value="hello,abc"></constant>
<package name="com.amos.web.action" namespace="/" extends="struts-default">
<action name="HelloWorldAction" >
<result name="success" type="dispatcher">
suc.jsp
</result>
</action>
</package>
</struts>
将struts.properties删除,重新部署并访问浏览器:
推荐第二种方式。
注:当struts.properties和struts.xml同时存在时,以struts.properties为主。
5)、如何配置多个struts.xml文件?
项目由多人开发,每个人可能都会有一个自己的struts.xml,如何避免冲突并使他人的struts.xml文件有效?
如下图所示:
新建目录config,新建dao_struts.xml和email_struts.xml两个配置文件,如何将它们加载到内存中?并解析为javabean对象
<!-- 加载其他配置文件 -->
<include file="config/dao_struts.xml"></include>
<include file="config/email_struts.xml"></include>
使用include指定文件路径即可,注意查看tomcat的启动提示信息,如果路径错误,那么将提示Unable to locate ...
6)、action使用单例还是非单例模式,需不需要解决线程安全问题?
重写HelloWorldAction的构造函数,如下:
public HelloWorldAction(){
System.out.println("hello actions:"+this.hashCode());
}
浏览器中多次访问,然后查看控制台输出,结果如下:
注:一次请求对应一次Action实例,因此不会产生线程安全问题,即在Action中不会产生synchronized同步代码块。
本文源代码:点此查看 struts2配置详解
struts2基本配置详解2的更多相关文章
- Struts2 XML配置详解
struts官网下载地址:http://struts.apache.org/ 1. 深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1. 包配置: S ...
- Struts2基本配置详解
Struts2配置文件加载顺序 struts2 配置文件由核心控制器加载 StrutsPrepareAndExecuteFilter (预处理,执行过滤) init_DefaultProperties ...
- Struts2(三)配置详解
一.概述 Struts2提供了多种可选的配置文件形式. 其中,struts-default.xml和default.properties是框架级别的配置文件,这两个文件在Struts的核心JAR包中, ...
- Struts2学习笔记二 配置详解
Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...
- java web.xml配置详解(转)
源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...
- JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目
一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- log4j.properties配置详解与实例
log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...
- Spring 入门 web.xml配置详解
Spring 入门 web.xml配置详解 https://www.cnblogs.com/cczz_11/p/4363314.html https://blog.csdn.net/hellolove ...
随机推荐
- [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总
本文出自 http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner 打开 这个专题一共有25题,刷完 ...
- MATLAB中的集合运算
matlab里关于集合运算和二进制数的运算的函数 intersect:集合交集ismember :是否集合中元素setdiff :集合差集setxor :集合异或(不在交集中的元素)union :两个 ...
- 企业防火墙之iptables
1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的情况,不能开iptables,影响性能, ...
- SuperMap打包部署要点
折腾了一段时间,终于要发布一个版本了,但SuperMap程序怎么发布呢,需要些什么必要条件呢?本来想问问超图的技术人员的,但都没人理我,估计都去开大会去了. 下面是自己测试出来的结果,主要是根据Sup ...
- 老周发布 UWP 应用的隐私策略(通用)
UWP 应用隐私策略 前注 本声明通用于老周所发布的所有 UWP 应用,下文简称“应用”.开发者全称:周家安,下文简称“老周”. 1.免责声明 您在使用应用过程中,请遵守<中华人民共和国宪法& ...
- 微信小程序 - 自适应swiper高度(非组件)
微信小程序swiper默认高度375rpx,一旦超过这高度,就滑动不到内容了,我们利用css3可以很简单做到这件事情 原理: 利用css3 横轴滚动属性overflow:scroll,设置死swipe ...
- server.xml引入子文件配置(tomcat虚拟主机)[转]
在配置tomcat虚拟主机时候,如何每一个虚拟主机写成单独文件,server.xml包含这些子文件? 如以下<OneinStack>中,添加JAVA环境虚拟主机后tomcat配置文件详情: ...
- 什么是Session分布式共享
在了解session分布式共享之前先来了解Session.Redis和Nginx的相关知识. 一.Session相关知识 1.Session 介绍 Session在网络应用中,称为“会话控制”. 每个 ...
- infobright系列三:数据导入乱码
1:目前在用的是社区版的infobright,不支持DML功能,只能用LOAD DATA方式导入数据. 如果元数据中有特殊控制字符,导入过程中经常会报错 2: 设置Reject File导入之前,设定 ...
- elasticsearch备忘
1.解决java.lang.RuntimeException: can not run elasticsearch as rootadduser *** //添加用户passwd *** //给用户赋 ...