IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java Web程序设计第12章课后第2题 -> 正文阅读

[大数据]Java Web程序设计第12章课后第2题

  1. 制作一个图书模糊查询界面,输入图书名称的模糊信息,能够显示系统中所有图书的名称和价格,但是页面不刷新,结果在页面下方显示。

代码

Book.java

package chapter12.beans;

public class Book {
    private String id;
    private String name;
    private double price;

    public Book(String id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

BookDao.java

package chapter12.dao;

import chapter12.beans.Book;

import java.sql.*;
import java.util.ArrayList;

public class BookDao {
    public ArrayList<Book> findAllBooks() throws ClassNotFoundException, SQLException {
        // 1、导入驱动jar包
        // 2、注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        // 3、获取数据库的连接对象
        Connection conn = DriverManager.getConnection("你的数据库", "用户名", "密码");
        // 4、定义sql语句
        String sql = "select * from book";
        // 5、获取执行sql语句的对象
        PreparedStatement ps = conn.prepareStatement(sql);
        // 6、执行sql并接收返回结果
        ResultSet rs = ps.executeQuery();
        // 7、处理结果
        ArrayList<Book> books = new ArrayList<>();  // 初始化VO
        while (rs.next()) {
            books.add(new Book(rs.getString(1), rs.getString(2), rs.getDouble(3)));
        }
        // 8、释放资源
        ps.close();
        conn.close();
        return books;
    }
    
    public ArrayList<Book> fuzzyLookupBook(String name) throws ClassNotFoundException, SQLException {
        // 1、导入驱动jar包
        // 2、注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        // 3、获取数据库的连接对象
        Connection conn = DriverManager.getConnection("你的数据库", "用户名", "密码");
        // 4、定义sql语句
        String sql = "select * from book where name like '%" + name + "%'";
        // 5、获取执行sql语句的对象
        PreparedStatement ps = conn.prepareStatement(sql);
        // 6、执行sql并接收返回结果
        ResultSet rs = ps.executeQuery();
        // 7、处理结果
        ArrayList<Book> books = new ArrayList<>();
        while (rs.next()) {
            books.add(new Book(rs.getString(1), rs.getString(2), rs.getDouble(3)));
        }
        // 8、释放资源
        ps.close();
        conn.close();
        return books;
    }
}

fuzzyLookupBookServlet.java

package chapter12.servlet;

import chapter12.beans.Book;
import chapter12.dao.BookDao;

import javax.servlet.ServletContext;
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;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

@WebServlet(name = "fuzzyLookupBookServlet", urlPatterns = {"/fuzzyLookupBookServlet"})
public class fuzzyLookupBookServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        BookDao bookDao = new BookDao();

        try {
            ArrayList<Book> books = bookDao.fuzzyLookupBook(name);
            HttpSession session = request.getSession();
            session.setAttribute("books", books);
            ServletContext application = this.getServletContext();
            application.getRequestDispatcher("/chapter12/12_2/list.jsp").forward(request, response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

search.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>插入数据</title>
    <script src="ajax.js" lang="javascript"></script>
</head>
<body>
<form name="searchForm">
    请输入书名:<input name="name" type="text">
    <input type="button" value="查找" onclick="search()">
</form>
<div id="resultDiv"></div>
</body>
</html>

ajax.js

function search() {
    let name = document.searchForm.name.value
    let xmlHttp = new XMLHttpRequest()  // 建议不要使用ActiveXObject("Msxml2.XMLHTTP")
    let url = `/JavaWebCDUT/fuzzyLookupBookServlet?name=${name}`

    xmlHttp.open("POST", url, true)
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            resultDiv.innerHTML = xmlHttp.responseText
        } else {
            resultDiv.innerHTML += "正在查找,请稍候……"
        }
    }
    xmlHttp.send()
}

list.jsp

<%@ page import="chapter12.dao.BookDao" %>
<%@ page import="chapter12.beans.Book" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    ArrayList<Book> books = (ArrayList<Book>) session.getAttribute("books");
%>
<table>
    <tr>
        <th>图书ID</th>
        <th>图书名称</th>
        <th>图书价格</th>
    </tr>
    <%
        if (books != null) {
            for (Book book : books) {
                out.println(String.format("<tr><td>%s</td><td>%s</td><td>%.2f</td></tr>", book.getId(), book.getName(), book.getPrice()));
            }
        }
    %>
</table>
</body>
</html>
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:24:30  更:2021-11-22 12:26:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:38:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码