让我详细讲解一下“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层,返回视图。
操作流程
- 确保Web服务器已经启动,在浏览器中输入"http://localhost:8080/search/index.jsp";
- 在搜索框中输入关键词,例如"Java";
- 点击搜索按钮,会跳转到"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(搜索引擎)
- Jmeter BeanShell 内置变量vars、props、prev的使用详解 2023-06-10
- java – org.springframework.jdbc.BadSqlGrammarException:StatementCallback;糟糕的SQL语法 2023-11-02
- Windows下RabbitMQ安装及配置详解 2023-02-11
- Java 流处理之收集器详解 2023-05-18
- Java实现平铺列表(List)互转树形(Tree)结构 2023-03-31
- JAVA中split函数的常见用法实例 2023-03-11
- 深入了解Spring的事务传播机制 2023-06-02
- Zend Studio (eclipse)使用速度优化方法 2023-12-27
- Java创建型设计模式之建造者模式详解 2023-07-15
- java – Tomcat 8中DB2的Log4j jdbc appender 2023-11-03