Java Web 开发入门:基础概念、环境搭建与 Servlet/JSP 详解
介绍 Java Web 开发基础,涵盖核心概念如 B/S 架构、HTTP 协议及 Web 服务器。详细讲解 JDK、IDE、Tomcat、MySQL 等开发环境的搭建流程。深入解析 Servlet 生命周期、注解配置及 JSP 语法元素。最后通过登录案例演示 Servlet 与 JSP 的交互实践,适合初学者系统学习 Java Web 技术栈。

介绍 Java Web 开发基础,涵盖核心概念如 B/S 架构、HTTP 协议及 Web 服务器。详细讲解 JDK、IDE、Tomcat、MySQL 等开发环境的搭建流程。深入解析 Servlet 生命周期、注解配置及 JSP 语法元素。最后通过登录案例演示 Servlet 与 JSP 的交互实践,适合初学者系统学习 Java Web 技术栈。

Java Web,从本质上来说,是运用 Java 技术来解决 Web 领域相关问题的技术集合。它涵盖了服务器端和客户端两部分的技术应用,不过当前 Java 在客户端的应用已较少使用,而在服务器端的应用则极为丰富,像 Servlet、JSP 以及各种第三方框架等都得到了广泛应用。
Java Web 技术涵盖了多个层面,从底层的 Servlet 和 JSP,到中层的各种框架,如 Spring、Spring MVC、MyBatis 等,再到上层的前端技术,如 HTML、CSS、JavaScript 等,形成了一个完整的技术体系。这些技术相互协作,共同完成了 Web 应用从请求处理、业务逻辑实现到数据展示的全过程。
Servlet 作为 Java Web 应用的基础组件,运行在服务器端,负责接收客户端的 HTTP 请求,处理业务逻辑,并将处理结果返回给客户端。JSP 则是一种用于生成动态 Web 内容的技术,允许将 Java 代码嵌入到 HTML 页面中,使得页面能够根据不同的请求动态生成内容。
以常见的电商网站为例,当用户在浏览器中输入网址并访问电商网站时,浏览器作为客户端向服务器发送请求。服务器端的 Java Web 应用程序接收到请求后,通过 Servlet 来处理业务逻辑,比如验证用户身份、查询商品信息等。然后,利用 JSP 生成动态的 HTML 页面,将商品列表、用户购物车等信息展示给用户。
JAVA_HOME 和 Path。打开命令提示符输入 javac 和 java -version 验证。conf/server.xml 中的端口号(默认 8080)。运行 bin/startup.bat 启动,浏览器访问 http://localhost:8080/ 查看欢迎页面。MYSQL_HOME 和 Path。命令行输入 mysql -u root -p 验证。Servlet 是运行在服务器端的 Java 程序,主要用于处理客户端的 HTTP 请求并生成动态的 Web 内容。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
init() 方法。service() 方法,根据请求类型调用 doGet() 或 doPost()。destroy() 方法释放资源。可以使用 @WebServlet 注解或在 web.xml 文件中配置:
<web-app>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
JSP(JavaServer Pages)允许将 Java 代码嵌入到 HTML 页面中,本质上是 Servlet 的一种变体。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP Example</title>
</head>
<body>
<h1>Welcome to JSP!</h1>
<p>Today is <%= new java.util.Date() %></p>
</body>
</html>
<%@ page %>, <%@ include %>, <%@ taglib %>。<%= %>, 脚本段 <% %>, 声明 <%! %>。<jsp:forward>, <jsp:include>, <jsp:useBean>。包括 request, response, application, out, pageContext, config, page, exception。
通过用户登录案例演示 Servlet 与 JSP 的交互。Servlet 处理业务逻辑,JSP 负责页面展示。
src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── LoginServlet.java
│ └── webapp
│ ├── login.jsp
│ ├── success.jsp
│ └── WEB-INF
│ └── web.xml
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>User Login</title>
</head>
<body>
<h2>User Login</h2>
<form action="login" method="post">
<label for="username">Username:</label><br>
<input type="text" name="username" required><br>
<label for="password">Password:</label><br>
<input type="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
import java.io.IOException;
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 javax.servlet.http.HttpSession;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "admin".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
request.getRequestDispatcher("success.jsp").forward(request, response);
} else {
request.setAttribute("error", "Invalid username or password");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online