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

news2024/9/22 15:43:56

文章目录

  • 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 {
    @Override
    protected 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();
        }
    }

    @Override
    protected 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 {
    
        @GetMapping
        public 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 {

    @GetMapping
    public 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 {

    @GetMapping
    public 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;
    
        @Override
        public Class<? extends TemplateModel> getModelClass() {
            return ApplicationModel.class;
        }
    
        public interface ApplicationModel extends TemplateModel {
            @ModelDescriptors.AsString
            String 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 {
    
        @Override
        public 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 {
    @Override
    public 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 {
    @Override
    public 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 {
    
        @Get
        public 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.RatpackServer
    
    RatpackServer.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.RatpackServer

import static ratpack.server.ServerBuilder.ratpack;

ratpack { serverSpec ->
    serverSpec.handlers(chain -> chain.get({ ctx -> ctx.render("Hello, Ratpack!") }))
}.start()

10.3. 示例代码

import ratpack.server.RatpackServer

import static ratpack.server.ServerBuilder.ratpack;

ratpack { serverSpec ->
    serverSpec.handlers(chain -> chain.get({ ctx -> ctx.render("Hello, Ratpack!") }))
}.start()

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

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

相关文章

[产品管理-4]:NPDP新产品开发 - 2 - 制定企业经营战略目标的结构化方法与工具

目录 一、SWOT分析工具 1、SWOT分析工具概述 2、SWOT分析与企业战略目标制定的关系 3、SWOT分析在企业战略目标制定中的应用实例 4、SWOT分析的改进与应用建议 二、P E S T L E 分 析&#xff1a;外部环境分析 2.1 概述 1. 政治因素&#xff08;Political&#xff09; …

2024第三届大学生算法大赛 真题训练3 解题报告 | 珂学家

前言 题解 C. 洞穴探险 题目描述&#xff1a; 简单来说&#xff0c;就是 在一个无向图中&#xff0c;两个点之间关系 (存在多条简单路径&#xff0c;一条简单路径&#xff0c;不联通&#xff09;, 请判断两点之间的关系。 思路: 并查集 tarjan割边 对于通联和非联通&#x…

Java学习Day41:手刃青背龙!(spring框架之事务)

1.spring事务概念 在数据层和业务层保证一系列数据库操作原子性成功失败&#xff01;&#xff08;相比事务可以在业务层开启&#xff09; 1.事务定义&#xff1a;关键字&#xff1a;Transactional&#xff08;一般写在接口上&#xff09; 2.事务管理器&#xff1a;在JdbcCon…

vscode ssh离线远程连接ubuntu调试

遇见问题&#xff1a; 1 ssh连接上无法启动服务器的虚拟环境&#xff1b; 2 ssh连接上启动服务器的虚拟环境后无法打断点&#xff1b; 对于问题需要参考下面连接安装python和debugy的插件拓展&#xff0c;并且配置json文件link。VSCode - 离线安装扩展python插件教程_vscode…

web 自动化测试框架 TestCafe 安装和入门使用

一、TestCafe 介绍&#xff1a; TestCafe 是一款基于 Node.js 的端到端 Web 自动化测试框架&#xff0c;支持 TypeScript 或 JavaScript 来编写测试用例&#xff0c;运行用例&#xff0c;并生成自动化测试报告。 TestCafe 兼容 Windows&#xff0c;MacOS 和 Linux 系统&#x…

基于C++实现(控制台+界面)通讯录管理系统

个人通讯录管理系统 问题描述&#xff1a; 主要内容&#xff1a; 个人通讯录是记录了同学&#xff08;包含一起上学的学校名称&#xff09;、同事&#xff08;包含共事的单位名称&#xff09;、朋友&#xff08;包含认识的地点&#xff09;、亲戚&#xff08;包含称呼&#…

国家级|加速科技成功入选国家级专精特新“小巨人”企业

9月6日&#xff0c;浙江省通过的第六批专精特新“小巨人”企业名单在省经济和信息化厅官网完成公示&#xff0c;经过严格评审&#xff0c;杭州加速科技有限公司正式获国家级专精特新“小巨人”企业认定。 专精特新”小巨人”企业具备专业化、精细化、特色化、新颖化特征&#x…

“我”变小了但更强了!英伟达发布最新大语言模型压缩技术,无损性能且提升数倍!

1. 摘要 英伟达研究团队提出了一份全面报告&#xff0c;详细介绍了如何使用剪枝和蒸馏技术将Llama 3.1 8B和Mistral NeMo 12B模型分别压缩至4B和8B参数。他们探索了两种不同的剪枝策略&#xff1a;深度剪枝和联合隐藏/注意力/MLP&#xff08;宽度&#xff09;剪枝。 研究人员…

Adoptium Temurin JDK 的下载

在当今的软件开发领域&#xff0c;Java 无疑是最受欢迎和广泛使用的编程语言之一。Java 开发工具包&#xff08;JDK&#xff09;是任何 Java 开发者不可或缺的工具&#xff0c;它提供了编译、调试和运行 Java 应用程序所需的所有工具和库。Eclipse Temurin 是一个流行的开源 JD…

网络药理学:分子动力学模拟入门、gromacs能量最小化

推荐视频 B站&#xff1a; 讲的都是有效的概论&#xff0c;其中关于分子动力学模拟归纳的三步挺有用的。 B站&#xff1a;也没有讲清楚关于分子对接后得到的文件该如何处理。 B站&#xff1a; 需要用的是autodock vina&#xff0c;而且走过一遍up主之前分子对接的视频才比较…

mysql笔记3(数据库、表和数据的基础操作)

文章目录 一、数据库的基础操作1. 显示所有的仓库(数据库)2. 创建数据库注意(命名规范)&#xff1a; 3. 删除数据库4. 查看创建数据库的SQL5. 创建数据库时跟随字符编码6. 修改数据库的字符编码 二、表的基础操作1. 引入表的思维2. 引用数据库3. 查看该数据库下面的表4. 创建表…

终端安全如何防护?一文为你揭晓答案!

终端安全防护是确保组织内部网络及其连接设备免受威胁的关键措施。 以下是终端安全防护的一些核心方法&#xff1a; 1. 资产管理与识别 摸清家底&#xff1a;识别所有连接到网络的终端设备及其状态&#xff0c;包括硬件和软件配置。 资产分类&#xff1a;确定哪些资产最为关…

华三(H3C)HDM服务器硬件监控指标解读

在当今日益复杂的IT环境中&#xff0c;服务器的稳定运行对于保障业务的连续性至关重要。华三&#xff08;H3C&#xff09;作为知名的网络设备供应商&#xff0c;其HDM&#xff08;Hardware Diagnostic Module&#xff09;技术为服务器硬件的监控提供了强有力的支持。监控易作为…

如何使用SSHFS通过SSH挂载远程文件系统?

SHFS&#xff08;SSH 文件系统&#xff09;是一款功能强大的工具&#xff0c;它允许用户通过 SSH 挂载远程文件系统&#xff0c;从而提供一种安全便捷的方式来访问远程文件&#xff0c;就像访问本地文件一样。本文将引导您完成使用 SSHFS 挂载远程文件系统的过程&#xff0c;为…

【自动化与控制系统】SCI一区TOP神刊!最快19天accept、稳定检索!

期刊解析 &#x1f6a9;本 期 期 刊 看 点 &#x1f6a9; 国人发文占比第一&#xff0c;TOP刊 审稿友好&#xff0c;审稿速度快 自引率9.8% 今天小编带来计算机领域SCI快刊的解读&#xff01; 如有相关领域作者有意投稿&#xff0c;可作为重点关注&#xff01; 01 期刊信息…

pytlsd在Win10下编译与使用

下载pytlsd项目,GitHub - iago-suarez/pytlsd: Python transparent bindings for LSD (Line Segment Detector) CMake配置 Windows 10,Visual Studio 2019下编译 Release版本生成文件包括: 测试代码: # -*- coding: utf-8 -*- import cv2 import matplotlib.pyplot as p…

CATH数据库数据下载

CATH数据库提供了多种类型的数据供用户下载,涵盖了蛋白质的结构域分类、同源性分析、功能注释等方面。以下是CATH数据库提供的一些主要数据类型及其解释: http://www.cathdb.info/download 1. 分类数据(Classification Data) 文件:如cath-domain-list.txt内容:包含CATH数…

jvm的各种性能检测工具

1: jvm 的性能诊断工具 1.1.&#xff1a;Jstat 这个的全称是JVM Statistics Monitoring Tool&#xff0c;说白了就是统计jvm的各种指标的&#xff0c;我们这边主要关注内存使用指标&#xff0c;一般我们后面要跟上pid的进程 jstat -gc pid jstat -gcutil pid最终的这些结果命…

教师节特辑:AI绘制的卡通人物,致敬最可爱的人‍

【编号&#xff1a;9】教师节到了&#xff0c;今天我要分享一组由AI绘制的教师节主题卡通人物插画&#xff0c;每一幅都充满了对老师的敬意和爱戴。让我们一起用这些可爱的卡通形象&#xff0c;向辛勤的园丁们致敬&#xff01; &#x1f393;【教师形象】 这…

ES6标准-【一】【学习ES6看这一篇就够了!!】

目录 顶层对象的属性 ES5中的顶层对象 ES6中的顶层对象 数组的解构赋值 默认值 对象的解构赋值 默认值 注意点&#xff1a; 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 ES6中的圆括号问题 不能使用圆括号的情况 变量声明语句 函数参数 赋值语…