实验六666666666

  • 创建一个Java Web项目,并添加MySQL驱动依赖。
  • 在项目中创建一个名为BookServlet的Servlet类,用于处理图书查询请求。
    ​
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    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("/BookServlet")
    public class BookServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            String bookName = request.getParameter("bookName");
    
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database_name", "username", "password");
                String sql = "SELECT * FROM T_BOOK WHERE BOOK_NAME LIKE ?";
                PreparedStatement pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, "%" + bookName + "%");
                ResultSet rs = pstmt.executeQuery();
    
                out.println("<table border='1'>");
                out.println("<tr><th>图书ID</th><th>图书名称</th><th>图书价格</th></tr>");
                while (rs.next()) {
                    out.println("<tr>");
                    out.println("<td>" + rs.getInt("BOOK_ID") + "</td>");
                    out.println("<td>" + rs.getString("BOOK_NAME") + "</td>");
                    out.println("<td>" + rs.getDouble("BOOK_PRICE") + "</td>");
                    out.println("</tr>");
                }
                out.println("</table>");
    
                rs.close();
                pstmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                out.close();
            }
        }
    }
    
    ​

  • 在项目的web.xml文件中配置BookServlet
  • <servlet>
        <servlet-name>BookServlet</servlet-name>
        <servlet-class>com.example.BookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BookServlet</servlet-name>
        <url-pattern>/BookServlet</url-pattern>
    </servlet-mapping>
    

    创建一个HTML文件,用于输入图书名称的模糊资料并提交给Servlet。

  • <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>图书模糊查询</title>
    </head>
    <body>
        <h1>图书模糊查询</h1>
        <form action="BookServlet" method="get">
            <label for="bookName">图书名称:</label>
            <input type="text" id="bookName" name="bookName">
            <input type="submit" value="查询">
        </form>
    </body>
    </html>
    

    然后部署到Java Web服务器上,访问BookServlet页面,输入图书名称的模糊资料,即可在界面下方显示图书信息。

  • 效果图:

我们需要创建一个Java Web项目,并添加Servlet和数据库连接相关的依赖。这里我们使用Maven作为项目管理工具,在pom.xml文件中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
</dependencies>

然后创建一个Servlet类,用于处理图书信息的显示和购物车的操作

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
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("/book")
public class BookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Book> books = getBooks();
        request.setAttribute("books", books);
        request.getRequestDispatcher("/book.jsp").forward(request, response);
    }

    private List<Book> getBooks() {
        List<Book> books = new ArrayList<>();
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC", "root", "password");
            String sql = "SELECT * FROM T_BOOK";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                int bookId = resultSet.getInt("BOOK_ID");
                String bookName = resultSet.getString("BOOK_NAME");
                double bookPrice = resultSet.getDouble("BOOK_PRICE");
                books.add(new Book(bookId, bookName, bookPrice));
            }
            resultSet.close();
            preparedStatement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return books;
    }
}

接下来,我们需要创建一个JSP页面,用于显示图书信息和购物车的内容。以下是book.jsp文件的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
    <h1>图书列表</h1>
    <table border="1">
        <tr>
            <th>图书ID</th>
            <th>图书名称</th>
            <th>图书价格</th>
            <th>操作</th>
        </tr>
        <c:forEach var="book" items="${books}">
            <tr>
                <td>${book.bookId}</td>
                <td>${book.bookName}</td>
                <td>${book.bookPrice}</td>
                <td>
                    <a href="addToCart?bookId=${book.bookId}">添加到购物车</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <br>
    <a href="cart">查看购物车</a>
</body>
</html>

我们需要创建一个Servlet类,用于处理购物车的操作。以下是CartServlet类的代码:

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
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("/cart")
public class CartServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Book> cartItems = getCartItems();
        request.setAttribute("cartItems", cartItems);
        request.getRequestDispatcher("/cart.jsp").forward(request, response);
    }

    private List<Book> getCartItems() {
        List<Book> cartItems = new ArrayList<>();
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC", "root", "password");
            String sql = "SELECT * FROM T_BOOK"; // 这里需要根据实际需求修改SQL语句,以获取购物车中的商品信息
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                int bookId = resultSet.getInt("BOOK_ID");
                String bookName = resultSet.getString("BOOK_NAME");
                double bookPrice = resultSet.getDouble("BOOK_PRICE");
                cartItems.add(new Book(bookId, bookName, bookPrice));
            }
            resultSet.close();
            preparedStatement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cartItems;
    }
}

效果图呈现代码:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>图书信息</title>
</head>
<body>
<p>图书名称:C++</p>
<p>作者:张三</p>
<p>价格:50元</p>
<a href="addToCartServlet?bookId=1">添加到购物车</a>

<h2>购物车</h2>
<!-- 购物车内容显示 -->
<a href="viewCartServlet">查看购物车</a>

<!-- 删除购物车中的书籍链接 -->
<a href="deleteFromCartServlet?bookId=1">从购物车中删除</a>
</body>
</html>

首先,我们需要创建一个Servlet来处理用户登录请求。在这个Servlet中,我们将检查用户的用户名和密码是否正确,如果正确,我们将在session中存储用户信息,并将用户重定向到欢迎页面。

  1. 创建一个名为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) && "123456".equals(password)) {
                HttpSession session = request.getSession();
                session.setAttribute("user", username);
                response.sendRedirect("welcome.jsp");
            } else {
                response.sendRedirect("error.jsp");
            }
        }
    }
    
     
  2. 创建一个名为index.html的文件,用于显示登录表单:
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
        <form action="login" method="post">
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" required><br>
            <label for="password">密码:</label>
            <input type="password" id="password" name="password" required><br>
            <input type="submit" value="登录">
        </form>
    </body>
    </html>
    
     
  3. 创建一个名为welcome.jsp的文件,用于显示欢迎页面:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>欢迎</title>
    </head>
    <body>
        <h1>欢迎,${user}!</h1>
    </body>
    </html>
    
     
  4. 创建一个名为error.jsp的文件,用于显示错误信息:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>错误</title>
    </head>
    <body>
        <h1>用户名或密码错误,请重试!</h1>
        <a href="index.html">返回登录页面</a>
    </body>
    </html>
    

  5. 创建一个名为LoginFilter.java的文件,用于实现过滤器:
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    public class LoginFilter implements Filter {
        private static final long serialVersionUID = 1L;
    
        public void init(FilterConfig filterConfig) throws ServletException {}
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpSession session = httpRequest.getSession(false);
    
            if (session != null && session.getAttribute("user") != null) {
                chain.doFilter(request, response);
            } else {
                response.sendRedirect("index.html");
            }
        }
    

  6. web.xml文件中配置过滤器:
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.example.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值