多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java Servlet 教程 原文:http://zetcode.com/java/servlet/ Java Servlet 教程展示了如何在 Java 中创建简单的 servlet。 我们使用嵌入式 Jetty 服务器。 ## Java Servlet Servlet 是响应网络请求的 Java 类。 这主要是一个 HTTP 请求。 Java servlet 用于创建 Web 应用。 它们在 servlet 容器(例如 Tomcat 或 Jetty)中运行。 现代 Java Web 开发使用在 servlet 之上构建的框架。 例如,Spring 或 Vaadin 框架使用 servlet。 `javax.servlet`和`javax.servlet.http`包提供用于编写​​servlet 的接口和类。 ## Java Servlet 示例 在下面的示例中,我们使用`@WebServlet`注解创建 Java Servlet。 或者,可以在`web.xml`文件中创建映射。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ HelloServlet.java │ ├───resources │ └───webapp │ index.html └───test └───java ``` 这是项目结构。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>helloservlet</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>12</maven.compiler.source> <maven.compiler.target>12</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.14.v20181114</version> </plugin> </plugins> </build> </project> ``` 这是 Maven POM 文件。 `javax.servlet-api`提供 Servlet API。 `provided`范围使依赖项在编译时可用,并指示其在运行时已可用。 已包含在 Servlet 容器(如 Jetty)中。 `maven-war-plugin`负责收集 Web 应用的所有工件依赖项,类和资源,并将它们打包到 Web 应用存档中。 `jetty-maven-plugin`允许我们与`mvn jetty:run`一起运行嵌入式 Jetty 服务器。 `com/zetcode/HelloServlet.java` ```java package com.zetcode; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "HelloServlet", urlPatterns = {"/hello"}) public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/plain;charset=UTF-8"); var out = response.getOutputStream(); out.print("Hello there from Servlet"); } } ``` `HelloServlet`将一条简单的文本消息返回给客户端。 ```java @WebServlet(name = "HelloServlet", urlPatterns = {"/hello"}) ``` Java 类用`@WebServlet`注解修饰。 它映射到`hello` URL 模式。 ```java @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { ``` GET 请求调用`doGet()`方法。 该方法接收`HttpServletRequest`和`HttpServletResponse`对象。 ```java response.setContentType("text/plain;charset=UTF-8"); ``` Servlet 以纯文本格式发送输出数据,并且数据的编码设置为 UTF-8。 ```java var out = response.getOutputStream(); ``` 通过`getOutputStream()`方法,我们获得了 servlet 输出流。 注意,我们不关闭输出流。 这是容器的任务。 ```java out.print("Hello there from Servlet"); ``` 我们使用`print()`方法编写一条短信。 `webapp/index.html` ```java <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home page</title> </head> <body> <p> This is home page. Call <a href="/hello">HelloServlet</a> </p> </body> </html> ``` 在主页中,我们有一个调用 servlet 的链接。 ```java $ mvn jetty:run ``` 我们运行嵌入式 Jetty 服务器,并将浏览器导航到`localhost:8080`。 在本教程中,我们展示了如何使用嵌入式 Jetty 服务器创建一个简单的 Java Servlet。 您可能也对以下相关教程感兴趣: [Java 套接字教程](/java/socket/)和 [Java 教程](/lang/java/)。 列出[所有 Java 教程](/all/#java)。