hi-nginx-java的无配置路由配置
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的无配置路由配置的更多相关文章
- urls.py的配置[路由配置]
urls.py的配置[路由配置] Get请求与Post请求的方式 get请求: (1)地址栏输入url (2)<a href="请求url">点击</a> ...
- 如何用vue-router为每个路由配置各自的title
传统方法 以前在单页面路由中,就只能在html文件中定一个固定的网站的title.如果想要动态的去修改,需要使用如下的方法. document.title = '这是一个标题'; 这样会让我们做很多无 ...
- Linux上临时路由、永久路由配置
Linux下查看路由条目 查看路由表命令 route -n 示例 [root@cobbler_vm ~]# route -n Kernel IP routing table Destination G ...
- 在linux下配置Nginx+Java+PHP的环境
Apache对Java的支持很灵活,它们的结合度也很高,例如Apache+Tomcat和Apache+resin等都可以实现对Java应用 的支持.Apache一般采用一个内置模块来和Java应用服务 ...
- java架构之路-(nginx使用详解)nginx的反向代理和优化配置
书接上回说,nginx我们学会了简单的配置.那么我今天来聊一下,我们ngxin的一些优化配置(我不是很懂,不敢谈高级配置).我先来看一下nginx的好处和正向代理. nginx的好处 1.可以高并发连 ...
- Nginx同server配置下配置多个localhost路由地址
nginx多页面路由配置,进入 nginx/conf/nginx.conf: http { ...... server { listen 80; server_name localhost; loca ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- Linux下Nginx+Tomcat整合的安装与配置
因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭 建javaee项目很好的选择.nginx主要是通过反向 ...
- Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交
今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点 ...
随机推荐
- Round 4
最近再次经历动荡期 博客只在小白时期记录过 已经沉寂许久 之前的工作在黄区 加班超多 阻隔了一切与外网交流的可能 只能凭记忆补一点最近一年来积累到的知识 不管怎么样 不能放弃自己啊老铁!
- 【SpringBoot】07.SpringBoot文件上传
SpringBoot文件上传 1.编写html文件在classpath下的static中 <!DOCTYPE html> <html> <head> <met ...
- Vue+nodejs+npm完美结合入门==vue入门
因为我的是win7系统 64位 只能下载低版本的nodjs: 传送门:https://nodejs.org/dist/v9.7.1/ 一.使用之前,我们先来掌握3个东西是用来干什么的. npm: No ...
- c++的基本点
C++的要点: 一个思想:抽象(和分类)的思想: 三个概念:类.对象.消息: 三个特征:封装.继承.多态: 一个观念:函数服务于数据. 程序 = 对象 + 消息 ...
- tcp输入数据 慢速路径处理 && oob数据 接收 && 数据接收 tcp_data_queue
大致的处理过程 TCP的接收流程:在tcp_v4_do_rcv中的相关处理(网卡收到报文触发)中,会首先通过tcp_check_urg设置tcp_sock的urg_data为TCP_URG_NOTYE ...
- JAVA程序员工作常用英语(细心整理)
基础----进阶 A. array数组accessible 可存取的 area面积audio 音频 addition 加法 action 行动 arithmetic 算法adjustment 调整 a ...
- 基于gin的golang web开发:中间件
gin中间件(middleware)提供了类似于面向切面编程或路由拦截器的功能,可以在请求前和请求之后添加一些自定义逻辑.实际开发中有很多场景会用到中间件,例如:权限验证,缓存,错误处理,日志,事务等 ...
- php 抛出异常
<?php //try里面执行的东西如果不成立,可直接 throw new Exception('异常信息'),那么try里面的程序将会被停止执行,直接执行catch里面的程序 try { if ...
- Maximum execution time of 30 seconds exceeded in
在执行一次php脚本的时候,遇到了这样的报错,经过c Maximum execution time of 30 seconds exceeded in 翻译过来就是:执行时间超过了30秒最长执行时间: ...
- 插件Spire.PDF帮你高效搞定PDF打印
Spire.PDF介绍 Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight.Spire.PDF的PDF ...