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