第5部分:Servlets与Java Servlet API——编写一个简单的Web应用程序
本材料是“企业发展导论”系列的一部分。如果您已经掌握了如何编写将文本输出到控制台的Java应用程序,但还未尝试过创建第一个Web应用程序,那么本文将是一个很好的起点。在这里,我们将深入了解Servlets,并通过编写一个简单的Web应用程序,帮助您快速上手。通过这个应用程序,您可以向朋友展示成果,而无需让他们下载任何额外的Java程序。如果您对Web编程的基础知识还不熟悉,建议先阅读“企业开发导论”系列的第一篇文章。
什么是Servlet
首先,我们需要了解什么是Servlet以及其重要性。Java Servlet API是一种标准化的接口,专为在服务器端实现而设计,能够通过请求-响应的方式与客户端进行交互。简单来说,Servlet是一个Java类,它接收客户端的请求并返回响应。Servlet是构建客户端-服务器架构的核心组件之一。
在本系列的前几篇文章中,我们已经讨论过Servlet的基本概念。本篇文章将通过实际代码演示,帮助您更好地理解Servlet的工作原理。
创建Web应用程序需要什么
在开始编写代码之前,您需要确保开发环境已经准备就绪。以下是创建Web应用程序的基本需求:
- Java开发环境:确保安装了JDK。
- Maven:用于管理项目依赖和构建工具。
- Java Servlet API:用于开发Servlet应用程序。
- Web服务器:如Apache Tomcat,用于部署和运行Servlet。
创建第一个Web应用程序
当一切准备就绪后,我们可以开始创建一个简单的Maven项目。如果您对Maven不熟悉,可以参考之前的文章获取相关知识。
编写HttpServlet类
要创建一个Servlet,您需要继承HttpServlet类。在类的顶部,我们使用@WebServlet注解将Servlet映射到特定的路径,例如/hello。需要注意的是,@WebServlet注解是从Java Servlet API 3.0版本开始引入的,因此在较早的示例中,Servlet映射通常通过XML文件完成。
以下是一个简单的Servlet示例代码:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("Hello, World!
");
}
}
在这个示例中,我们重写了doGet()方法来处理GET请求。通过HttpServletRequest对象,我们可以获取请求的详细信息,而通过HttpServletResponse对象,我们可以设置响应内容和必要的头信息。
处理参数和会话
为了让我们的Servlet更加智能,我们可以添加对请求参数和会话的支持。例如,我们可以实现一个访问计数器,并根据用户提供的参数进行个性化问候。
以下是改进后的代码示例:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
HttpSession session = req.getSession();
Integer visitCounter = (Integer) session.getAttribute("visitCounter");
if (visitCounter == null) {
visitCounter = 0;
}
visitCounter++;
session.setAttribute("visitCounter", visitCounter);
String username = req.getParameter("username");
if (username == null) {
username = "匿名用户";
} resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("你好, " + username + "!
");
out.println("这是您第 " + visitCounter + " 次访问。
");
}
}
在这个示例中,我们使用HttpSession对象来跟踪用户的访问次数。如果用户未提供username参数,则默认使用“匿名用户”进行问候。
处理404错误
为了避免根路径返回404错误,我们可以创建一个新的Servlet,将根路径的请求重定向到/hello路径。以下是实现代码:
使用转发
@WebServlet("/")
public class RootServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
getServletContext().getRequestDispatcher("/hello").forward(req, resp);
}
}
使用重定向
@WebServlet("/")
public class RootServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.sendRedirect(req.getContextPath() + "/hello");
}
}
转发和重定向的主要区别在于:转发是在服务器端完成的,客户端不会感知路径的变化;而重定向则会通知客户端访问新的路径。
总结
通过本文,您学习了Servlet的基本概念,并创建了一个简单的Web应用程序。我们还探讨了如何处理请求参数、会话以及404错误。希望这些内容能够帮助您更好地理解Java Web开发的基础知识。在接下来的文章中,我们将继续深入探讨更多高级主题。
原文链接: https://javarush.com/en/groups/posts/en.2529.part-5-servlets-java-servlet-api-writing-a-simple-web-application
最新文章
- 为什么要使用Google My Business Reviews API
- 2025年7月第2周GitHub热门API推荐:rustfs/rustfs、pocketbase/pocketbase、smallcloudai/refact
- API设计的首要原则
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- 实测:阿里云百炼上线「全周期 MCP 服务」,AI 工具一站式托管
- 什么是GitHubActions实现开源项目的自动化
- 使用 Whisper API 通过设备麦克风把语音转录为文本
- 如何通过Password Manager(密码管理器)的API调用保护账户安全
- 如何为现代图形API编写渲染器 | Clean Rinse
- Python + BaiduTransAPI :快速检索千篇英文文献(附源码)
- Nexus API 的入门教程与使用指南
- API 规范:设计与最佳实践