小工具      在线工具  汉语词典  css  js  c++  java

SerfJ REST Java框架

Java 额外说明

收录于:97天前

SerfJ提供了一个MVC架构,但它不包含任何模型,其主要特点是使用控制器collerlor,通过这些collerlor管理REST请求。可帮助你开发优雅的MVC架构的应用,使用惯例重于配置的思路,无需配置文件和注解。
collerlor代表了应用程序中的可用资源,通过REST风格的请求将消息发送给这些资源 。当一个请求发送给serfj的主servlet(net.sf.serfj.RestServlet),一个能够处理这一请求的资源(控制器)被调用,并响应客户端请求。这个响应可以是一个网页,一个序列化的对象,或HTTP状态代码204(这意味着没有任何内容)。

网络.xml

1、使用SerfJ,在web.xml中进行如下配置

1

2

3

4

5

<servlet>

    <servlet-name>RestServlet</servlet-name>

    <servlet-class>net.sf.serfj.RestServlet</servlet-class>

    <load-on-startup>5</load-on-startup>

</servlet>

2、新建资源必须在web.xml文件中配置对应的servlet,类似:

1

2

3

4

<servlet-mapping>

  <servlet-name>RestServlet</servlet-name>

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

</servlet-mapping>

农奴属性

1

2

3

4

5

6

7

8

# Main package where looking for classes (controllers, serializers)

main.package=org.net.sf.serfj.demo

views.directory=views

packages.style=functional

alias.controllers.package=controllers

alias.serializers.package=serializers

suffix.controllers=Controller

suffix.serializer=Serializer

该框架遵循约定优先的原则,因此几乎不需要配置即可使用它。当然,这需要配置。

SerfJ只有一个配置文件,即类路径中的/config/serfj.properties。为了让它开始工作,只需配置一个 main.package 属性,该属性必须指向 SerfJ 将查找控制器和序列化器的位置。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17 号

18

19

20

21

22

main.package

主要包名(搜索控制器,序列化器的主要依据)。

默认值为net.sf.serfj。

views.directory:

搜索网页的目录。

默认值为web根目录下的views。

package.style:

框架内寻找资源的方式。

有四种可能的值:FUNCTIONAL/functional, FUNCTIONAL_BY_MODEL/functional_by_model, MODEL/model or OFF。

如果该值是OFF,就相当于没有定义此属性。

alias.controllers.package

控制器包的别名。

当 package.style 为 FUNCTIONAL, FUNCTIONAL_BY_MODEL 时,追加这个名称到main.package属性值后作为控制器包名。

默认值是controllers。

alias.serializers.package:

序列化器包的别名。

当 package.style 为 FUNCTIONAL, FUNCTIONAL_BY_MODEL 时,追加这个名称到main.package属性值后作为序列化器包名。

默认值是serializers。

suffix.controllers:

控制器类名的附加后缀。默认值是off,不使用后缀。

suffix.serializers:

序列化器类名的附加后缀。默认值是Serializer。

控制器

控制器是SerfJ的主要特色,REST请求被分派给他们,他们应答这些请求。应答可能是一个页面,一个序列化的对象,或什么也没有(比如HTTP 状态代码)。
有两种方法写一个控制器(下一个SerfJ版本会有更多方法),一个是扩展net.sf.serfj.RestController类,另一个是写了一个JavaBean。
其中,扩展RestController类是写一个控制器的最好方式,虽然处理的请求中不一定包含有参数,但方法可以返回对象并抛出异常。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17 号

18

19

20

21

public class AccountController extends RestController {

    @GET

    public void index() {

        // TODO Auto-generated method stub

    }

    @POST

    public void create() {

        // TODO Auto-generated method stub

    }

    @DELETE

    public void delete() {

        // TODO Auto-generated method stub

    }

    @PUT

    public void put() {

        // TODO Auto-generated method stub

    }

}

如果您正在寻找控制器,则控制器类的限定名称应该是:

1

