Java Web 基础概念
什么是 Java Web
Java Web 是运用 Java 技术解决 Web 领域相关问题的技术集合。它主要涵盖服务器端的应用,如 Servlet、JSP 以及各种第三方框架。客户端通常通过浏览器访问,不再广泛使用 Java Applet。
以电商网站为例,用户请求到达服务器后,由 Servlet 处理业务逻辑(如验证身份、查询商品),利用 JSP 生成动态 HTML 页面展示给用户。过程中可能结合 Spring 管理依赖,MyBatis 操作数据库。
Java Web 的优势
- 跨平台:基于 Java 语言特性,应用可在不同操作系统运行,降低适配成本。
- 安全性:具备字节码验证和安全管理机制,保障数据与用户安全。
- 多线程:支持并发处理多个用户请求,保持高性能响应。
- 丰富生态:拥有 Spring、MyBatis 等优秀框架,减少重复开发,提升可维护性。
核心概念详解
- B/S 架构:Browser/Server 模式,核心功能在服务器端,客户端仅需浏览器。
- 静态与动态资源:静态资源(HTML/CSS/图片)内容固定;动态资源(JSP/Servlet)根据请求动态生成。
- 数据库:存储管理数据,常用 MySQL、Oracle 等,通过 JDBC 交互。
- HTTP 协议:基于 TCP/IP 的请求 - 响应协议,包含请求行、头、体及响应信息。
- Web 服务器:接收并处理请求,如 Tomcat、Jetty。Tomcat 是常用的 Servlet/JSP 容器。
搭建 Java Web 开发环境
所需软件
- JDK:Java 开发工具包,包含运行时、编译器及核心类库。
- IDE:推荐 IntelliJ IDEA 或 MyEclipse,提供代码编辑、调试及插件支持。
- Tomcat:开源轻量级应用服务器,实现 Servlet/JSP 规范。
- MySQL:流行开源关系型数据库。
- Navicat for MySQL:数据库管理与开发图形化工具。
安装与配置流程
- JDK:下载安装包,配置环境变量
JAVA_HOME 和 Path。验证命令 javac 和 java -version。
- IDE:下载对应版本安装包,完成向导式安装。配置项目 SDK 指向 JDK 路径,按需安装插件。
- Tomcat:解压压缩包至指定目录。修改
conf/server.xml 中的端口号(默认 8080)。运行 bin/startup.bat 启动,浏览器访问 http://localhost:8080 验证。
- MySQL:下载安装程序,设置 root 密码。配置环境变量
MYSQL_HOME 和 Path。命令行测试 mysql -u root -p。
- Navicat:下载安装,激活授权。新建 MySQL 连接,填写主机、端口、用户名和密码,测试连接成功即可。
深入 Java Web 核心技术:Servlet 与 JSP
Servlet 详解
Servlet 是运行在服务器端的 Java 程序,负责处理 HTTP 请求并生成动态内容。它是 Java EE 规范的一部分。
生命周期
- 初始化:加载时调用
init() 方法,仅执行一次。
- 服务:收到请求时调用
service() 方法,分发到 doGet 或 doPost。
- 销毁:服务器关闭时调用
destroy() 方法释放资源。
常用方法
init(ServletConfig config):初始化工作。
service(ServletRequest request, ServletResponse response):处理请求。
doGet/doPost:分别处理 GET 和 POST 请求。
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 探秘
JSP (JavaServer Pages) 允许将 Java 代码嵌入 HTML,本质是编译为 Servlet。适用于页面展示,常与 Servlet 配合实现 MVC 模式。
语法元素
- 指令:如
<%@ page %> 定义属性,<%@ include %> 包含文件。
- 脚本元素:表达式
<%= %> 输出结果,脚本段 <% %> 嵌入代码,声明 <%! %> 定义变量方法。
- 动作:如
<jsp:forward> 转发请求,<jsp:include> 包含资源。
内置对象
request / response:请求与响应对象。
session / 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
代码实现
login.jsp:登录表单页面
<%@ 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>
LoginServlet.java:处理登录逻辑
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);
} {
request.setAttribute(, );
request.getRequestDispatcher().forward(request, response);
}
}
}
success.jsp:登录成功页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>Login Success</title></head>
<body>
<h2>Welcome, <%= session.getAttribute("username") %>!</h2>
<p>Login successful.</p>
</body>
</html>