JavaWeb中处理 Web 请求的方式总结

文章目录

  • JavaWeb中处理 Web 请求的方式总结
  • 1. 原始的 Servlet 方式
    • 1.1. 环境搭建
      • **创建 Maven 或 Gradle 项目**:
      • **添加 Servlet 依赖**:
      • **创建 Servlet 类**:
      • **配置项目**:
      • **配置 Tomcat**:
    • 1.2. 路由机制
    • 1.3. 示例代码
  • 2. Spring MVC
    • 2.1. 环境搭建
      • **创建 Spring Boot 项目**:
      • **创建 Controller 类**:
      • **运行 Spring Boot 应用**:
    • 2.2. 路由机制
    • 2.3. 示例代码
  • 3. Struts2
    • 3.1. 环境搭建
      • **创建 Maven 项目**:
      • **配置项目**
      • **添加 Struts2 依赖**:
      • **创建 Struts2 配置文件**:
      • **配置web.xml**:
      • **创建 Action 类**:
      • **创建静态jsp文件**
      • **配置 Tomcat**:
      • **访问项目**:
    • 3.2. 路由机制
    • 3.3. 示例代码
  • 4. JavaServer Faces (JSF)
    • 4.1. 环境搭建
      • **创建 Maven 项目**:
      • **添加 JSF 依赖**:
      • **创建 Managed Bean 类**:
      • **创建 JSP 页面**:
      • **配置 Tomcat**:
    • 4.2. 路由机制
    • 4.3. 示例代码
  • 5. Vaadin
    • 5.1. 环境搭建
      • **创建 Maven 项目**:
      • **添加 Vaadin 依赖**:
      • **创建 Vaadin 应用类**:
      • **配置 Vaadin 应用**:
      • **运行 Vaadin 应用**:
    • 5.2. 路由机制
    • 5.3. 示例代码
  • 6. Play Framework
    • 6.1. 环境搭建
      • **创建 Play 项目**:
      • **修改 Routes 文件:**
      • **编写 Controller 类:**
      • **运行 Play 应用:**
    • 6.2. 路由机制
    • 6.3. 示例代码
  • 7. Vert.x
    • 7.1. 环境搭建
      • **创建 Vert.x 项目:**
      • **添加 Vert.x 依赖:**
      • **编写 Vert.x 应用:**
      • **运行 Vert.x 应用:**
    • 7.2. 路由机制
    • 7.3. 示例代码
  • 8. Micronaut
    • 8.1. 环境搭建
      • **创建 Micronaut 项目:**
      • **编写 Controller 类:**
      • **运行 Micronaut 应用:**
    • 8.2. 路由机制
    • 8.3. 示例代码
  • 9. Quarkus
    • 9.1. 环境搭建
      • **创建 Quarkus 项目:**
      • **修改 RESTful 接口类:**
      • **运行 Quarkus 应用:**
    • 9.2. 路由机制
    • 9.3. 示例代码
  • 10. Ratpack
    • 10.1. 环境搭建
      • **创建 Gradle 项目:**
      • **添加 Ratpack 依赖:**
      • **编写 Groovy 脚本:**
      • **运行 Ratpack 应用:**
    • 10.2. 路由机制
    • 10.3. 示例代码

JavaWeb中处理 Web 请求的方式总结

在 Java Web 开发中,处理 Web 请求的方式有很多种,涵盖了从原始的 Servlet 到各种现代框架的不同实现。

1. 原始的 Servlet 方式

Servlet 是 Java Web 开发的基础,它定义了处理 HTTP 请求的标准接口。

1.1. 环境搭建

  • 工具: Apache Tomcat、Jetty、Undertow
  • 配置: 在 web.xml 文件中配置 Servlet 映射
  • IDE: Eclipse、IntelliJ IDEA、NetBeans

创建 Maven 或 Gradle 项目

  • 打开 IntelliJ IDEA,选择 File > New > Project
  • 选择 MavenGradle,然后点击 Next
  • 填写项目的基本信息,如 Group ID 和 Artifact ID,然后点击 Create

添加 Servlet 依赖

  • pom.xml 文件中添加 Servlet API 依赖(如果使用的是 Java 8 及以上版本,Servlet API 已经包含在标准 Java 库中,无需单独添加):
    <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
    </dependency>
    

