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

让我详细讲解一下“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(搜索引擎)

基础教程推荐