JSP(JavaServer Pages)是一种基于Java技术的服务器端编程技术,用于创建动态网页。下面我将为你提供一个简单的JSP在线书店源码示例,并解释其中的基础概念和相关优势。
以下是一个简单的JSP在线书店源码示例,包括书籍列表展示和搜索功能。
OnlineBookStore/
├── WEB-INF/
│ ├── classes/
│ │ └── com/
│ │ └── example/
│ │ ├── Book.java
│ │ ├── BookDAO.java
│ │ └── SearchServlet.java
│ └── web.xml
├── index.jsp
└── search.jsp
package com.example;
public class Book {
private String title;
private String author;
private double price;
// Getters and Setters
}
package com.example;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BookDAO {
private Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstore", "username", "password");
}
public List<Book> getAllBooks() {
List<Book> books = new ArrayList<>();
try (Connection conn = getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM books")) {
while (rs.next()) {
Book book = new Book();
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setPrice(rs.getDouble("price"));
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
public List<Book> searchBooks(String keyword) {
List<Book> books = new ArrayList<>();
try (Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM books WHERE title LIKE ? OR author LIKE ?")) {
pstmt.setString(1, "%" + keyword + "%");
pstmt.setString(2, "%" + keyword + "%");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Book book = new Book();
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setPrice(rs.getDouble("price"));
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
}
package com.example;
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 java.io.IOException;
import java.util.List;
@WebServlet("/search")
public class SearchServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String keyword = request.getParameter("keyword");
BookDAO bookDAO = new BookDAO();
List<Book> books = bookDAO.searchBooks(keyword);
request.setAttribute("books", books);
request.getRequestDispatcher("search.jsp").forward(request, response);
}
}
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>SearchServlet</servlet-name>
<servlet-class>com.example.SearchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SearchServlet</servlet-name>
<url-pattern>/search</url-pattern>
</servlet-mapping>
</web-app>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Online Book Store</title>
</head>
<body>
<h1>Welcome to Online Book Store</h1>
<form action="search" method="get">
<input type="text" name="keyword" placeholder="Search by title or author">
<button type="submit">Search</button>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Search Results</title>
</head>
<body>
<h1>Search Results</h1>
<c:if test="${empty books}">
<p>No books found.</p>
</c:if>
<c:if test="${not empty books}">
<ul>
<c:forEach items="${books}" var="book">
<li>${book.title} by ${book.author} - $${book.price}</li>
</c:forEach>
</ul>
</c:if>
</body>
</html>
希望这个示例能帮助你理解JSP在线书店的基本实现和相关概念。如果有更多具体问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云