annotation 实现 | 学习笔记

简介: 快速学习 annotation 实现,介绍了 annotation 实现系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门annotation 实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7328


annotation 实现

 

我们会发现使用注解会比较方便,注解的实现是通过插件来实现的,新建一个 new web project 叫做 19struts2_annotation,

在 struts  项目里面使用注解写起来比较舒服和简单,在使用了注解之后就不需要再写配置文件了。

首先把相应的包和配置先拷贝过来。

<filter>

<filter-name> struts2</filter name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

<filter name>struts2</filter name>

<url- pattern>/ *</ url-pattern>

</filter-mapping>

然后使用注解需要导入一个名为 convention 的插件,然后打开文档查看插件的用法。

在 plugin developers guide (插件开发的用法)里面找到 convention plugin,里面有一些介绍,怎么绑定怎么使用。

注意:

Action 需要继承 ActionSupport 类,Action 要放在以 .action 结尾的包中,这就是不同的框架,不同的框架叫法不一样。

创建一个 new java class 名为 helloaction。

image.png

首先继承 actionsupport。

image.png

继承他以后就可以配配置,会把所有的属性列出来,相应的语句对应

着相应的属性,可以配制多个,多个要使用大括号。如果要引用拦截

器的话还要再另外做拦截器的配置。

代码为:

import com . opensymphony . xwork2. ActionSupport;

@ParentPackage (value="struts-default")

@Namespace("/")

public class HelloAction extends ActionSupport {

@Action(value="/he1lo",

results={@Result (name= "success" , location="/index.jsp")})

public String execute(){

System. out . println("hello action");

return "success";

}

}

在这里 value="/he1lo" 和直接的 hello 效果是一样的,其中配置

result 是根据 word 文档里面的大纲来实现的。

com example. actions. HelloIWorld

package com. exanple. actions;

import com pensymphory. xwork2. ActionSupport ;

import org. apache. struts2. convention. annotation. Action;

import org. apache. struts2. convention. annotation.

Actions;

import org. apache. struts2. convention. annotation. Result ;

import org. apache. struts2. convention. annotation.

Results ;

public class HelloWorld ext ends ActionSupport {

@Action (value=*/different/url" ,

results= T@Result (name=" success", type=' httpheader",

parms {" status",“ 500”,"errorMessage", "Internal Error"})}

public String execute() {

return SUCCESS:

}

@Action(" /another/url")

public St ring doScmething() {

return SUCCESS;

}

改完之后查看有没有报错,如果没有就打开 annotation 的网页,

会发现已执行,显示 hello action。

@Result (name= "success" , location="/index.jsp") 代码里

可能会有好多个,这也是麻烦的一个点。

相关文章
|
JSON API 数据格式
5分钟构建API接口服务 | python小知识
Flask是python中轻量的web框架,Flask的两个核心模块除了模板渲染之外就是请求响应处理,其中请求响应处理是由 Werkzeug(WSGI 工具库)完成,而模板渲染是由Jinja(模板渲染库)完成。 Flask因为轻量灵活,用来构建API接口十分合适
10946 10
5分钟构建API接口服务 | python小知识
|
存储 缓存 数据可视化
基于Vue.js+Node问卷调查系统的设计与实现(二)
基于Vue.js+Node问卷调查系统的设计与实现
799 1
基于Vue.js+Node问卷调查系统的设计与实现(二)
|
IDE Oracle Java
Java零基础(2) - Java环境配置
【8月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
132 5
Java零基础(2) - Java环境配置
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
815 0
|
消息中间件 Java
ThreadLoop实践学习笔记
这篇文档分析了两种类型的线程循环(ThreadLoop):基础TaskLoop和面向Event的实现。基础TaskLoop处理回调函数包裹的任务,支持异步处理、定时和重复任务,适合简单工作线程。面向Event的ThreadLoop增加了对文件描述符的监听,如Socket和Timer,适用于事件驱动的场景,如muduo的Channel。进阶TaskLoop包括MsgQueue,用于异步消息处理,通过队列和事件触发;Timer则利用Timer Fd创建定时器任务。最后提到了ThreadLoopMng,一个线程池管理器,负责多个ThreadLoop的生命周期和任务分配。文档提供了相关代码示例链接。
104 1
|
JSON 算法 数据安全/隐私保护
聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
本文介绍了 JSON Web Token (JWT) 和 Python 中的 `jwcrypto` 库。JWT 是一种用于安全传输信息的紧凑型令牌,常用于身份验证。它由 Header、Payload 和 Signature 三部分组成,具有紧凑性、自包含和安全性等特点。`jwcrypto` 库提供了 JWT 的生成、验证、加密、解密及签名功能。通过该库,可以使用 RSA 等算法创建和验证 JWT,同时管理密钥对。安装 `jwcrypto` 可用 `pip install jwcrypto`,并示例展示了如何生成签名 JWT 和密钥对。
聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
|
Java 开发者
Java中的异常处理机制
Java中的异常处理机制
81 2
|
弹性计算 运维 Unix
生成唯一随机文件名并检查其存在性
【4月更文挑战第30天】
126 0
|
安全 网络安全 网络虚拟化
企业路由器配置PPTP PC到站点模式VPN指南(外网访问内网资源)
企业路由器配置PPTP PC到站点模式VPN指南(外网访问内网资源)
578 0
|
算法 机器人
代码随想录训练营day39| 62.不同路径 63. 不同路径 II
代码随想录训练营day39| 62.不同路径 63. 不同路径 II
165 0