main.package "." + alias.controllers.package "." + capitalized(singularized(resource name)) + suffix.controllers

比如下面的配置:

1

2

3

4

main.package: net.sf.serfj.demo

alias.controllers.package: controllers

suffix.controllers: Controller

Resource: accounts

搜索帐户资源的控制器类。此类的完全限定名称为:net.sf.serfj.demo.controllers.AccountController

SerfJ 使用注释来告诉控制器哪些方法可以接受哪些类型的 HTTP 请求。

1

2

3

4

@GET: 方法处理 GET 请求.

@POST: 方法处理 POST 请求.

@PUT: 方法处理 PUT 请求.

@DELETE: 方法处理 DELETE 请求.

另外,还有一个注解@DoNotRenderPage,它告诉控制器执行该方法后,页面将不会被渲染,而是会响应HTTP 204代码。如果该方法返回一个对象而不是页面,则不需要使用@DoNotRenderPage进行注释。只有当方法不返回任何值(void方法),并且开发者不想渲染结果页面时,才必须注意。

串行器
一个REST请求到达时,如果在查询字符串之前的部分包含有扩展名,框架会自动搜索能对请求资源进行够序列化的专用序列化类
SerfJ提供XML,JSON和Base64(对应.XML,.JSON和.base64三种扩展名)的序列化,但开发人员可以针对不同的后缀,使用自定义的序列化类。


开发新的序列化类很容易,你只需要实现 net.sf.serfj.serializers.Serializer 接口,不需要更多的解释。

比如下面的配置:

1

2

3

main.package: net.sf.serfj.demo

alias.serializers.package: serializers

suffix.serializers: Serializer

搜索帐户资源的 JSON 序列化程序类。此类的完全限定名称为:net.sf.serfj.demo.serializers.JsonAccountSerializer

看法
控制器中的方法执行后总是显示某一个页面,除非该方法返回了对象,或者使用 @DoNotRenderPage 对方法进行了标注。
显示页面保存路径是views.directory/资源名称/方法名称.jsp(.html或.htm)。其中 views.directory 在 serfj.properties 配置文件中定义。

转自:https://www.cnblogs.com/kofxxf/p/3979080.html

. . .

相关推荐

额外说明

Linux查询日志文件中某个关键字前后的行数

cat filename |grep 关键字 -C10 上面显示关键字的前后10行 -C显示前后多少行 cat filename |grep 关键字 -A10 上面显示关键字的后10行 -A显示后多少

额外说明

G.2 NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性

额外说明

企业 Tomcat 运维 部署tomcat反向代理集群

一、Tomcat 简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器, Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Ngi

额外说明

foreach的两种用法

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

pytorch 学习之 训练流程

train.py 的代码基本结构。 读取与加载数据 从硬盘读取数据 train_data = XXXDataset(data_dir=train_dir, transform=train_transform) valid_data = XXXDatase

额外说明

js 两数相减得到精确的减法结果 减法函数

下面原因是这样的造成的,在计算运费的时候两数相减会有误差,这在js中是常见的,为解决以下问题可以写的函数方便解决问题 1.5 - 1.2 = 0.30000000000000004 解决之后的 util.js文件 /** ** 减法函数,用来得到精确的减

额外说明

C++ 中为什么要有“ 指针” 和 “ 引用”

推荐阅读 1.《C++语言的设计与演化》 2. <<more effective C++>> 1. 引言 1.1 对象: C++primer中, 对象的定义: 对象是指一块能存储数据并具有某种类型的内存空间; 一个对象a,它有值和地址&a, 运行程序时,

额外说明

javax.websocket-api 简介、中文文档、中英对照文档 下载

javax.websocket-api 文档 下载链接(含jar包、源码、pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 javax.websocket-api-1.1.jar javax.websocket-api-1.1-API文

额外说明

Windows系统由于找不到msv1_0.dll文件出现程序无法运行

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msv1_0.dll文件(挑

ads via 小工具