Web.Java是一个高性能,轻量级的非阻塞式服务器。
为了能更好的提高性能,Web.Java把HTTP服务区分应用和文件服务两种。
Web.Java 整体采用Reactor模式用来接收或响应HTTP请求(原理同Nginx)。
应用服务采用了Reactor来响应请求。
文件服务采用了Proactor模式,并搭配304状态使用,能极大的提高静态文件的相应速度,且不影响整体。
简单的标签:只需要记住{{}}标签用于输出变量,{%%}标签用于if,for 等操作。
可以继承的模版:页面的布局,HTML文件的复用等问题,通过模版继承机制可以得到解决。用{%extends xx%}关键字实现继承。
高性能:Web.Java会自动把Html文件,编译成Java文件。应用到生产环境的时候,速度等同于Java的硬输出。且在DEBUG模式下,会动态的加载模板文件,而不需要重启进程。
随便打开几个J2EE的网站,我就不想吐槽那个URL了。Web.Java使用正则表达式来配置URL,这样做可以提供足够强大和灵活的URL模式。比如像用“/Article/23”想获取文章的ID可以这样来配置URL
HttpServer.setPATH("/Article/(\\d+)",new ArticleHandler()); //ArticleHandler.java文件 get方法 public void get(String id){ //获取ID进行其他操作 …… }
这样在ArticleHandler中对应的get或者post方法中就会获取相应的参数。当然,你可以任意的使用正则表达式来配置你的URL
Options.DBURL = "jdbc:mysql://localhost:3306/test"; Options.DBDriver = "com.mysql.jdbc.Driver"; Options.DBUser = "root"; Options.DBPassword = "123456";
配置好数据库信息后,可以直接在Handler中使用DB中的静态方法进行操作。
具体的操作在DB中有说明。当然如果你想,可以使用任何你想用的ORM。当然,希望你能直接使用SQL,不想解释为什么。
看名字就知道了。让我们开始使用Web.Java吧!
把源码包放到你的项目目录下面。 然后在main方法中加入
HttpServer.setPATH("/", new IndexHandler()); System.out.println("Listen 8080"); HttpServer.init(8080);
IndexHandler.java
public void get() { this.writer("Hello World!"); }
现在Run it 浏览器打开就会看到你Writer的内容了。
问题原因:springboot创建临时文件找不到对应的目录 解决办法:1. 重新指定临时文件位置 java -Djava.io.tempdir=D:/tmpdir -jar -my_project.jar 2. 手动创建指定文件夹 3. 启动类中加入配置临时文件目录 1 2 3 4 5 6 7 8 9 10 11 @Bean MultipartConfig
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/65449355 java.lang.NoSuchMethodException: [org.springframework.web.multipart.MultipartFile;.<init>() at java.lang.Class.getConstructor0(Class.j
楔子 使用ssm,HandlerInterceptorAdapter 时,获取执行的方法,出现如下错误 java.lang.ClassCastException: org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler cannot be cast to org.springframework.web.me
这篇文章是由一个默认页面怎么配置引发的一系列问题。是时候补基础了,谢谢带我小哥哥给我指出的问题,还有小哥哥们的指导。哈哈哈哈,切入正题吧! 虽然已经自己动手写过很多个web项目了(参加比赛,写着玩的,毕业设计),可是项目的每个细节,项目的具体配置,真的理解了吗?是不是只是把一个项目的结构拷过来,然后修改呢?所以说,我真的了解java web项目的运行,了解它的运转吗? 前面已经提了一个问题,启动w
spring cloud alibaba dubbo集成出现 java.lang.ClassNotFoundException: org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties java.lang.IllegalStateException: Error processing con
错误信息 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/seckill]] at java.util
升级spring boot到2.7.0,项目启动报错,项目使用swagger 3.0 ,具体版本是knife4j-spring-boot-starter的3.0.3,查找解决方案,都说修改配置文件(但是修改配置后仍然无效)或者新增配置类,过滤空情况,但是仍然还是解决了很长时间。报错信息:Caused by: java.lang.NullPointerException: Cannot invoke
解决方法: 其实是你的pom.xml中引用的jar文件没有同步发布到自己项目的lib目录中 (如果是用Maven进行构建的话) 可以试试 下面的办法 –rebuild下project就可以了 项目点击右键 点击 Properties 选择Deployment Assembly 再点击右边的Add按钮 选择 Java Build Path Entries后点击Next按钮 然后选择你的Maven D
现在我们已经知道了Java NIO里面那些非阻塞特性是怎么工作的,但是要设计一个非阻塞的服务仍旧比较困难。非阻塞IO相对传统的阻塞IO给开发者带来了更多的挑战。在本节非阻塞服务的讲解中,我们一起来讨论这些会面临的主要挑战,同时也会给出一些潜在的解决方案。 查找关于设计非阻塞服务的相关资料是比较难的,本文提出的解决方案也只能是基于笔者个人的工作经验,构思。如果你有其他的解决方案或者是更好的点子,那么
主要内容:1 非阻塞服务器-GitHub仓库,2 无阻塞IO管道,3 非阻塞与阻塞IO管道,4 基本的无阻塞IO管道设计,5 读取部分消息,6 存储部分消息,7 编写部分消息,8 总结,9 服务器线程模型即使你了解了Java NIO非阻塞功能如何工作(Selector,Channel, Buffer等),设计一个无阻塞服务器仍然很难。与阻塞IO相比,非阻塞IO包含多个挑战。这份非阻塞服务器教程将讨论非阻塞服务器的主要挑战,并为它们描述一些潜在的解决方案。 本教程中描述的思想是围绕Java NIO
我正在研究反应式编程,我怀疑它是否是非阻塞IO的Java REST web服务的实现。Java Servlet 3.1规范引入了一些接口,以实现非阻塞web请求。 我的问题是: Netty是否实现了该规范,而Tomcat、JBoss和Jetty没有实现 谢谢。
我有一个方法,可以启动一个简单的cpp grpc服务器。 我想做
非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 ServletInputStream.setReadListener 或ServletOutputStream.setWriteListener 方法时将抛出IllegalStateException。为了支持在 Ser
Web 容器中的非阻塞请求处理有助于提高对改善 Web 容器可扩展性不断增加的需求,增加 Web 容器可同时处理请求的连接数量。servlet 容器的非阻塞 IO 允许开发人员在数据可用时读取数据或在数据可写时写数据。非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 S
问题内容: 我在获取ncurses的getch()阻止时遇到了一些问题。默认操作似乎是非阻塞的(或者我错过了一些初始化)?我希望它可以像Windows中的getch()一样工作。我尝试了各种版本的 (并非同时全部)。如果可能的话,我宁愿不(明确地)使用any 。一个围绕残培环路(),检查特定的返回值是OK了。 问题答案: curses库是一揽子交易。如果不正确初始化库,您不能仅仅提出一个例程并希望
问题内容: 有没有一种方法可以以非阻塞方式使用python的socket.accept()来简单地运行它,并让我检查它是否有任何新连接?我 真的 不想使用线程。谢谢。 问题答案: 您可能想要类似的东西(请参阅文档)。您提供了三个套接字列表:您要监视其可读性,可写性和错误状态的套接字。当新的客户端正在等待时,服务器套接字将是可读的。 该功能将一直阻塞,直到套接字状态之一改变为止。如果您不想永远阻塞,