完成了struts2的HelloWrold程序后稍加修改,就可以完成一个图书查询系统。
1.2.1 首先理解用Map实现的查询功能
- package com.Action;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.LinkedHashMap;
- import java.util.Map;
- public class MapTest {
- /**
- * @param:用map实现图书查询功能
- * @author:cheleiyan
- * @date:2010-5-14
- */
- private static Map<String, Integer> books = new LinkedHashMap<String, Integer>();
- // 在静态块中对Map对象进行初始化,Map的key值表示书名,value值表示书的价格
- static {
- books.put("java编程思想", 98);
- books.put("java核心技术", 98);
- books.put("javaweb技术大全", 87);
- books.put("JavaScript", 56);
- books.put("J2me手机编程", 45);
- books.put("嵌入式开发", 32);
- books.put("软件测试", 42);
- books.put("大学英语", 23);
- }
- // 根据书名进行模糊查询,返回用于保存结果的Map对象
- public Map<String, Integer> getBooks(String bookName) {
- // 定义一个保存查询结果的books对象
- Map<String, Integer> resultbooks = new LinkedHashMap<String, Integer>();
- //
- for (Map.Entry<String, Integer> entry : MapTest.books.entrySet()) {
- if (entry.getKey().toLowerCase().contains(bookName.toLowerCase())) {
- resultbooks.put(entry.getKey(), entry.getValue());
- }
- }
- return resultbooks;
- }
- //用来获得书名的方法
- public static String getbookName() throws IOException {
- InputStreamReader isr = new InputStreamReader(System.in);
- BufferedReader br = new BufferedReader(isr);
- String bookName = br.readLine();
- return bookName;
- }
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- MapTest maptest = new MapTest();
- while (true) {
- System.out.println("请输入查询的书名:");
- //得到用户输入的书名
- String querybookName = getbookName();
- if(querybookName.equals("")) break;
- //调用getBooks方法进行查询
- Map<String, Integer> resultbooks = maptest.getBooks(querybookName);
- //循环打出查询结果
- for (Map.Entry<String, Integer> entry : resultbooks.entrySet()) {
- System.out.println("书名:" + entry.getKey());
- System.out.println("价钱:" + entry.getValue());
- }
- }
- }
- }
1.2.2理解了以上代码,对HelloWorld程序修改就能实现图书查询,把上面代码改成数据处理类代码(BookDAO代码如下)
- package com.Action;
- import java.util.LinkedHashMap;
- import java.util.Map;
- public class BookDAO {
- //保存图书信息的静态Map对象
- private static Map<String,Integer> books=new LinkedHashMap<String, Integer>();
- //在静态块中对Map对象进行初始化,Map的key值表示书名,value值表示书的价格
- static
- {
- books.put("java编程思想", 98);
- books.put("java核心技术",98);
- books.put("javaweb技术大全",87);
- books.put("JavaScript",56);
- books.put("J2me手机编程",45);
- books.put("嵌入式开发",32);
- books.put("软件测试",42);
- books.put("大学英语",23);
- }
- //根据书名进行模糊查询,返回用于保存结果的Map对象
- public Map<String,Integer> getBooks(String bookName)
- {
- //定义一个保存查询结果的books对象
- Map<String,Integer> books=new LinkedHashMap<String, Integer>();
- //
- for(Map.Entry<String, Integer>entry:BookDAO.books.entrySet())
- {
- if(entry.getKey().toLowerCase().contains(bookName.toLowerCase()))
- {
- books.put(entry.getKey(), entry.getValue());
- }
- }
- return books;
- }
- }
1.2.3编写和配置Action类 QueryAction代码如下:
- package com.Action;
- import java.util.Map;
- //ctrl+shift+m可以导入包
- public class QueryAction {
- private String bookName;
- private Map<String,Integer>result;
- //bookName的get方法
- public String getBookName() {
- return bookName;
- }
- //bookName的set方法
- public void setBookName(String bookName) {
- this.bookName = bookName;
- }
- //bookName的get方法
- public Map<String, Integer> getResult() {
- return result;
- }
- //bookName的set方法
- public void setResult(Map<String, Integer> result) {
- this.result = result;
- }
- //
- public String execute()
- {
- BookDAO book=new BookDAO();
- Map<String,Integer> books=book.getBooks(bookName);
- setResult(books);
- return "result";
- }
- }
1.2.4编写输入查询信息querybooks.jsp显示查询结果的result.jsp页面
querybooks.jsp代码
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'querybooks.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
- -->
- </head>
- <body>
- <form action="query" method="POST">
- 书名<input type="text" name="bookName">
- <input type="submit" value="查询">
- </form>
- </body>
- </html>
result.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'result.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
- -->
- </head>
- <body>
- <h1>查询结果</h1>
- <table border=1>
- <tr>
- <td>书名</td>
- <td>价格</td>
- </tr>
- <%
- Map<String,Integer> result=(Map<String,Integer>)request.getAttribute("result");
- for(Map.Entry<String,Integer> entry: result.entrySet())
- {
- %>
- <tr>
- <td><%=entry.getKey() %></td>
- <td><%=entry.getValue() %></td>
- </tr>
- <%
- }
- %>
- </table>
- </body>
- </html>