Struts2注解配置之@Action(二)
当注解配置能够简化繁杂的xml,你是否想过也要使用注解?
最近对原有项目的框架使用的Struts2进行升级。很早以前就想尝试注解的方式进行配置。但是由于项目稳定性和改配置方式可能带来的问题一直没有进行。但是这不妨碍我们程序员求知的心。哈哈~~~~。
言归正传,开始Struts2最常用的几个注解的学习吧。
- 使用@Action注解改变Convention plug约定的action与url之间的映射关系。
废话少说代码说事儿。
package com.example.actions;import org.apache.struts2.convention.annotation.Action;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld2 extends ActionSupport {@Action("/different/url")public String execute() {return SUCCESS;}
}
本例中在String execute()方法上使用了@Action("/different/url"),它改变了Action 与Action URL之间的映射关系,而这种改变并不是“OverWrite”而是在原来约定的基础上增加了另外一种调用方式。
原本在没有@Action("/different/url")注解的情况下,我们可以在浏览器中输入:http://应用服务器ip:端口/应用/hello-world2,即可访问到com.example.actions.HelloWorld2,并最终显示http://应用服务器ip:端口/应用/hello-world2.jsp页面。(当然这里也可能是html等页面)。
在@Action("/different/url")注解的情况下,除了上述的访问方式外,我们还可以在浏览器中输入:http://应用服务器ip:端口/应用
/different/url,也可访问到com.example.actions.HelloWorld2,但最终显示http://应用服务器ip:端口/应用/different/url.jsp页面。
- 使用@Action注解解决一个ACTION中的一个方法,响应多个不同的URL.
实际项目开发过程中有很大的几率碰到Action的处理相同,但是最终跳转的页面不同的情况。将@Actions和@Action组合起来用即可解决这样的需求。
还是先上代码
package com.example.actions;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld3 extends ActionSupport {private String message;public String getMessage() {return message;}@Actions( { @Action("/one/url"), @Action("/another/url") })public String execute() {message = "经过HelloWorld3的处理";return SUCCESS;}
}
本例中在String execute()方法上使用了@Actions和@Action注解。其中@Actions注解包含@Action("/one/url")和@Action("/another/url")注解。这样的注解除了可以通过http://应用服务器ip:端口/应用/hello-world3访问com.example.actions.HelloWorld3,并最终显示http://应用服务器ip:端口/应用/hello-world3.jsp之外,还有两种访问方式:
即:
通过http://应用服务器ip:端口/应用/one/url,访问com.example.actions.HelloWorld3,并最终显示http://应用服务器ip:端口/应用/one/url.jsp。
通过http://应用服务器ip:端口/应用/another/url,访问com.example.actions.HelloWorld3,并最终显示http://应用服务器ip:端口/应用/another/url.jsp。
这样就达到了一个ACTION中的一个方法,响应多个不同的URL的效果。
- 使用@Action注解解决一个ACTION中的多个方法,其中每个方法响应不同的URL.
这是实际项目开发过程中最常用的。
再上一个代码示例:
package com.example.actions;import org.apache.struts2.convention.annotation.Action;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld4 extends ActionSupport {private String message;public String getMessage() {return message;}@Action("/H4/url")public String execute() {message = "HelloWorld4 execute()!";return SUCCESS;}@Action("url")public String doSomething() {message = "HelloWorld4 doSomething()!";return SUCCESS;}
}
本例中在String execute()方法上使用了@Action("H4/url")注解。在StringdoSomething()方法中使用了@Action("url")。前者可以通过http://应用服务器ip:端口/应用/H4/url访问com.example.actions.HelloWorld4中的execute()方法,并最终显示http://应用服务器ip:端口/应用/H4/url.jsp。后者是通过http://应用服务器ip:端口/应用/url来访问com.example.actions.HelloWorld4中的doSomething()方法,并最终显示http://应用服务器ip:端口/应用/url.jsp。
这个例子里面需要注意的是@Action("/H4/url")和@Action("url")的不同,在“url”前并没有“/”这意味着"url"是基于HelloWorld4的命名空间的。假设HelloWorld4所在的包是com.example.actions.aaa,那么,只有通过http://应用服务器ip:端口/应用/aaa/url才可以访问到com.example.actions.aaa.HelloWorld4,并最终显示http://应用服务器ip:端口/应用/aaa/url.jsp。而“/H4/url”是基于“/”命名空间的。
日后再继续学习@Results和@Result。
Struts2注解配置之@Action(二)相关推荐
- Struts2中配置默认Action
Struts2中配置默认Action 一.jsp默认设置 1.当访问的Action不存在时,页面会显示错误信息,可以通过配置默认Action处理用户异常的操作: 2.配置方法: 在struts.xml ...
- Servlet3.0注解配置访问路径和urlParttern配置
一.Servlet用注解配置访问路径 二.IDEA的tomcat相关配置 其中,第一点的配置文件,直接在IDEA的可视化操作界面修改就可以改掉配置文件中内容: 三.urlParttern配置 其中,* ...
- struts2配置中Action的name 和package的name和namespace作用
2019独角兽企业重金招聘Python工程师标准>>> struts2配置中Action的name 和package的name和namespace是什么作用 在struts2 str ...
- Struts2的配置 struts.xml Action详解
在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...
- Struts2学习---基本配置,action,动态方法调用,action接收参数
首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts ...
- 深入学习Spring框架(二)- 注解配置
1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...
- Struts2之配置文件中Action的详细配置
在Struts2之配置一文中,我们知道一个struts配置文件可以分为三部分:常量配置 包含其他配置文件的配置 Action配置 . 这其中 常量配置 和 包含其他配置文件的配置 二 ...
- Hibernate 教程(二)[Hibernate对象的,xml配置,注解配置]
准备 数据库建表(Hibernate可以自动生成表,和对应字段,但是不能给字段添加注释,所以选择手动建表) -- 创建表 CREATE TABLE `Event`( `id` INT AUTO_INC ...
- 【Java】Struts2配置默认Action和配置Action的默认处理类
配置默认Action <package> <default-action-ref name="index"/> <action name=" ...
最新文章
- mac git命令按tab键自动补全
- WINDOWS系统调用 和 SYSENTER系统服务调用过程
- (字符串)统计字母和数字个数,打印柱状图
- 海尔智慧家庭食联网:为每1个家庭配备专属健康顾问
- android open source
- 解决Eclipse查看源代码出现Source not found的问题
- git clone github_Git下载速度慢的解决方案汇总
- python如何操作oracle数据库_Python 操作 Oracle 数据库
- react 日历组件_anujs1.5.1支持React.Suspense与lazy
- laravel 模块化管理 插件 caffeinated
- 独断专行站在互联网创业风口下的 00 后 CEO,没有钱该如何继续?
- 清除电脑多余垃圾--清除垃圾.bat文件 附保姆级操作步骤
- 国产抗攻击服务器GeekServer V1.1发布。
- 信号在PCB走线中的延迟
- dockr pull 无法拉取镜像提示找不到注册表
- php 读doc_PHP读取DOC 文件
- C#NPOI操作EXCEL-设置密码及设置只读
- 下载jdk(所有版本)
- 【DEBUG】2021-06-27 不定期的自我检讨002
- ASEMI整流模块MDA300-16封装,MDA300-16大小
热门文章
- BIM设计要做哪些准备工作才能真正完成建筑全生命周期的使命
- javascript_实现
- 【异常报错】com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.c
- java位运算符和位运算表达式
- tidb和tbase的聚合函数算法
- Cglib之Enhancer创建动态代理
- Flutter 相关知识点
- 82583V在server2008下网卡驱动安装步骤
- 运营商大数据----三大运营商构建大数据下的企业获客应用场景
- 【每日一题】最大正方形面积——进阶,矩形面积