1. 环境搭建:从JDK到IDE的全套配置
1.1 JDK安装与版本选择
Java开发的第一步就是安装JDK(Java Development Kit)。目前主流版本有Java 8、11和17三个LTS版本,对于初学者建议选择Java 11这个平衡了稳定性和新特性的版本。以Windows系统为例,具体安装步骤:
- 访问Oracle官网下载JDK安装包(注意选择对应操作系统版本)
- 运行安装程序,记住安装路径(默认路径通常是C:\Program Files\Java\jdk-11.x.x)
- 配置环境变量:
- 新建JAVA_HOME变量,值为JDK安装路径
- 在Path变量中添加%JAVA_HOME%\bin
- 验证安装:命令行执行
java -version和javac -version
注意:如果使用Maven等构建工具,建议同时设置JAVA_HOME环境变量,很多工具会依赖这个变量。
1.2 IDE的选择与配置
对于Java Web开发,主流IDE有:
- IntelliJ IDEA(推荐):社区版免费,功能强大
- Eclipse:老牌IDE,插件丰富
- VS Code:轻量级,需要配置Java插件
以IntelliJ IDEA为例,首次使用需要配置:
- JDK路径(File > Project Structure > SDKs)
- Maven配置(File > Settings > Build > Build Tools > Maven)
- 编码设置为UTF-8(File > Settings > Editor > File Encodings)
1.3 构建工具:Maven基础配置
Maven是Java项目管理的标准工具,安装步骤:
- 下载Maven二进制包并解压
- 配置环境变量:
- MAVEN_HOME指向Maven解压目录
- Path中添加%MAVEN_HOME%\bin
- 验证:
mvn -v
配置本地仓库(settings.xml):
xml复制<localRepository>D:\maven_repository</localRepository>
2. 项目创建与基础结构
2.1 创建Maven Web项目
在IntelliJ IDEA中:
- File > New > Project
- 选择Maven,勾选"Create from archetype"
- 选择"maven-archetype-webapp"
- 填写GroupId(如com.example)和ArtifactId(如demo)
- 完成创建
项目基础结构:
code复制src
├── main
│ ├── java # Java源代码
│ ├── resources # 配置文件
│ └── webapp # Web资源
│ ├── WEB-INF
│ └── index.jsp
pom.xml # 项目配置文件
2.2 完善项目结构
手动添加缺失的目录:
- 右键src/main > New > Directory
- 创建java和resources目录
- 标记目录类型:
- 右键java > Mark Directory as > Sources Root
- 右键resources > Mark Directory as > Resources Root
2.3 初始pom.xml配置
基础依赖配置示例:
xml复制<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- JSP API -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
3. 服务器配置与部署
3.1 Tomcat服务器安装
- 下载Tomcat 9.x(与Java 11兼容性好)
- 解压到指定目录(如D:\apache-tomcat-9.0.x)
- 配置环境变量CATALINA_HOME指向Tomcat目录
- 启动:运行bin/startup.bat
- 验证:访问http://localhost:8080
3.2 IDEA集成Tomcat
- Run > Edit Configurations
- 添加Tomcat Server > Local
- 配置:
- Application server:选择Tomcat安装目录
- Deployment:添加Artifact(选择war exploded)
- 设置上下文路径(如/demo)
3.3 热部署配置
在Tomcat配置中:
- 设置"On 'Update' action"为"Redeploy"
- 设置"On frame deactivation"为"Update classes and resources"
- 勾选"Update resources"和"Update classes and resources"
这样修改代码后只需保存(Ctrl+S)就会自动重新加载。
4. 第一个Servlet程序
4.1 创建Servlet类
在src/main/java下创建包结构com.example.web,然后创建HelloServlet:
java复制@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
4.2 配置web.xml
虽然使用注解方式更简单,但了解传统配置方式也很重要:
xml复制<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.web.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
4.3 运行与测试
- 启动Tomcat服务器
- 访问http://localhost:8080/demo/hello
- 应该看到"Hello, World!"的输出
5. JSP基础与实践
5.1 创建第一个JSP页面
在webapp目录下创建welcome.jsp:
jsp复制<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome, <%= request.getParameter("name") %></h1>
<p>Current time: <%= new java.util.Date() %></p>
</body>
</html>
访问方式:http://localhost:8080/demo/welcome.jsp?name=John
5.2 JSP与Servlet交互
创建FormServlet处理表单提交:
java复制@WebServlet("/submit")
public class FormServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String username = req.getParameter("username");
req.setAttribute("user", username);
req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
}
}
对应的表单页面form.jsp:
jsp复制<form action="submit" method="post">
<input type="text" name="username">
<button type="submit">Submit</button>
</form>
6. 数据库连接与操作
6.1 MySQL环境准备
- 安装MySQL Community Server
- 创建数据库和用户:
sql复制CREATE DATABASE javademo;
CREATE USER 'javauser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON javademo.* TO 'javauser'@'localhost';
6.2 JDBC基础配置
添加MySQL驱动到pom.xml:
xml复制<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
创建数据库连接工具类:
java复制public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/javademo";
private static final String USER = "javauser";
private static final String PASSWORD = "password";
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
6.3 实现CRUD操作
创建UserDao示例:
java复制public class UserDao {
public void addUser(String username) {
String sql = "INSERT INTO users(username) VALUES(?)";
try (Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, username);
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<String> getAllUsers() {
List<String> users = new ArrayList<>();
String sql = "SELECT username FROM users";
try (Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
users.add(rs.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
}
7. 常见问题与解决方案
7.1 编码问题
症状:中文显示乱码
解决方案:
- 确保所有JSP页面有
<%@ page contentType="text/html;charset=UTF-8" %> - 在Servlet中添加:
java复制req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
- 检查数据库连接字符串是否包含字符集参数:
code复制jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8
7.2 404错误排查
可能原因及解决方案:
- 上下文路径错误 - 检查应用部署的上下文路径
- URL拼写错误 - 确认Servlet注解或web.xml配置的url-pattern
- 未正确部署 - 检查Tomcat的webapps目录下是否有项目
- 类未找到 - 检查Servlet类是否在正确包路径下
7.3 数据库连接问题
常见错误:
- 时区问题 - 连接字符串添加
serverTimezone=Asia/Shanghai - SSL警告 - 添加
useSSL=false - 驱动类未找到 - 确保mysql-connector-java依赖已正确添加
完整连接字符串示例:
code复制jdbc:mysql://localhost:3306/javademo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
8. 项目优化建议
8.1 使用连接池
替换原生JDBC连接方式,引入HikariCP:
xml复制<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
配置连接池:
java复制HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/javademo");
config.setUsername("javauser");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource ds = new HikariDataSource(config);
8.2 引入日志框架
添加Logback日志支持:
xml复制<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
配置logback.xml:
xml复制<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
8.3 项目结构优化
建议的包结构:
code复制com.example
├── config # 配置类
├── controller # 控制器
├── service # 业务逻辑
├── dao # 数据访问
├── model # 数据模型
├── util # 工具类
└── filter # 过滤器
9. 下一步学习建议
- 学习Spring框架(Spring Boot是很好的起点)
- 掌握MyBatis或Hibernate等ORM框架
- 了解RESTful API设计
- 学习前端技术(HTML/CSS/JavaScript)与后端交互
- 掌握项目构建和部署(Jenkins/Docker等)
- 学习单元测试(JUnit/Mockito)
在实际开发中,我发现很多初学者容易在环境配置阶段就放弃。其实只要按照步骤一步步来,遇到问题时善用搜索引擎(错误信息+关键词),大部分问题都能找到解决方案。Java Web开发的学习曲线虽然有点陡峭,但一旦掌握了基础,后面的进步会越来越快。