创建 Servlet 类

  • 创建一个新的 Java 类,继承 HttpServlet 类,并重写 doGetdoPost 方法。
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;@WebServlet("/hello")
    public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();try {out.println("<html><head><title>Hello Servlet</title></head>");out.println("<body>");out.println("<h1>Hello, Servlet!</h1>");out.println("</body></html>");} finally {out.close();}}
    }
    

配置项目

1)首先点击“File”-“Project Structure…”

2)点击“Modules”,选择对应Module之后,点击“+”,选择“Web”

3)添加完之后,会出现如下内容,点击右下角“Create Artifact”

4)添加完成之后,如下:

配置 Tomcat

  • 在 IntelliJ IDEA 中安装 Tomcat 插件或使用内置的 Tomcat 集成。
  • Run/Debug Configurations 中配置 Tomcat,指向项目的 webapp 目录。
  • 运行 Tomcat 服务器。

1)点击项目中的“Edit Configurations…”

2)选择Tomcat Server - Local

3)点击右下角的“Fix”

4)会出现如下内容,也可以将Application context中的内容删掉,这样访问时不需要加项目目录,更简洁。

5)现在就可以运行项目了

1.2. 路由机制

  • Servlet Mapping: 在 web.xml 中使用 <servlet-mapping> 标签来配置 Servlet 的 URL 映射。
  • Annotation: 使用 @WebServlet 注解来配置 Servlet 的 URL 映射。

示例:

  • web.xml配置
    <servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.example.HelloServlet</servlet-class>
    </servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
  • 或者是java的Servlet类上添加@WebServlet 注解
    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {// ...
    }
    

1.3. 示例代码

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {String name = request.getParameter("name");response.setContentType("text/html;charset=utf8");response.setHeader("Hello",name);PrintWriter out = response.getWriter();try {out.println("<html><head><title>Hello Leyilea</title></head>");out.println("<body>");out.println("<h1>Hello, Leyilea!</h1>");out.println("<p>输入的name参数为:"+name+"</p>");out.println("</body></html>");} finally {out.close();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

2. Spring MVC

Spring MVC 是 Spring 框架的一部分,提供了声明式的 MVC 架构支持。

2.1. 环境搭建

  • 工具: Spring Boot、Spring Framework
  • 配置: 使用 @SpringBootApplication 注解启动 Spring Boot 应用,配置 application.propertiesapplication.yml 文件。
  • IDE: Spring Tool Suite (STS)、IntelliJ IDEA

创建 Spring Boot 项目

  • 在 IntelliJ IDEA 中选择 File > New > Project
  • 选择 Spring Initializr,然后点击 Next
  • 填写项目的基本信息,选择 Web Starter 依赖,然后点击 Finish

创建 Controller 类

  • 创建一个新的 Java 类,使用 @RestController 注解。
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;@RestController
    @RequestMapping("/hello")
    public class HelloController {@GetMappingpublic String hello() {return "Hello, Spring MVC!";}
    }
    

运行 Spring Boot 应用

  • 在 main 方法所在的类上右键选择 Run ‘Application.main()’。

2.2. 路由机制

  • Controller: 使用 @Controller@RestController 注解定义控制器类。
  • RequestMapping: 使用 @RequestMapping@GetMapping@PostMapping 等注解来配置路由。

示例:

@RestController
@RequestMapping("/hello")
public class HelloController {@GetMappingpublic String hello() {return "Hello, Spring MVC!";}
}

2.3. 示例代码

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/hello")
public class HelloController {@GetMappingpublic String hello() {return "Hello, Spring MVC!";}
}

3. Struts2

Struts2 是一个基于 Java 的 MVC 框架,使用 XML 或注解来配置路由。

3.1. 环境搭建

和原始的 Servlet 方式配置很相似。

  • 工具: Apache Tomcat
  • 配置: 编写 struts.xml 文件来配置 Struts2 框架。
  • IDE: IntelliJ IDEA、 Eclipse、NetBeans

创建 Maven 项目

  • 在 IntelliJ IDEA 中选择 File > New > Project
  • 选择 Maven,然后点击 Next
  • 填写项目的基本信息,然后点击 Finish

配置项目

1)首先点击“File”-“Project Structure…”

2)点击“Modules”,选择对应Module之后,点击“+”,选择“Web”

3)添加完之后,会出现如下内容,点击右下角“Create Artifact”

