第一章:JSP简介与基础
1.1 JSP是什么?
JSP(Java Server Pages)是一种动态网页技术,它允许开发者使用Java代码来创建动态网页。JSP页面由HTML和Java代码组成,其中Java代码被放置在特殊的标记内,这些标记由JSP引擎解释执行。
1.2 JSP的工作原理
当用户请求一个JSP页面时,服务器上的JSP引擎会首先将JSP页面转换成Servlet,然后编译成class文件,最后执行Java代码并生成HTML页面返回给用户。
1.3 JSP与Servlet的关系
JSP和Servlet是Java Web开发中紧密相关的两种技术。JSP可以看作是Servlet的一种简化形式,它提供了更方便的标签和表达式来编写动态网页。
第二章:JSP开发环境搭建
2.1 安装Java开发工具包(JDK)
首先,你需要安装Java开发工具包(JDK)。可以从Oracle官方网站下载最新版本的JDK,并按照安装向导进行安装。
2.2 安装Web服务器
接下来,你需要安装一个Web服务器,如Apache Tomcat。可以从Apache官网下载Tomcat,并按照安装向导进行安装。
2.3 配置开发环境
安装完成后,你需要配置环境变量,以便在命令行中运行Java和Tomcat。
第三章:JSP基本语法
3.1 JSP页面结构
一个JSP页面通常由以下部分组成:
<%@ page ...%>:声明页面属性,如编码、导入等。<% ... %>:Java代码块。<%= ... %>:表达式。<%! ... %>:声明变量。<tag ...>:JSP标签。
3.2 JSP内置对象
JSP提供了九个内置对象,如request、response、session等,这些对象可以方便地访问HTTP请求和响应信息。
第四章:JSP常用标签
4.1 <jsp:include>标签
<jsp:include>标签用于在当前页面中包含另一个JSP页面。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Include Example</title>
</head>
<body>
<h1>这是主页面</h1>
<jsp:include page="header.jsp" />
<jsp:include page="footer.jsp" />
</body>
</html>
4.2 <jsp:forward>标签
<jsp:forward>标签用于将请求转发到另一个JSP页面。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Forward Example</title>
</head>
<body>
<h1>这是主页面</h1>
<jsp:forward page="forward.jsp" />
</body>
</html>
第五章:JSP与数据库交互
5.1 JDBC简介
JDBC(Java Database Connectivity)是Java访问数据库的标准API。通过JDBC,你可以轻松地将Java代码与数据库进行交互。
5.2 JSP连接数据库
以下是一个简单的JSP示例,用于连接数据库并执行查询:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Database Example</title>
</head>
<body>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
out.println("Name: " + rs.getString("name"));
out.println("Age: " + rs.getInt("age"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
</body>
</html>
第六章:JSP开发实战
6.1 用户登录系统
以下是一个简单的用户登录系统示例:
- login.jsp:用户输入用户名和密码。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login_check.jsp" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="Login">
</form>
</body>
</html>
- login_check.jsp:验证用户名和密码。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Login Check</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password_db = "root";
conn = DriverManager.getConnection(url, user, password_db);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
out.println("Login successful!");
} else {
out.println("Invalid username or password.");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
</body>
</html>
6.2 商品展示系统
以下是一个简单的商品展示系统示例:
- index.jsp:展示商品列表。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Product List</title>
</head>
<body>
<h1>商品列表</h1>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM products");
while (rs.next()) {
out.println("<div>");
out.println("<h2>" + rs.getString("name") + "</h2>");
out.println("<p>价格:" + rs.getDouble("price") + "元</p>");
out.println("<p>描述:" + rs.getString("description") + "</p>");
out.println("</div>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
</body>
</html>
- product.jsp:展示单个商品详情。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Product Detail</title>
</head>
<body>
<h1>商品详情</h1>
<%
String id = request.getParameter("id");
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM products WHERE id=?");
stmt.setString(1, id);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
out.println("<h2>" + rs.getString("name") + "</h2>");
out.println("<p>价格:" + rs.getDouble("price") + "元</p>");
out.println("<p>描述:" + rs.getString("description") + "</p>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
</body>
</html>
第七章:JSP开发进阶
7.1 JSP标准标签库(JSTL)
JSTL是JSP的一个扩展库,它提供了许多标签,用于简化JSP页面的开发。
7.2 JSP自定义标签
JSP自定义标签允许开发者创建自己的标签,以便在JSP页面中重用代码。
7.3 JSP与Ajax交互
Ajax是一种技术,允许Web页面在不重新加载整个页面的情况下与服务器进行交互。JSP可以与Ajax技术结合,实现更丰富的用户体验。
第八章:总结
通过本章的学习,相信你已经对JSP网页开发有了初步的了解。在实际开发过程中,你需要不断积累经验,掌握更多高级技巧。祝你学习愉快!
