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

让我详细讲解一下“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日

相关文章

  • spring data jpa开启批量插入、批量更新的问题解析

    下面我来详细讲解一下“Spring Data JPA 开启批量插入、批量更新的问题解析”的完整攻略。 什么是批量插入、批量更新 批量插入、批量更新是指在一次 SQL 语句中插入或更新多条数据,相比于单条插入或更新操作,批量操作可以大大提高数据库操作效率,减少数据库的 I/O 操作,从而提升应用性能。 如何在 Spring Data JPA 中使用批量插入、批…

    Java 2023年5月20日
    00
  • java 命名空间 命名规则

    Java命名空间是一种将类、变量、常量等命名方式组织起来的机制,以避免名字重复或冲突的问题。Java命名规则定义了变量和函数的命名应该遵循的规则和标准。 Java命名空间 Java中的命名空间是通过包名实现的。在Java中,每个类都必须被封装在一个包中,以避免与其他类的命名冲突。以下是Java命名空间的两个示例: 示例1:同一个包内的两个类名相同 // Fo…

    Java 2023年5月26日
    00
  • Linux CentOS下安装Tomcat9及web项目的部署

    下面我将详细讲解“Linux CentOS下安装Tomcat9及web项目的部署”的完整攻略。首先,假设你已经在CentOS上安装好了Java环境。 安装Tomcat9 下载Tomcat9二进制包 可以在Tomcat官网下载最新版的Tomcat9二进制包:https://tomcat.apache.org/download-90.cgi 解压Tomcat9二…

    Java 2023年5月19日
    00
  • ASP.NET MVC页面重定向简单介绍

    下面我来介绍一下“ASP.NET MVC页面重定向简单介绍”的完整攻略。 一、什么是ASP.NET MVC页面重定向? ASP.NET MVC页面重定向是指在处理Web请求时将用户浏览器重定向到另一个URL的过程。在ASP.NET MVC中,可以使用Redirect和RedirectToAction方法来执行页面重定向。 二、使用Redirect方法进行页面…

    Java 2023年6月15日
    00
  • 详解Java sort()数组排序(升序和降序)

    详解Java sort()数组排序(升序和降序) 什么是sort()数组排序方法? sort()是Java中的数组排序方法,可以用于对各种类型的数组进行排序。sort()实现了快速排序算法(快排),可以按照升序或降序排列数组。 使用sort()方法进行数组升序排列 数字数组排序 以整数数组为例,以下是对整数数组进行升序排列的示例: int[] arr = {…

    Java 2023年5月26日
    00
  • 解决引用slf4j中Logger.info只打印出文字没有数据的问题

    解决slf4j中Logger.info只打印出文字没有数据的问题,需要先了解 slf4j 和logback 原理。 1.了解 slf4j 和logback slf4j slf4j 是一个抽象化的log日志框架,不提供日志的实现,使用者可以根据需要使用具体的实现。 logback logback是slf4j的一个实现,是log4j框架的作者开发的一种新的日志框…

    Java 2023年5月26日
    00
  • java8 如何实现分组计算数量和计算总数

    Java8 提供了很多函数式编程的新特性,其中包括对集合(Collection)的数据处理方式的改进。下面我来介绍一下如何使用 Java8 来实现分组计算数量和计算总数的操作。 分组计算数量 在 Java8 中,我们可以通过 Collectors.groupingBy() 方法来实现对集合进行分组。具体实现方法如下: Map<String, Long&…

    Java 2023年5月26日
    00
  • Java8中方法引用的使用详解

    Java8中方法引用的使用详解 什么是方法引用? Java8中的方法引用是一种新特性,使用方法引用可以更加简洁的定义Lambda表达式。方法引用是指引用已经存在的方法而不是声明一个Lambda表达式来调用该方法。 方法引用的语法 方法引用的语法在箭头函数的基础上添加一个双冒号“::”,语法格式如下: object::instanceMethod ClassN…

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