4)添加完成之后,如下:

接下来创建的项目目录结构如下:

添加 Struts2 依赖

  • pom.xml 文件中添加 Struts2 依赖:
    • 注意版本兼容,否则报错很多…
        <dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.10</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.3</version><scope>provided</scope></dependency></dependencies>
    

创建 Struts2 配置文件

  • src/main/resources 目录下创建 struts.xml 文件。
    <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="default" namespace="/" extends="struts-default"><action name="helloWorld" class="com.leyilea.HelloWorldAction"><result>/helloworld.jsp</result></action></package>
    </struts>
    

配置web.xml

  • web/WEB-INF/web.xml文件中配置 Struts DispatcherServlet,拦截所有请求,转发给struts2。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!-- 配置 Struts DispatcherServlet --><!--  拦截所有请求,转发给struts2--><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>
    </web-app>
    

创建 Action 类

  • 创建一个新的 Java 类HelloWorldAction,实现 Action 接口。
    package com.leyilea;
    import com.opensymphony.xwork2.Action;public class HelloWorldAction implements Action {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String execute(){message = "Hello World!";return SUCCESS;}
    }

创建静态jsp文件

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body><h3>首页</h3>
</body>
</html>

helloworld.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"><title>HelloWorld</title>
</head>
<body><h3>HelloWorld</h3>
<p><%= ((String)request.getAttribute("message")) %></p></body>
</html>

配置 Tomcat

  • 在 IntelliJ IDEA 中安装 Tomcat 插件或使用内置的 Tomcat 集成。
  • Run/Debug Configurations 中配置 Tomcat,指向项目的 webapp 目录。
  • 运行 Tomcat 服务器。

1)点击项目中的“Edit Configurations…”

2)选择Tomcat Server - Local

3)点击右下角的“Fix”

4)会出现如下内容,也可以将Application context中的内容删掉,这样访问时不需要加项目目录,更简洁。

访问项目

3.2. 路由机制

  • Action: 使用 XML 配置文件 struts.xml 来定义 <action> 标签。
  • Result: 使用 <result> 标签来配置 Action 的结果。

示例:

  • struts.xml
    <package name="default" namespace="/"><action name="helloWorld" class="com.leyilea.HelloWorldAction"><result>/helloworld.jsp</result></action>
    </package>
    
  • java
    package com.example;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport {// ...
    }
    

3.3. 示例代码

