hi-nginx-java既可以通过实现hi.servlet抽象来像Flask那样快速配置路由,例如:

1  hi.route r = hi.route.get_instance();
2 r.get("^/(hello|test)/?$", this::do_hello);

也能绕过hi.servlet抽象实现无配置路由配置,即通过实现hi.route.run_t抽象直奔业务逻辑而去,例如:

 1 package hi;
2
3 import hi.request;
4 import hi.response;
5 import hi.route;
6 import java.util.regex.Matcher;
7
8 public class helloworld implements hi.route.run_t {
9 public helloworld() {
10 }
11
12 public void handler(hi.request req, hi.response res, Matcher m) {
13 res.set_content_type("text/plain;charset=utf-8");
14 res.content = "hello,world\n";
15 res.status = 200;
16 }
17 }

要调用hi.helloworld类,只需在hi-nginx中配置hi-nginx-java自带的默认控制器hi.controller即可:

location ~ \.java {
rewrite ^/(.*)\.java$ /$1 break;
hi_java_servlet hi/controller;
}

如此,访问http://localhost/hi/helloworld.java即可获得相应服务。

所以,hi-nginx-java业已实现一种URI和class之间的映射关系。如果URI是/a/b/c.java,那么相应的服务类就是a.b.c。这一切完全是自动完成的,无需任何配置。至于.java的后缀,则可任君选取,无任何限制。

另外,hi-nginx-java通过LRU+过期时间的混合算法更新URI和class之间的映射关系,默认过期时间是300秒。也就是,如果你更新了业务实现,无需做任何事,300秒后,服务器将自动更新相关业务逻辑,从而无需通过restart或者reload重启hi-nginx服务器。当然,如果着急看更新后的结果,即可通过restart或者reload重启hi-nginx服务器,也可通过配置较短的过期时间来达到目的。

hi-nginx-java的无配置路由配置的更多相关文章

  1. urls.py的配置[路由配置]

    urls.py的配置[路由配置] Get请求与Post请求的方式 get请求: (1)地址栏输入url (2)<a href="请求url">点击</a> ...

  2. 如何用vue-router为每个路由配置各自的title

    传统方法 以前在单页面路由中,就只能在html文件中定一个固定的网站的title.如果想要动态的去修改,需要使用如下的方法. document.title = '这是一个标题'; 这样会让我们做很多无 ...

  3. Linux上临时路由、永久路由配置

    Linux下查看路由条目 查看路由表命令 route -n 示例 [root@cobbler_vm ~]# route -n Kernel IP routing table Destination G ...

  4. 在linux下配置Nginx+Java+PHP的环境

    Apache对Java的支持很灵活,它们的结合度也很高,例如Apache+Tomcat和Apache+resin等都可以实现对Java应用 的支持.Apache一般采用一个内置模块来和Java应用服务 ...

  5. java架构之路-(nginx使用详解)nginx的反向代理和优化配置

    书接上回说,nginx我们学会了简单的配置.那么我今天来聊一下,我们ngxin的一些优化配置(我不是很懂,不敢谈高级配置).我先来看一下nginx的好处和正向代理. nginx的好处 1.可以高并发连 ...

  6. Nginx同server配置下配置多个localhost路由地址

    nginx多页面路由配置,进入 nginx/conf/nginx.conf: http { ...... server { listen 80; server_name localhost; loca ...

  7. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  8. Linux下Nginx+Tomcat整合的安装与配置

    因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭 建javaee项目很好的选择.nginx主要是通过反向 ...

  9. Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交

    今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点 ...

随机推荐

  1. 视频直播源码开发中的流媒体协议:rtmp协议

    一.概念与摘要 视频直播源码的RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和互动内容).RTMP提供了一套全双工的可靠的多路复用消息服务,类似 ...

  2. c#导入文件

    string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Administrator\Desktop\2.txt",Encod ...

  3. C++常见的面试题目整理

    本文列出C++面试中经常遇到的一些问题,都是一些常见的面试考点,如果后续遇到其他常见面试问题还会再次更新.希望对近期参加面试的同学有一些帮助.先后顺序与问题的重要性无关,查看的时候,最好是全面了解一下 ...

  4. jquery实现回车键执行ajax

    $('#txtKey').bind('keypress',function(event){ if(event.keyCode == "13") { alert(1) }});

  5. python菜鸟教程学习1:背景性学习

    https://www.runoob.com/python3/python3-intro.html 优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感 ...

  6. [MIT6.006] 3. Insertation Sort, Mege Sort 插入排序,归并排序

    关于第2节课<Models of Computation, Document Distance>由于内容过于简单,所以不在这里进行记录,它主要就是讲了Python很多操作是constant ...

  7. quic 分析 1

    问题1:quic握手过程是怎样的? 怎样节约握手时间?握手时间多少个RTT?握手过程成涉及到哪些概念以及变量(代码) 0~1 RTT握手过程   QUIC握手的过程是需要一次数据交互,0-RTT时延即 ...

  8. 聊一聊sockmap 以及ebpf

    之前聊过tcpdump 抓包原理,tcpdump使用packet 抓包,使用packet_map 完成零拷贝.但是这个零拷贝也有点假,何为假呢?从网卡到内存走的dma,哪能不能直接从dma拷贝到用户空 ...

  9. linux 内核并发同步 2

    信号量semaphore 信号量是一种允许进程进入睡眠的同步机制,信号量是一个计数器,支持两种原语即P 和V操作,也就是down 和up 操作, /* Please don't access any ...

  10. UNIX目录访问操作

    1.目录访问相关函数: DIR* opendir (const char * path ); struct dirent* readdir(DIR *dirptr) ;参数是一个指向dirent 结构 ...