Struts2注解 及 约定优于配置
Struts2注解
1 Struts2注解的作用
使用注解可以用来替换struts.xml配置文件!!!
2 导包
必须导入struts2-convention-plugin-2.3.15.jar包,它在struts2安装包下lib目录中。
3 通过配置文件学习对应的注解
@Action来代替<action>元素!
l String value():指定访问路径;
l Result[] results():指定局部结果。
@Result来代替<result>元素!
l String name():指定结果名称;
l String location():指定结果路径。
@Namespace代替<package>的namespace属性:
l String value():指定名称空间。
@ParentPackage代替<package>的extends属性:
l String value():指定父包名称
@Namespace("/order") @ParentPackage("struts-default") publicclass OrderAction extends ActionSupport { @Action(value="add", results={ @Result(name="success", location="/index.jsp"), @Result(name="input", location="/add.jsp")}) public String add() { System.out.println("add()"); returnSUCCESS; } @Action(value="mod", results={@Result(name="success", location="/index.jsp")}) public String mod() { System.out.println("mod()"); returnSUCCESS; } @Action(value="del", results={@Result(name="success", location="/index.jsp")}) public String del() { System.out.println("del()"); returnSUCCESS; } } |
4 注解相关常量
struts.convention.classes.reload,默认值为false。表示在修改注解后需要重启Tomcat!
Struts2约定(了解)
约定优于配置,就是说,一个项目当中,有一个好的约定(命名约定等)很重要,好我命名约定往往能省去你日后的许多工作量,也能为使得你的项目日后更易于维护。。。
举个很简单的例子:
struts2的action配置可以使用通配符,这个可以大大减少你配置文件的大小,但是前提是必须约定好命名规则,有了规则,才可以使用通配符,否则,一人一个命名方法,那就悲剧了……
1 什么是约定
使用约定可以连注解都不写,是真正的零配置,但是它的能力有限,所以这种方式不可取的。
l Struts2会对Action的命名,以及Action的包名都有限制;
l Struts2会对结果页面的存放路径,以及结果页面的名称也都有限制。
使用约定与使用注解一样,也要导包:struts2-convention-plugin-2.3.15.jar
1 约定对Action的限制
约定Action类名:
要求Action的命名必须以“Action”为后缀,例如:UserAction、BookAction等等。可以使用下面常量来修改后缀限制:
<constant name="struts.convention.action.suffix" value="Action"/>
约定Action包名:
要求Action必须放到action、actions、struts、struts2包中。例如:cn.itcast.action、cn.itcast.sturts、cn.itcast.action.user等等。可以使用下面常量来修改Actoin的包
<constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/>
3 通过Action的限制得到访问路径
上面已经知道约定对Action的限制,现在通过Action的包名和类名得到它的访问路径
例如:cn.itcast.action.UserAction,它的访问路径为/user.action
例如:cn.itcast.action.user.UserAction,它的访问路径为/user/user.action。因为在约定包action后面还有一层包user,那么这一层就是名称空间了。
例如:com.action.cn.itcast.user.UserAction,它的访问路径为/cn/itcast/user/user.action。
例如:cn.itcast.action.user.UserListAction, 它的访问路径为/user/user-list.action。当Action名称由多个单词构成,那么在访问路径中使用“-”来连接多个单词。
4 通过Action的限制得到结果页面路径
Struts2约定限制结果页面必须放到/WEB-INF/content/目录中,可以通过下面常量来修改这个限制。
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
当cn.itcast.action.UserAction返回结果为success时,Struts会依次查找如下结果页面:
l /WEB-INF/content/user-success.jsp;
l /WEB-INF/content/user-success.html;
l /WEB-INF/content/user.jsp
当cn.itcast.action.user.UserListAction返回的结果为error时,Struts会依次查找如下结果页面:
l /WEB-INF/content/user/user-list-error.jsp;
l /WEB-INF/content/user/user-list-error.html;
l /WEB-INF/content/user/user-list.jsp。
Struts2注解 及 约定优于配置的更多相关文章
- SpringMVC介绍之约定优于配置
SpringMVC介绍之约定优于配置 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后 ...
- spring boot中的约定优于配置
Spring Boot并不是一个全新的框架,而是将已有的Spring组件整合起来. Spring Boot可以说是遵循约定优于配置这个理念产生的.它的特点是简单.快速和便捷. 既然遵循约定优于配置,则 ...
- convention over configuration 约定优于配置 按约定编程 约定大于配置 PEP 20 -- The Zen of Python
为什么说 Java 程序员必须掌握 Spring Boot ?_知识库_博客园 https://kb.cnblogs.com/page/606682/ 为什么说 Java 程序员必须掌握 Spring ...
- spring boot约定优于配置的这种做法在如今越来越流行了
约定优于配置的这种做法在如今越来越流行了,它的特点是简单.快速.便捷.但是这是建立在程序员熟悉这些约定的前提上.而 Spring 拥有一个庞大的生态体系,刚开始转到 Spring Boot 完全舍弃 ...
- Maven之(八)约定优于配置
maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已.maven有自己的一套默认配置,使用者除非必要,并不需要去修改那些约定内容.这就是所谓的"约定优于配置 ...
- “约定优于配置”与Magento改造尝试四之block、helper和model载入
暂定本章为这个系列最后一章,还是继续沿用模块的别名(alias)概念 <modules> <Mage_Wishlist> <version>1.6.0.0</ ...
- 8.Maven之(八)约定优于配置
转自:“https://blog.csdn.net/qq_25460531/article/details/79423961” maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的 ...
- 【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?
对于Spring Boot约定优于配置这个问题,看看普通人和高手是如何回答的? 普通人的回答: 嗯, 在Spring Boot里面,通过约定优于配置这个思想,可以让我们少写很多的配置, 然后就只需要关 ...
- Spring 4 官方文档学习(十一)Web MVC 框架之约定优于配置
当返回一个ModelAndView时,可以使用其addObject(Object obj)方法,此时的约定是: An x.y.User instance added will have the nam ...
随机推荐
- 获取IP相关信息和文件上传
获取IP相关信息 要获取用户访问者的IP地址相关信息,可以利用依赖注入,获取IHttpConnectionFeature的实例,从该实例上可以获取IP地址的相关信息,实例如下: var connect ...
- 使用Having子句
Having 子句与where子句的功能类似,都是对行进行筛选.但是,where搜索条件是在分组操作之前对记录进行筛选,然后再由group BY 对筛选后符合条件的行进行分组:而Having搜索条件则 ...
- Python下ImportError: DLL load failed: 找不到指定的模块
环境:Anaconda3 Python3.7 scarpy1.5 版本似乎都能对的上.但是在cmd下报错 如下截图. 从以上错误来看,应该是lxml包有异常. pip uninstall lxml包. ...
- Ruby 踩坑 “Failed to build gem native extension”
ruby新手,总是会出现这样那样的问题,这里先记录下,希望能解决你得问题. 首先是安装ruby 环境,楼主愚钝,在公司和自己的电脑上来来回回整了好几天,每次安装 gem 包的时候总是报错,错误信息大致 ...
- springboot集成websocket点对点推送、广播推送
一.什么都不用说,导入个依赖先 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- javaweb带父标签的自定义标签
1.完整的示例代码:要实现的功能是父标签中有name属性,子标签将父标签的name属性值打印到jsp页面上. 1.1 父类和子类的标签处理器类 testParentTag.java package c ...
- Html5的新特性总结
新加语义化标签: HTML5其实是关于图像,位置,存储,速度的优化和改进 图像: 到目前为止,基本上想要直接在网页上进行绘图还是不能轻易完成的,即使是几何图形也不可以.在浏览器当中直接能跟图片的交互操 ...
- 第4章 css文字text与字体font-face
text-overflow 与 word-wrap text-overflow:用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 语法: 但是text-overflow只是用来说明文字溢出 ...
- window.onload和3的小游戏
window.onload出现的原因? 我们都知道页面的代码顺序是从上往下进行加载,很多时候我们要对页面中的某一个模块进行操作,这时候我们常常使用javascript代码来进行操作.为了能够保证操作 ...
- Can't read stdin: end of file found
问题是在我修改svn的账号和密码后出现的,因为百度出来的情况只有一种答案,所以记录一下我的情况,给其他人多一种排查思路.问题根源是,由于该版本库只有一个账号,更改了账号密码,没有同步修改post-co ...