<package name="default" namespace="/"><action name="helloWorld" class="com.example.HelloWorldAction"><result>/index.jsp</result></action>
</package>
package com.example;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport {private String message;public String execute() throws Exception {message = "Hello World!";return SUCCESS;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}

4. JavaServer Faces (JSF)

JSF 是一种基于组件的 MVC 框架,主要用于构建富客户端 Web 应用程序。

4.1. 环境搭建

  • 工具: Apache Tomcat、GlassFish
  • 配置: 使用 faces-config.xml 文件来配置 JSF 组件。
  • IDE: NetBeans、Eclipse

创建 Maven 项目

  • 在 IntelliJ IDEA 中选择 File > New > Project
  • 选择 Maven,然后点击 Next
  • 填写项目的基本信息,然后点击 Finish

添加 JSF 依赖

  • pom.xml 文件中添加 JSF 依赖:
    <dependency><groupId>javax.faces</groupId><artifactId>javax.faces-api</artifactId><version>2.2.13</version><scope>provided</scope>
    </dependency>
    <dependency><groupId>com.sun.faces</groupId><artifactId>mojarra</artifactId><version>2.2.13</version><scope>runtime</scope>
    </dependency>
    

创建 Managed Bean 类

  • 创建一个新的 Java 类,使用 @ManagedBean 注解。
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;@ManagedBean
    @SessionScoped
    public class HelloBean {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String sayHello() {message = "Hello, JSF!";return null;}
    }
    

创建 JSP 页面

  • src/main/webapp 目录下创建 index.xhtml 文件。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head><title>Hello JSF</title>
    </h:head>
    <h:body><h:form><h:commandButton value="Say Hello" action="#{helloBean.sayHello}" /><h:outputText value="#{helloBean.message}" /></h:form>
    </h:body>
    </html>
    

配置 Tomcat

  • 在 IntelliJ IDEA 中安装 Tomcat 插件或使用内置的 Tomcat 集成。
  • Run/Debug Configurations 中配置 Tomcat,指向项目的 webapp 目录。
  • 运行 Tomcat 服务器。

4.2. 路由机制

  • Managed Bean: 使用 @ManagedBean 注解定义 Managed Beans。
  • Navigation Rule: 在 faces-config.xml 文件中定义导航规则。

示例:

  • xml
    <navigation-rule><from-view-id>/login.xhtml</from-view-id><navigation-case><from-outcome>success</from-outcome><to-view-id>/welcome.xhtml</to-view-id></navigation-case>
    </navigation-rule>
    
  • java
    @ManagedBean
    @SessionScoped
    public class LoginBean {// ...
    }
    

4.3. 示例代码

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;@ManagedBean
@SessionScoped
public class HelloBean {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String sayHello() {message = "Hello, JSF!";return null;}
}

5. Vaadin

Vaadin 是一种用于构建 Web 应用程序的框架,支持构建富客户端应用。

5.1. 环境搭建

  • 工具: Apache Tomcat
  • 配置: 使用 Vaadin 库和 Maven 或 Gradle 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Maven 项目

  • 在 IntelliJ IDEA 中选择 File > New > Project
  • 选择 Maven,然后点击 Next
  • 填写项目的基本信息,然后点击 Finish

添加 Vaadin 依赖

  • pom.xml 文件中添加 Vaadin 依赖:
    <dependency><groupId>com.vaadin</groupId><artifactId>vaadin-bom</artifactId><version>14.7.14</version><type>pom</type><scope>import</scope>
    </dependency>
    

创建 Vaadin 应用类

  • 创建一个新的 Java 类,使用 @Route 注解。
    import com.vaadin.flow.component.button.Button;
    import com.vaadin.flow.component.notification.Notification;
    import com.vaadin.flow.component.orderedlayout.VerticalLayout;
    import com.vaadin.flow.router.Route;
    import com.vaadin.flow.server.PWA;@Route("")
    @PWA(name = "Project Base", shortName = "Project Base PWA", offlineResources = { "images/app-icon.png" })
    public class MainView extends VerticalLayout {public MainView() {Button button = new Button("Click me!", event -> Notification.show("Clicked!"));add(button);}
    }
    

配置 Vaadin 应用

  • src/main/java 目录下创建 Application.java 类。
    import com.vaadin.flow.component.Component;
    import com.vaadin.flow.component.Tag;
    import com.vaadin.flow.component.dependency.JsModule;
    import com.vaadin.flow.component.littemplate.LitTemplate;
    import com.vaadin.flow.component.template.Id;
    import com.vaadin.flow.component.uri.UriTemplate;
    import com.vaadin.flow.di.HasModels;
    import com.vaadin.flow.internal.nodefeature.ModelDescriptors;
    import com.vaadin.flow.router.Route;
    import com.vaadin.flow.templatemodel.TemplateModel;@Tag("my-view")
    @JsModule("./views/my-view.ts")
    public class Application extends LitTemplate implements HasModels {@Id("foo")private Component foo;@Overridepublic Class<? extends TemplateModel> getModelClass() {return ApplicationModel.class;}public interface ApplicationModel extends TemplateModel {@ModelDescriptors.AsStringString getFoo();}public void setFoo(String foo) {((ApplicationModel) getModel()).setFoo(foo);}
    }
    

运行 Vaadin 应用

  • main 方法所在的类上右键选择 Run 'Application.main()'

5.2. 路由机制

  • Router: 使用 @Route 注解定义路由。
  • Component: 使用 Vaadin 组件来构建 UI。

示例:

@Route("")
public class MainView extends VerticalLayout {// ...
}

5.3. 示例代码

import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.PWA;@Route("")
@PWA(name = "Project Base", shortName = "Project Base PWA", offlineResources = { "images/app-icon.png" })
public class MainView extends VerticalLayout {public MainView() {Button button = new Button("Click me!", event -> Notification.show("Clicked!"));add(button);}
}

6. Play Framework

Play 是一个轻量级的框架,支持 Java 和 Scala。

6.1. 环境搭建

  • 工具: sbt(Scala Build Tool)
  • 配置: 使用 Play 应用模板和 sbt 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Play 项目

  • 打开终端,使用 Play CLI 创建新项目:
    play new myproject
    
  • 进入项目目录:
    cd myproject
    
  • 将项目导入到 IntelliJ IDEA 中:
    • 在 IntelliJ IDEA 中选择 File > Import Project
    • 选择项目根目录并选择相应的 build.sbt 文件。
    • 点击 OK 并等待项目加载完毕。

修改 Routes 文件:

  • conf/routes 文件中添加路由映射:
    GET     /hello         controllers.HelloController.hello
    

编写 Controller 类:

  • 创建一个新的 Java 类,继承 AbstractController 类。
  • 例如,创建一个名为 HelloController 的类:
    package controllers;import play.mvc.Controller;
    import play.mvc.Result;public class HelloController extends Controller {public static Result hello() {return ok("Hello, Play Framework!");}
    }
    

运行 Play 应用:

  • 在 IntelliJ IDEA 中右键点击 Application 类并选择 Run 'Application'
  • 访问 http://localhost:9000/hello 来查看结果。

6.2. 路由机制

  • Routes File: 在 conf/routes 文件中定义路由。
  • Controller: 使用 Java 或 Scala 编写控制器类。

示例:

  • conf
    GET     /hello      controllers.HelloController.index()
    
  • java
    public class HelloController extends Controller {public Result index() {return ok("Hello, Play Framework!");}
    }
    

6.3. 示例代码

import play.mvc.Controller;
import play.mvc.Result;public class HelloController extends Controller {public Result index() {return ok("Hello, Play Framework!");}
}

7. Vert.x

Vert.x 是一个高性能的异步框架,支持多种语言,包括 Java。

7.1. 环境搭建

  • 工具: Vert.x 库
  • 配置: 使用 Vert.x 库和 Maven 或 Gradle 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Vert.x 项目:

  • 打开 IntelliJ IDEA,选择 File > New > Project
  • 选择 GradleMaven,然后点击 Next
  • 填写项目的基本信息,如 Group IDArtifact ID,然后点击 Finish

添加 Vert.x 依赖:

  • pom.xml 文件中添加 Vert.x 核心依赖:
    <dependency><groupId>io.vertx</groupId><artifactId>vertx-core</artifactId><version>4.3.1</version>
    </dependency>
    
  • 如果使用 Gradle,在 build.gradle 文件中添加:
    implementation 'io.vertx:vertx-core:4.3.1'
    

编写 Vert.x 应用:

  • 创建一个新的 Java 类,编写 Vert.x 应用代码。
  • 例如,创建一个名为 HelloVerticle 的类:
    import io.vertx.core.AbstractVerticle;
    import io.vertx.core.DeploymentOptions;
    import io.vertx.core.Vertx;
    import io.vertx.core.http.HttpServer;
    import io.vertx.core.http.HttpServerResponse;public class HelloVerticle extends AbstractVerticle {@Overridepublic void start() {HttpServer server = vertx.createHttpServer();server.requestHandler(req -> {if ("/hello".equals(req.uri())) {req.response().putHeader("content-type", "text/plain").end("Hello, Vert.x!");} else {req.response().setStatusCode(404).end();}}).listen(8080, result -> {if (result.succeeded()) {System.out.println("HTTP server started on port 8080");} else {System.err.println("Failed to start server: " + result.cause());}});}public static void main(String[] args) {Vertx vertx = Vertx.vertx();vertx.deployVerticle(new HelloVerticle());}
    }
    

运行 Vert.x 应用:

  • 在 IntelliJ IDEA 中右键点击 HelloVerticle 类并选择 Run 'HelloVerticle.main()'
  • 访问 http://localhost:8080/hello 来查看结果。

7.2. 路由机制

  • Router: 使用 Router 类来定义路由。
  • Handler: 使用 Handler 函数来处理请求。

示例:

import io.vertx.core.AbstractVerticle;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.StaticHandler;public class MainVerticle extends AbstractVerticle {@Overridepublic void start() {Router router = Router.router(vertx);router.get("/").handler(rc -> rc.response().end("Hello, Vert.x!"));vertx.createHttpServer().requestHandler(router::accept).listen(8080);}
}

7.3. 示例代码

import io.vertx.core.AbstractVerticle;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.StaticHandler;public class MainVerticle extends AbstractVerticle {@Overridepublic void start() {Router router = Router.router(vertx);router.get("/").handler(rc -> rc.response().end("Hello, Vert.x!"));vertx.createHttpServer().requestHandler(router::accept).listen(8080);}
}

8. Micronaut

Micronaut 是一个现代的微服务框架,支持 Java 和 Groovy。

8.1. 环境搭建

  • 工具: Micronaut 库
  • 配置: 使用 Micronaut 应用模板和 Gradle 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Micronaut 项目:

  • 打开终端,使用 Micronaut CLI 创建新项目:
    mn create-app myproject
    
  • 进入项目目录:
    cd myproject
    
  • 将项目导入到 IntelliJ IDEA 中:
    • 在 IntelliJ IDEA 中选择 File > Import Project
    • 选择项目根目录并选择相应的 build.gradle 文件。
    • 点击 OK 并等待项目加载完毕。

编写 Controller 类:

  • 创建一个新的 Java 类,使用 Micronaut 注解。
  • 例如,创建一个名为 HelloController 的类:
    import io.micronaut.http.HttpResponse;
    import io.micronaut.http.HttpStatus;
    import io.micronaut.http.annotation.Controller;
    import io.micronaut.http.annotation.Get;@Controller("/hello")
    public class HelloController {@Getpublic HttpResponse<String> hello() {return HttpResponse.ok("Hello, Micronaut!");}
    }
    

运行 Micronaut 应用:

  • 在 IntelliJ IDEA 中右键点击 Application 类并选择 Run 'Application'
  • 访问 http://localhost:8080/hello 来查看结果。

8.2. 路由机制

  • Controller: 使用 @Controller 注解定义控制器类。
  • RequestMapping: 使用 @GetMapping@PostMapping 等注解来配置路由。

示例:

import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;@Controller("/hello")
public class HelloController {@Get(produces = MediaType.TEXT_PLAIN)public HttpResponse<String> index() {return HttpResponse.ok("Hello, Micronaut!");}
}

8.3. 示例代码

import io.micronaut.http.HttpResponse;
import io.micronaut.http.HttpStatus;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;@Controller("/hello")
public class HelloController {@Get(produces = MediaType.TEXT_PLAIN)public HttpResponse<String> index() {return HttpResponse.ok("Hello, Micronaut!");}
}

9. Quarkus

Quarkus 是一个现代的、高性能的 Java 框架,专为 Kubernetes 设计。

9.1. 环境搭建

  • 工具: Quarkus 库
  • 配置: 使用 Quarkus 应用模板和 Maven 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Quarkus 项目:

  • 打开终端,使用 Quarkus CLI 创建新项目:
    mvn io.quarkus:quarkus-maven-plugin:1.13.7.Final:create \-DprojectName=myproject \-DclassName=com.example.HelloResource \-DresourceName=hello
    
  • 进入项目目录:
    cd myproject
    
  • 将项目导入到 IntelliJ IDEA 中:
    • 在 IntelliJ IDEA 中选择 File > Import Project
    • 选择项目根目录并选择相应的 pom.xml 文件。
    • 点击 OK 并等待项目加载完毕。

修改 RESTful 接口类:

  • 修改 src/main/java/com/example/HelloResource.java 文件
    package com.example;import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;@Path("/hello")
    public class HelloResource {@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {return "Hello, Quarkus!";}
    }
    

运行 Quarkus 应用:

  • 在 IntelliJ IDEA 中右键点击 Application 类并选择 Run 'Application'
  • 访问 http://localhost:8081/hello 来查看结果。

9.2. 路由机制

  • RESTful Service: 使用 @Path 注解定义 RESTful 服务。
  • Method Mapping: 使用 @GET@POST 等注解来配置路由。

示例:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;@Path("/hello")
public class HelloResource {@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {return "Hello, Quarkus!";}
}

9.3. 示例代码

import io.quarkus.runtime.QuarkusApplication;
import io.quarkus.runtime.annotations.QuarkusMain;import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;@Path("/hello")
public class HelloResource {@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {return "Hello, Quarkus!";}
}

10. Ratpack

Ratpack 是一个高性能的异步 Java 框架。

10.1. 环境搭建

  • 工具: Gradle 构建工具
  • 配置: 使用 Ratpack 库和 Gradle 构建工具。
  • IDE: IntelliJ IDEA、Eclipse

创建 Gradle 项目:

  • 打开 IntelliJ IDEA,选择 File > New > Project
  • 选择 Gradle,然后点击 Next
  • 填写项目的基本信息,如 Group IDArtifact ID,然后点击 Finish

添加 Ratpack 依赖:

  • build.gradle 文件中添加 Ratpack 核心依赖:
    dependencies {compile 'io.ratpack:ratpack-groovy:1.6.0'
    }
    

编写 Groovy 脚本:

  • 创建一个新的 Groovy 类,使用 Ratpack 提供的方法。
  • 例如,创建一个名为 Build.gradle 的类:
    import ratpack.groovy.Groovy
    import ratpack.groovy.handler.GroovyTemplate
    import ratpack.server.RatpackServerRatpackServer.start { serverSpec ->serverSpec.handlers(chain -> {chain.get("hello") { ctx ->ctx.render("Hello, Ratpack!")}})
    }
    

运行 Ratpack 应用:

  • 在 IntelliJ IDEA 中右键点击 Build.gradle 文件并选择 Run 'Build.gradle'
  • 访问 http://localhost:5050/hello 来查看结果。

10.2. 路由机制

  • Handler: 使用 get, post 等方法来定义路由。
  • Chain: 使用 chain 方法来处理请求。

示例:

import ratpack.server.RatpackServerimport static ratpack.server.ServerBuilder.ratpack;ratpack { serverSpec ->serverSpec.handlers(chain -> chain.get({ ctx -> ctx.render("Hello, Ratpack!") }))
}.start()

10.3. 示例代码

import ratpack.server.RatpackServerimport static ratpack.server.ServerBuilder.ratpack;ratpack { serverSpec ->serverSpec.handlers(chain -> chain.get({ ctx -> ctx.render("Hello, Ratpack!") }))
}.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU调度算法之SJF(短作业优先)

摘要 CPU的短作业优先&#xff08;SJF, Shortest Job First&#xff09;任务调度算法是一种旨在提高系统响应速度和效率的调度策略。该算法通过优先执行预计运行时间最短的任务&#xff0c;从而减少平均等待时间&#xff0c;提高系统的整体吞吐量。虽然SJF算法在许多场景下表现…

《垃圾回收的算法与实现》-算法-摘抄

本文是书籍《垃圾回收的算法与实现》的摘抄&#xff0c;不涉及算法源码及步骤讲解模块。 预备 对象由头(header)和域(field)构成。 头&#xff1a;对象中保存对象本身信息的部分&#xff0c;主要含有以下信息&#xff1a;对象的大小和种类。 域&#xff1a;对象使用者在对象…

【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统

文章目录 一、系统架构1、后端&#xff1a;SpringBoot、Mybatis2、前端&#xff1a;Vue、ElementUI4、小程序&#xff1a;uniapp3、数据库&#xff1a;MySQL 二、系统功能三、系统展示1、小程序2、后台管理系统 一、系统架构 1、后端&#xff1a;SpringBoot、Mybatis 2、前端…

还不懂BIO,NIO,AIO吗

BIO&#xff08;Blocking I/O&#xff09;、NIO&#xff08;Non-blocking I/O&#xff09;和 AIO&#xff08;Asynchronous I/O&#xff09;是 Java 中三种不同的 I/O 模型&#xff0c;主要用于处理输入 / 输出操作。 一、BIO&#xff08;Blocking I/O&#xff09; 定义与工作原…

YOLOV3实现越界检测——智能安防

目录 应用前景 1. 安全监控系统 2. 家庭安防系统 3. 无人机监控 4. 交通管理 5. 无人驾驶技术 6. 大型活动现场 代码说明 1. YOLO 模型加载 2. 摄像头视频流捕获 3. 安全区域绘制 4. YOLOv3 目标检测 5. 过滤和标记人类目标 6. 入侵检测 7. 结果显示和退出 总结…

断点回归模型

断点回归&#xff08;Regression Discontinuity Design, RDD&#xff09;是一种准实验设计方法&#xff0c;用于评估政策或其他干预措施的效果。这种方法利用了一个清晰的阈值或“断点”&#xff0c;在这个阈值上&#xff0c;处理状态&#xff08;例如是否接受某种干预&#xf…

DevC++编译及使用Opencv

1.依赖 需要如下依赖&#xff1a; DevC11Opencv4.10.0CMake.exe 整个安装过程参考下面的文章&#xff1a;https://blog.csdn.net/weixin_41673576/article/details/108519841 这里总结一下遇到的问题。 2.问题 2.1 DevC安装路径 一定不要有空格&#xff01;&#xff01;否则…

tekton pipeline workspaces

tekton pipeline workspace是一种为执行中的管道及其任务提供可用的共享卷的方法。 在pipeline中定义worksapce作为共享卷传递给相关的task。在tekton中定义workspace的用途有以下几点: 存储输入和/或输出在task之间共享数据secret认证的挂载点ConfigMap中保存的配置的挂载点…

阿里中间件——diamond

一、前言 最近工作不忙闲来无事&#xff0c;仔细分析了公司整个项目架构&#xff0c;发现用到了很多阿里巴巴集团开源的框架&#xff0c;今天要介绍的是中间件diamond. 二、diamond学习笔记 1、diamond简介 diamond是一个管理持久配置&#xff08;持久配置是指配置数据会持久化…

全球热门剪辑软件大搜罗

如果你要为你的视频进行配音那肯定离不开音频剪辑软件&#xff0c;现在有不少音频剪辑软件免费版本就可以实现我们并不复杂的音频剪辑操作。这次我就给你分享几款能提高剪辑效率的音频剪辑工具。 1.福晰音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ …

研究生考试报名照片要求解读及被拒原因分析

全国硕士研究生考试报名近年来热度不减&#xff0c;一般在每年九月下旬开始&#xff0c;往往这个时候我们就要开始准备考研证件照了。但是有很多朋友手册考研可能会因为各种问题导致考研证件照不符合要求&#xff0c;那么今天报名电子照助手就带大家了解一下目前考研报名照片的…

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

关联比赛: 2021第二届云原生编程挑战赛2&#xff1a;实现一个柔性集群调度机制 参赛心得 历时快两个月的第二届云原生编程挑战赛结束了&#xff0c;作为第一次参赛的萌新&#xff0c;拿下了28名的成绩&#xff0c;与第一名差了19万分&#xff0c;因为赛制时间太长&#xff0c…

计算机毕业设计选题推荐-作品分享交流平台(摄影、绘画、书法)-Java/Python项目实战(亮点:分享作品到微博、浏览历史、数据可视化)

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

局域网一套键鼠控制两台电脑(台式机和笔记本)

服务端&#xff08;有键盘和鼠标的电脑作为服务端&#xff09; 下载软件 分享文件&#xff1a;BarrierSetup-2.3.3.exe 链接&#xff1a;https://pan.xunlei.com/s/VO66rAZkzxTxVm-0QRCJ33mMA1?pwd4jde# 配置服务端 一&#xff0c; 二&#xff0c; 客户端屏幕名称一定要和…

yolo txt格式转coco json格式

yolo txt格式转coco json格式 **问题背景&#xff1a;**下载coco128数据集&#xff0c;使用yolov5模型进行推理并使用pycocotools.cocoeval 对预测结果进行精度计算。 coco128 下载地址&#xff1a;https://tianchi.aliyun.com/dataset/108650 解压缩cocozip之后可以看到如下的…

全面掌握信息架构:数字化转型的最佳实践与应用指南

在全球化和信息化高度发展的今天&#xff0c;企业正面临前所未有的挑战与机遇 数字化转型已成为各大企业保持竞争力的必由之路&#xff0c;而成功的数字化转型离不开稳健且灵活的信息架构。《信息架构&#xff1a;商业智能&分析与元数据管理参考模型》正是一本为企业提供全…

数学建模笔记—— 主成分分析(PCA)

数学建模笔记—— 主成分分析 主成分分析1. 基本原理1.1 主成分分析方法1.2 数据降维1.3 主成分分析原理1.4 主成分分析思想 2. PCA的计算步骤3. 典型例题4. 主成分分析说明5. python代码实现 主成分分析 1. 基本原理 在实际问题研究中,多变量问题是经常会遇到的。变量太多,无…

Java中的类加载与卸载机制详解

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载和类卸载机制是Java运行时环境的重要组成部分。理解类的加载与卸载不仅有助于深入掌握JVM的运行原理&#xff0c;还可以帮助开发者优化程序性能&#xff0c;特别是在内存管理和应用程序生命周期管理中起到关键作用…

《零散知识点 · Kafka 知识拓展》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

基于单片机的人脸识别的智能门禁系统设计

文章目录 前言资料获取设计介绍功能介绍设计清单核心代码具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等…