跳到主要内容 Java Web 开发基础与 Servlet 核心技术 | 极客日志
Java java
Java Web 开发基础与 Servlet 核心技术 Java Web 开发涵盖 Web 应用结构、Servlet 核心技术、HTTP 请求响应处理、会话管理及过滤器监听器使用。内容包括 Servlet 定义分类、Request/Response 对象方法、Session/Cookie 管理、Filter/Listener 机制,以及登录、商品展示等实际场景。掌握这些技术可构建动态网页并处理客户端服务器通信。
月光旅人 发布于 2026/3/30 更新于 2026/4/16 5 浏览Java Web 开发基础与 Servlet 核心技术
学习目标与重点提示
学习目标 :掌握 Java Web 开发的核心概念与 Servlet 技术的使用方法,包括 Web 应用的结构、Servlet 的定义与使用、HTTP 请求与响应的处理、会话管理、过滤器与监听器的使用,学会在实际开发中处理 Web 应用问题。
重点 :Web 应用的结构(目录结构、配置文件)、Servlet 的定义与使用(Servlet 接口、HttpServlet 类、注解配置)、HTTP 请求与响应的处理(Request、Response 对象)、会话管理(Session、Cookie)、过滤器与监听器的使用、Web 开发的实际应用场景。
Web 开发概述
Java Web 开发是用于处理 Web 应用的机制。
Web 开发的定义
定义 :Web 开发是用于处理 Web 应用的机制。
作用 :
实现 Web 应用的开发。
实现客户端与服务器之间的通信。
实现动态网页的生成。
实现 Web 应用的部署与维护。
结论 :Web 开发是用于处理 Web 应用的机制,作用是实现 Web 应用的开发、客户端与服务器之间的通信、动态网页的生成、Web 应用的部署与维护。
Web 应用的结构
定义 :Web 应用的结构是指 Java Web 应用的目录结构。
常用目录 :
webapp:Web 应用的根目录。
WEB-INF:存放 Web 应用的配置文件和类文件。
lib:存放 Web 应用的依赖库。
classes:存放 Web 应用的类文件。
web.xml:Web 应用的配置文件。
结论 :Web 应用的结构是指 Java Web 应用的目录结构,常用目录包括 webapp、WEB-INF、lib、classes、web.xml。
Servlet 核心技术
Servlet 是 Java Web 开发的核心技术。
Servlet 的定义与分类
定义 :Servlet 是用于处理 HTTP 请求与响应的 Java 程序。
分类 :
继承 HttpServlet 类的 Servlet。
实现 Servlet 接口的 Servlet。
常用方法 :
doGet():处理 GET 请求。
doPost():处理 POST 请求。
doPut():处理 PUT 请求。
doDelete():处理 DELETE 请求。
init():初始化 Servlet。
destroy():销毁 Servlet。
示例 :
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
@WebServlet("/hello")
public class {
ServletException, IOException {
response.setContentType( );
response.getWriter();
out.println( );
out.println( );
out.println( );
out.println( );
out.println( );
out.println( );
out.println( );
out.println( );
}
ServletException, IOException {
doGet(request, response);
}
}
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
HelloWorldServlet
extends
HttpServlet
@Override
protected
void
doGet
(HttpServletRequest request, HttpServletResponse response)
throws
"text/html;charset=UTF-8"
PrintWriter
out
=
"<html>"
"<head>"
"<title>Hello World</title>"
"</head>"
"<body>"
"<h1>Hello, World!</h1>"
"</body>"
"</html>"
@Override
protected
void
doPost
(HttpServletRequest request, HttpServletResponse response)
throws
<html > <head > <title > Hello World</title > </head > <body > <h1 > Hello, World!</h1 > </body > </html >
结论 :Servlet 是用于处理 HTTP 请求与响应的 Java 程序,分类包括继承 HttpServlet 类的 Servlet、实现 Servlet 接口的 Servlet。
HTTP 请求与响应的处理 定义 :HTTP 请求与响应的处理是指 Java Web 应用中处理 HTTP 请求与响应的方法。
HttpServletRequest:用于表示 HTTP 请求的对象。
HttpServletResponse:用于表示 HTTP 响应的对象。
HttpServletRequest:
getParameter():获取请求参数。
getParameterValues():获取请求参数数组。
getMethod():获取请求方法。
getRequestURI():获取请求 URI。
getSession():获取会话对象。
HttpServletResponse:
setContentType():设置响应类型。
getWriter():获取输出流。
sendRedirect():重定向到其他页面。
addCookie():添加 Cookie。
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
@WebServlet("/user")
public class UserServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8" );
PrintWriter out = response.getWriter();
out.println("<html>" );
out.println("<head>" );
out.println("<title>User Information</title>" );
out.println("</head>" );
out.println("<body>" );
out.println("<h1>User Information</h1>" );
out.println("<p>Name: " + request.getParameter("name" ) + "</p>" );
out.println("<p>Age: " + request.getParameter("age" ) + "</p>" );
out.println("<p>Email: " + request.getParameter("email" ) + "</p>" );
out.println("</body>" );
out.println("</html>" );
}
@Override
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
<html > <head > <title > User Information</title > </head > <body > <h1 > User Information</h1 > <p > Name: 张三</p > <p > Age: 25</p > <p > Email: [email protected] </p > </body > </html >
结论 :HTTP 请求与响应的处理是指 Java Web 应用中处理 HTTP 请求与响应的方法,常用对象包括 HttpServletRequest、HttpServletResponse。
会话管理
Session 的定义与使用 定义 :Session 是用于表示 Web 应用中会话的对象。
setAttribute():设置会话属性。
getAttribute():获取会话属性。
removeAttribute():移除会话属性。
invalidate():销毁会话。
getMaxInactiveInterval():获取会话的最大不活动时间。
setMaxInactiveInterval():设置会话的最大不活动时间。
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username" );
String password = request.getParameter("password" );
if ("admin" .equals(username) && "123456" .equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username" , username);
response.sendRedirect("/index.jsp" );
} else {
response.sendRedirect("/login.jsp" );
}
}
}
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username" );
if (username != null ) {
response.setContentType("text/html;charset=UTF-8" );
PrintWriter out = response.getWriter();
out.println("<html>" );
out.println("<head>" );
out.println("<title>Index</title>" );
out.println("</head>" );
out.println("<body>" );
out.println("<h1>Welcome, " + username + "!</h1>" );
out.println("<a href=\"/logout\">Logout</a>" );
out.println("</body>" );
out.println("</html>" );
} else {
response.sendRedirect("/login.jsp" );
}
}
}
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("/login.jsp" );
}
}
<html > <head > <title > Login</title > </head > <body > <h1 > Login</h1 > <form action ="/login" method ="post" > <label for ="username" > Username:</label > <input type ="text" name ="username" required > <br > <label for ="password" > Password:</label > <input type ="password" name ="password" required > <br > <input type ="submit" value ="Login" > </form > </body > </html >
<html > <head > <title > Index</title > </head > <body > <h1 > Welcome, admin!</h1 > <a href ="/logout" > Logout</a > </body > </html >
结论 :Session 是用于表示 Web 应用中会话的对象,常用方法包括 setAttribute()、getAttribute()、removeAttribute()、invalidate()、getMaxInactiveInterval()、setMaxInactiveInterval()。
Cookie 的定义与使用 定义 :Cookie 是用于表示 Web 应用中 Cookie 的对象。
getName():获取 Cookie 的名称。
getValue():获取 Cookie 的值。
setValue():设置 Cookie 的值。
getMaxAge():获取 Cookie 的最大存活时间。
setMaxAge():设置 Cookie 的最大存活时间。
setPath():设置 Cookie 的路径。
setDomain():设置 Cookie 的域名。
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
@WebServlet("/cookie")
public class CookieServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8" );
PrintWriter out = response.getWriter();
Cookie[] cookies = request.getCookies();
String username = null ;
if (cookies != null ) {
for (Cookie cookie : cookies) {
if ("username" .equals(cookie.getName())) {
username = cookie.getValue();
break ;
}
}
}
if (username != null ) {
out.println("<html>" );
out.println("<head>" );
out.println("<title>Cookie Example</title>" );
out.println("</head>" );
out.println("<body>" );
out.println("<h1>Welcome, " + username + "!</h1>" );
out.println("<a href=\"/removeCookie\">Remove Cookie</a>" );
out.println("</body>" );
out.println("</html>" );
} else {
Cookie cookie = new Cookie ("username" , "admin" );
cookie.setMaxAge(3600 );
cookie.setPath("/" );
response.addCookie(cookie);
out.println("<html>" );
out.println("<head>" );
out.println("<title>Cookie Example</title>" );
out.println("</head>" );
out.println("<body>" );
out.println("<h1>Welcome, Guest!</h1>" );
out.println("</body>" );
out.println("</html>" );
}
}
@Override
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
@WebServlet("/removeCookie")
public class RemoveCookieServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = new Cookie ("username" , "" );
cookie.setMaxAge(0 );
cookie.setPath("/" );
response.addCookie(cookie);
response.sendRedirect("/cookie" );
}
}
<html > <head > <title > Cookie Example</title > </head > <body > <h1 > Welcome, Guest!</h1 > </body > </html >
<html > <head > <title > Cookie Example</title > </head > <body > <h1 > Welcome, admin!</h1 > <a href ="/removeCookie" > Remove Cookie</a > </body > </html >
结论 :Cookie 是用于表示 Web 应用中 Cookie 的对象,常用方法包括 getName()、getValue()、setValue()、getMaxAge()、setMaxAge()、setPath()、setDomain()。
过滤器与监听器的使用 过滤器与监听器是 Java Web 开发的重要技术。
过滤器的定义与使用 定义 :过滤器是用于处理 HTTP 请求与响应的 Java 程序。
对请求进行过滤。
对响应进行过滤。
对请求与响应进行处理。
doFilter():处理请求与响应。
init():初始化过滤器。
destroy():销毁过滤器。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.*;
@WebFilter("/user/*")
public class UserFilter implements Filter {
@Override
public void init (FilterConfig filterConfig) throws ServletException {
System.out.println("UserFilter 初始化" );
}
@Override
public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html;charset=UTF-8" );
PrintWriter out = response.getWriter();
out.println("<html>" );
out.println("<head>" );
out.println("<title>User Filter</title>" );
out.println("</head>" );
out.println("<body>" );
out.println("<h1>User Filter</h1>" );
chain.doFilter(request, response);
out.println("</body>" );
out.println("</html>" );
}
@Override
public void destroy () {
System.out.println("UserFilter 销毁" );
}
}
<html > <head > <title > User Filter</title > </head > <body > <h1 > User Filter</h1 > User Information <p > Name: 张三</p > <p > Age: 25</p > <p > Email: [email protected] </p > </body > </html >
结论 :过滤器是用于处理 HTTP 请求与响应的 Java 程序,常用方法包括 doFilter()、init()、destroy()。
监听器的定义与使用 定义 :监听器是用于监听 Web 应用中事件的 Java 程序。
监听 ServletContext 事件。
监听 HttpSession 事件。
监听 ServletRequest 事件。
contextInitialized():ServletContext 初始化事件。
contextDestroyed():ServletContext 销毁事件。
sessionCreated():HttpSession 创建事件。
sessionDestroyed():HttpSession 销毁事件。
requestInitialized():ServletRequest 初始化事件。
requestDestroyed():ServletRequest 销毁事件。
import javax.servlet.*;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.*;
import java.io.*;
@WebListener
public class MyListener implements ServletContextListener , HttpSessionListener, ServletRequestListener {
@Override
public void contextInitialized (ServletContextEvent sce) {
System.out.println("ServletContext 初始化" );
}
@Override
public void contextDestroyed (ServletContextEvent sce) {
System.out.println("ServletContext 销毁" );
}
@Override
public void sessionCreated (HttpSessionEvent se) {
System.out.println("HttpSession 创建" );
}
@Override
public void sessionDestroyed (HttpSessionEvent se) {
System.out.println("HttpSession 销毁" );
}
@Override
public void requestInitialized (ServletRequestEvent sre) {
System.out.println("ServletRequest 初始化" );
}
@Override
public void requestDestroyed (ServletRequestEvent sre) {
System.out.println("ServletRequest 销毁" );
}
}
ServletContext 初始化 ServletRequest 初始化 HttpSession 创建 ServletRequest 销毁 HttpSession 销毁 ServletContext 销毁
结论 :监听器是用于监听 Web 应用中事件的 Java 程序,常用方法包括 contextInitialized()、contextDestroyed()、sessionCreated()、sessionDestroyed()、requestInitialized()、requestDestroyed()。
Web 开发的实际应用场景 在实际开发中,Web 开发的应用场景非常广泛,如:
实现用户的登录与登出。
实现商品的展示与购买。
实现订单的管理。
实现博客的发布与管理。
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Product {
private String productId;
private String productName;
private double price;
private int sales;
public Product (String productId, String productName, double price, int sales) {
this .productId = productId;
this .productName = productName;
this .price = price;
this .sales = sales;
}
public String getProductId () { return productId; }
public String getProductName () { return productName; }
public double getPrice () { return price; }
public int getSales () { return sales; }
@Override
public String toString () {
return "Product{" + "productId='" + productId + '\'' + "," + " productName='" + productName + '\'' + ", price=" + price + ", sales=" + sales + '}' ;
}
}
public class ProductService {
public List<Product> getTopSellingProducts (String sql, int topN) {
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false" ;
String username = "root" ;
String password = "123456" ;
List<Product> products = new ArrayList <>();
try {
Class.forName("com.mysql.jdbc.Driver" );
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("数据库连接成功" );
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1 , topN);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String productId = resultSet.getString("product_id" );
String productName = resultSet.getString("product_name" );
double price = resultSet.getDouble("price" );
int sales = resultSet.getInt("sales" );
products.add(new Product (productId, productName, price, sales));
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return products;
}
}
@WebServlet("/products")
public class ProductServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ProductService productService = new ProductService ();
String sql = "SELECT * FROM product ORDER BY sales DESC LIMIT ?" ;
List<Product> topSellingProducts = productService.getTopSellingProducts(sql, 3 );
request.setAttribute("topSellingProducts" , topSellingProducts);
RequestDispatcher dispatcher = request.getRequestDispatcher("/products.jsp" );
dispatcher.forward(request, response);
}
@Override
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Top 3 Selling Products Product ID Product Name Price Sales P004 手表 500.0 200 P005 耳机 300.0 150 P001 手机 1000.0 100
结论 :在实际开发中,Web 开发的应用场景非常广泛,需要根据实际问题选择合适的 Web 开发方法。
总结 本章我们学习了 Java Web 开发基础与 Servlet 核心技术,包括 Web 应用的结构、Servlet 的定义与使用、HTTP 请求与响应的处理、会话管理、过滤器与监听器的使用,学会了在实际开发中处理 Web 应用问题。其中,Web 应用的结构(目录结构、配置文件)、Servlet 的定义与使用(Servlet 接口、HttpServlet 类、注解配置)、HTTP 请求与响应的处理(Request、Response 对象)、会话管理(Session、Cookie)、过滤器与监听器的使用、Web 开发的实际应用场景是本章的重点内容。从下一章开始,我们将学习 Java 的框架使用、开发工具等内容。