当注解配置能够简化繁杂的xml,你是否想过也要使用注解?

最近对原有项目的框架使用的Struts2进行升级。很早以前就想尝试注解的方式进行配置。但是由于项目稳定性和改配置方式可能带来的问题一直没有进行。但是这不妨碍我们程序员求知的心。哈哈~~~~。

言归正传,开始Struts2最常用的几个注解的学习吧。

@Action
  • 使用@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(二)相关推荐

  1. Struts2中配置默认Action

    Struts2中配置默认Action 一.jsp默认设置 1.当访问的Action不存在时,页面会显示错误信息,可以通过配置默认Action处理用户异常的操作: 2.配置方法: 在struts.xml ...

  2. Servlet3.0注解配置访问路径和urlParttern配置

    一.Servlet用注解配置访问路径 二.IDEA的tomcat相关配置 其中,第一点的配置文件,直接在IDEA的可视化操作界面修改就可以改掉配置文件中内容: 三.urlParttern配置 其中,* ...

  3. struts2配置中Action的name 和package的name和namespace作用

    2019独角兽企业重金招聘Python工程师标准>>> struts2配置中Action的name 和package的name和namespace是什么作用 在struts2 str ...

  4. Struts2的配置 struts.xml Action详解

    在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...

  5. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理:  第一步:jar包的引入:  我们可以到struts2的官网上下载:  http://struts.apache.org/download.cgi#struts ...

  6. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  7. Struts2之配置文件中Action的详细配置

    在Struts2之配置一文中,我们知道一个struts配置文件可以分为三部分:常量配置    包含其他配置文件的配置    Action配置  . 这其中 常量配置  和 包含其他配置文件的配置  二 ...

  8. Hibernate 教程(二)[Hibernate对象的,xml配置,注解配置]

    准备 数据库建表(Hibernate可以自动生成表,和对应字段,但是不能给字段添加注释,所以选择手动建表) -- 创建表 CREATE TABLE `Event`( `id` INT AUTO_INC ...

  9. 【Java】Struts2配置默认Action和配置Action的默认处理类

    配置默认Action <package> <default-action-ref name="index"/> <action name=" ...

最新文章

  1. mac git命令按tab键自动补全
  2. WINDOWS系统调用 和 SYSENTER系统服务调用过程
  3. (字符串)统计字母和数字个数,打印柱状图
  4. 海尔智慧家庭食联网:为每1个家庭配备专属健康顾问
  5. android open source
  6. 解决Eclipse查看源代码出现Source not found的问题
  7. git clone github_Git下载速度慢的解决方案汇总
  8. python如何操作oracle数据库_Python 操作 Oracle 数据库
  9. react 日历组件_anujs1.5.1支持React.Suspense与lazy
  10. laravel 模块化管理 插件 caffeinated
  11. 独断专行站在互联网创业风口下的 00 后 CEO,没有钱该如何继续?
  12. 清除电脑多余垃圾--清除垃圾.bat文件 附保姆级操作步骤
  13. 国产抗攻击服务器GeekServer V1.1发布。
  14. 信号在PCB走线中的延迟
  15. dockr pull 无法拉取镜像提示找不到注册表
  16. php 读doc_PHP读取DOC 文件
  17. C#NPOI操作EXCEL-设置密码及设置只读
  18. 下载jdk(所有版本)
  19. 【DEBUG】2021-06-27 不定期的自我检讨002
  20. ASEMI整流模块MDA300-16封装,MDA300-16大小

热门文章

  1. BIM设计要做哪些准备工作才能真正完成建筑全生命周期的使命
  2. javascript_实现
  3. 【异常报错】com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.c
  4. java位运算符和位运算表达式
  5. tidb和tbase的聚合函数算法
  6. Cglib之Enhancer创建动态代理
  7. Flutter 相关知识点
  8. 82583V在server2008下网卡驱动安装步骤
  9. 运营商大数据----三大运营商构建大数据下的企业获客应用场景
  10. 【每日一题】最大正方形面积——进阶,矩形面积