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. JavaSE基础语法学习-流程控制

    流程控制 用户交互Scanner Scanner**对象** 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); 接下来我们演示一个最 ...

  2. Sql 解析XML 解决方案参考

    1.定义存储过程 -- =============================================-- Author: <Author,,Name>-- Create da ...

  3. leetcode110:combination-sum-ii

    题目描述 给出一组候选数C和一个目标数T,找出候选数中起来和等于T的所有组合. C中的每个数字在一个组合中只能使用一次. 注意: 题目中所有的数字(包括目标数T)都是正整数 组合中的数字 (a 1,  ...

  4. 【开发板试用报告】鸿蒙OS环境搭建及代码烧录

    鸿蒙系统的代码编译环境需要linux系统,软件开发和代码烧录需要windows环境. Linux环境 参考官方链接:https://gitee.com/openharmony/docs/blob/ma ...

  5. 牛客网-C++-2020.9.2

    1. for循环语句能够被改写成(D)语句 A. 复合 B. if C. switch D. while 解析: for循环可以写成while控制循环的次数,同时也可以被改写成do while语句 2 ...

  6. socket里面那个又爱又恨的锁

    查一个问题:结果看了一下软中断以及系统 所耗cpu,心中满是伤痕啊------- perf 结果一眼可以看到:主要是锁 那么这个lock 是用来干什么的呢?? A:TCP socket的使用者有两种: ...

  7. tcpack--4延时ack

    TCP在收到数据后必须发送ACK给对端,但如果每收到一个包就给一个ACK的话会使得网络中被注入过多报文.TCP的做法是在收到数据时不立即发送ACK,而是设置一个定时器,如果在定时器超时之前有数据发送给 ...

  8. IP 层收发报文简要剖析3--ip输入报文分片重组

    在ip_local_deliver中,如果检测到是分片包,则需要将报文进行重组.其所有的分片被重新组合后才能提交到上层协议,每一个被重新组合的数据包文用ipq结构实例来表示 struct ipq { ...

  9. binary hacks读数笔记(nm命令)

    nm命令(names):输出包含三个部分:1 符号值.默认显示十六进制,也可以指定: 2 符号类型.小写表示是本地符号,大写表示全局符号(external); 3 符号名称. 例如:nm Simple ...

  10. 分布式监控系统之Zabbix宏、模板和自定义item

    前文我们聊了下zabbix的基础使用,包括主机的添加.监控项.触发器.action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/140073 ...