5:Servlet程序-Java Web

5.1 Servlet要求

Servlet要求: 为了创建和部署一个Servlet,需要满足以下基本条件:

  • Java环境:Servlet是基于Java的,所以必须在支持Java EE(现在通常称为Jakarta EE)的环境中开发和运行。
  • Servlet API依赖:编写Servlet时,需要包含Servlet API库作为项目的依赖。在Maven项目中,这可以通过添加对应的坐标到pom.xml文件来实现;在非Maven项目中,则需手动将Servlet API JAR文件添加到类路径中。
  • 容器支持:Servlet必须部署在支持Servlet规范的应用服务器或Servlet容器上,如Apache Tomcat、Jetty等。

5.2 创建Servlet

创建Servlet的过程

  1. 新建Servlet类 :创建一个新的Java类,继承自javax.servlet.http.HttpServlet。这个类至少需要重写doGet()和/或doPost()方法以处理HTTP GET和POST请求。
java 复制代码
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyFirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 在这里处理GET请求逻辑
        response.getWriter().println("<h1>Hello from My First Servlet!</h1>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 在这里处理POST请求逻辑
    }
}
  1. 注解配置(可选) :从Servlet 3.0开始,可以使用注解代替web.xml进行配置,例如使用@WebServlet注解直接在Servlet类上指定URL映射。
java 复制代码
@WebServlet("/my-first-servlet")
public class MyFirstServlet extends HttpServlet {
    // ...
}

5.3 第一个Servlet

下面是一个基础Servlet示例,它响应HTTP GET请求并返回简单的HTML内容:

java 复制代码
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        response.getWriter().println("<html><body><h1>Hello, World!</h1></body></html>");
    }
}

当用户访问 http://your-server.com/your-app-context/hello 时,会触发该Servlet并显示 "Hello, World!"。

5.4 Servlet编译

Servlet编译 : 编译Servlet就像编译任何其他Java类一样,使用Java编译器(javac)或其他IDE(如Eclipse、IntelliJ IDEA)的内置编译功能将源代码转换为.class字节码文件。

5.5 Servlet配置

Servlet配置: Servlet可以通过两种方式配置其行为和服务的URL:

  • XML配置(web.xml) :在Web应用的部署描述符web.xml文件中声明Servlet。
xml 复制代码
<servlet>
    <servlet-name>MyFirstServlet</servlet-name>
    <servlet-class>com.example.MyFirstServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyFirstServlet</servlet-name>
    <url-pattern>/my-first-url</url-pattern>
</servlet-mapping>

上述配置表示Servlet类com.example.MyFirstServlet被映射到/my-first-url的HTTP请求上。

  • 注解配置:如前所述,Servlet 3.0及以上版本支持使用注解来替代XML配置。

完成编译和配置后,将编译后的Servlet类及其依赖放入Web应用程序结构的正确位置,并部署到Servlet容器中即可启动并访问Servlet。

相关推荐
云烟成雨TD8 分钟前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
苍何22 分钟前
一手实测 Claude Fable 5,手搓了个 Obsidian 的 Codex 插件
后端
zfoo-framework25 分钟前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java
逍遥德1 小时前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt
云烟成雨TD1 小时前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
weixin_523185321 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
点燃大海1 小时前
SpringAI构建智能体
java·spring boot·spring·springai智能体
xier_ran1 小时前
【infra之路】02_RadixAttention与KV_Cache管理
java·spring boot·spring
swipe1 小时前
做多轮对话 Agent,为什么我建议把短期记忆放到 Redis
后端·面试·llm
黑马师兄1 小时前
RAG混合检索深度解析:让AI真正找到你要的内容
java·人工智能·ai·agent·rag·ai-native