jsp源码实例4(搜索引擎)

yizhihongxing

让我详细讲解一下“jsp源码实例4(搜索引擎)”的完整攻略。

源码说明

该示例实现了一个简单的搜索引擎,用户可以在搜索框中输入关键词,点击搜索按钮后,将展示包含该关键词的网页列表。源码分为以下几个文件:

  • index.jsp:搜索页面,包括搜索框和搜索结果;
  • search.jsp:搜索结果页面,展示包含关键词的网页列表;
  • WebContent/WEB-INF/db/webdb.mdb:搜索引擎所需要的Access数据库;
  • WebContent/WEB-INF/struts-config.xml:Struts配置文件;
  • WebContent/WEB-INF/classes/cn/edu/hbcit/smms/dao/WebdbDAO.java:DAO层,用于连接数据库;
  • WebContent/WEB-INF/classes/cn/edu/hbcit/smms/service/SearchService.java:Service层,用于调用DAO层,实现业务逻辑;
  • WebContent/WEB-INF/classes/cn/edu/hbcit/smms/action/SearchAction.java:Action层,用于接受用户请求,调用Service层,返回视图。

操作流程

  1. 确保Web服务器已经启动,在浏览器中输入"http://localhost:8080/search/index.jsp";
  2. 在搜索框中输入关键词,例如"Java";
  3. 点击搜索按钮,会跳转到"search.jsp"页面,在该页面中展示包含关键词"Java"的网页列表。

示例说明

1. 查询语句

在"WebdbDAO.java"文件中,使用JDBC连接Access数据库,并执行SQL语句查询数据:

public ArrayList search(String key) {
    ArrayList list = new ArrayList(); 
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String dburl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\Java_Web_Dev\\Web_Database\\webdb.mdb";
        Connection conn = DriverManager.getConnection(dburl);
        Statement stmt = conn.createStatement();
        String sql = "select * from webs where title like '%" + key + "%' or content like '%" + key + "%'";
        ResultSet rs = stmt.executeQuery(sql);
        while(rs.next()) {
            list.add(new Web(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4)));
        }
        rs.close();
        stmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return list;
}

在SQL语句中,使用"%"作为通配符,表示匹配任意字符。其中"like"表示模糊匹配。

2. Struts配置文件

在"struts-config.xml"文件中,配置Action、Service和JSP页面之间的映射关系:

<action path="/search" name="form" scope="request" type="cn.edu.hbcit.smms.action.SearchAction">
    <forward name="success" path="/search/search.jsp" />
</action>

其中,"path"表示Action对应的URL路径,"name"表示FormBean的名称,"type"表示Action类的全限定名,"forward"表示请求转发。

在Action类中,通过调用Service层的方法,在数据库中查询数据,并将查询结果保存到Session中:

SearchService sService = new SearchService();
ArrayList list = sService.search(key);
request.getSession().setAttribute("list", list);

在JSP页面中,通过EL表达式获取Session中的数据,并展示到页面中:

<c:forEach items="${list}" var="web">
    <h3><a href="${web.url}">${web.title}</a></h3>
    <p>${web.content}<p>
</c:forEach>

其中,"items"表示要遍历的集合,"var"表示当前元素的引用,"href"表示超链接,"title"表示页面标题,"content"表示页面内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp源码实例4(搜索引擎) - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • js获取select标签的值且兼容IE与firefox

    为了获取select标签的值且兼容IE与Firefox,我们可以使用JavaScript编写代码。接下来,我将提供一个完整的攻略来帮助您实现这个目标。 获取select标签的值 我们可以使用JavaScript来获取select标签的值,以下是代码实现的步骤: 首先,使用document.getElementById()方法获取到select标签的引用。 然…

    Java 2023年6月15日
    00
  • 浅谈Java包装类型Long的==操作引发的低级bug

    让我来详细讲解一下关于“浅谈Java包装类型Long的==操作引发的低级bug”的攻略。 什么是Java包装类型 Java包装类型是Java针对基本数据类型提供的类型封装。Java中共有八种基本数据类型,分别是byte、short、int、long、float、double、char和boolean。而Java的基本数据类型都不是对象,因此不能参与到Java…

    Java 2023年5月25日
    00
  • Java实现数据连接池Druid举例

    Java实现数据连接池是常见的优化数据库性能的方法,其中Druid是一款深受Java开发者喜爱的开源数据连接池。下面我会为你详细讲解Java实现数据连接池Druid的完整攻略,包括Druid的使用和示例。 1. 引入Druid依赖 Druid是由阿里巴巴开发的一款 Java 数据库连接池,你可以通过添加以下依赖来引入Druid: <dependency…

    Java 2023年5月19日
    00
  • Java通过JNI 调用动态链接库DLL操作

    关于Java通过JNI调用动态链接库DLL的攻略,我来给你详细讲解一下。 1. 环境准备 在开始使用JNI进行Java调用DLL之前,需要确保以下几点: 安装并配置好Java JDK (开发包)和运行时环境(JRE); 安装Visual Studio(Windows平台)或gcc等C/C++编译器(Linux/Unix/macOS平台); 按照平台(Wind…

    Java 2023年5月26日
    00
  • 原生Ajax之全面了解xhr的概念与使用

    原生Ajax之全面了解xhr的概念与使用 什么是Ajax? Ajax是指使用JavaScript、XMLHttpRequest对象、DOM、CSS等技术在不刷新页面的情况下实现异步更新页面数据的一种技术。我们通常使用Ajax来实现动态加载数据、实时交互等功能。 XMLHttpRequest对象 XMLHttpRequest对象是Ajax的核心之一。它是浏览器…

    Java 2023年5月20日
    00
  • Java并发编程之创建线程

    当进行Java并发编程时,创建线程是其中非常重要的一个步骤。本篇攻略将为你详细介绍Java中创建线程的各种方式和技巧,并提供两条实际例子。 一、Java中创建线程的方式 Java中创建线程有以下几种方式: 1. 继承Thread类 此方法需要继承Java中的Thread类,并重写其run()方法来定义线程的行为。 public class MyThread …

    Java 2023年5月23日
    00
  • OpenJDK源码解析之System.out.println详解

    OpenJDK源码解析之System.out.println详解 介绍 在Java中,要输出内容到控制台最常见的方式是使用 System.out.println() 方法。但是,了解该方法的运行机制以及它在底层的实现是非常有必要的。本文将侧重于介绍System.out.println()方法的实现原理,以及在OpenJDK源码中的具体实现。 System.o…

    Java 2023年5月26日
    00
  • Springboot使用Logback实现日志配置与异常记录

    Spring Boot使用Logback实现日志配置与异常记录 介绍 Spring Boot是一款轻量级的应用框架,它提供了很多有用的功能来简化应用开发流程,其中包括了日志记录功能。Logback是一个优秀的日志框架,它可以取代Java标准库的日志框架,并支持通过XML文件配置日志。在这篇教程中,我们将看到如何在Spring Boot应用中使用Logback…

    Java 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部