Struts入門執行個體

來源:互聯網
上載者:User

      在MyEcplise開發第一個Struts程式相當簡單,它已經整合了Struts了,所以不需要自己手動載入Struts的庫,只需要給建立的Web Project執行【MyEclipse】-【Project capabilities】-【add Struts capabilities】就自動會在src目錄下添加Struts.xml,並且web.xml也會自動做出相應的修改改。

今天的執行個體是一個圖書查詢系統執行個體,查詢介面是querybooks.jsp,結果顯示頁面是result.jsp,錯誤頁面時error.jsp。action是QueryAction.java

1.QueryAction.java

只要是action類就必定有execute() 方法,在execute() 方法中我們設定了action的跳轉頁面,比如在下面的代碼中我們知道如果根據傳進來的參數能夠找到匹配的圖書的話,就會從action跳轉到return
"result";介面,而如果沒有圖書與查詢條件相匹配,就會跳轉到return
"error"; 這裡的result和error並不是真正的介面,只是一個欄位而已,不過我們將在後面的Struts.xml中配置這些欄位所對應的跳轉介面。

package chapter7.action;import java.util.Map;import chapter7.dao.BookDAO;public class QueryAction {    private String name;    private Map<String,Integer> result;        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Map<String, Integer> getResult() {        return result;    }    public void setResult(Map<String, Integer> result) {        this.result = result;    }    //action類必定有一個execute()方法。    public String execute() throws Exception    {        try        {            BookDAO book=new BookDAO();            Map<String, Integer> books=book.getBooks(name);            setResult(books);            return "result";        }        catch(Exception e)        {            return "error";        }    }}
2.BookDAO.java

這裡類是用於查詢圖書的。首先有一個靜態方法給Map<String,Integer> books
賦了初值,然後通過getBooks(String name)方法在books 對象中尋找是否有與name匹配的圖書,如果有則將其存放都專門的查詢結果對象中,最後返回這個對象,如果沒有返回空。

package chapter7.dao;import java.util.LinkedHashMap;import java.util.Map;public class BookDAO {    //定義一個儲存圖書資訊的靜態Map對象。    private static Map<String,Integer> books=new LinkedHashMap<String,Integer>();    static    {        books.put("J2EE整合詳解與典型案例",79);        books.put("資料庫系統概念",69);        books.put("C++程式設計",59);        books.put("ASP.NET開發",49);    }    public static Map<String, Integer> getBooks(String name) {    //定義一個儲存查詢結果的books對象            Map<String,Integer> books=new LinkedHashMap<String,Integer>();        //對BookDAO.books的對象進行逐個掃描,如果對象中有匹配查詢條件的,則儲存到books對象中。        for(Map.Entry<String, Integer>entry:BookDAO.books.entrySet())        {            if(entry.getKey().toLowerCase().contains(name.toLowerCase()))                books.put(entry.getKey(), entry.getValue());        }        return books;    }    }
3.Struts.xml的配置

這個配置未見定義了result和error所對應的跳轉頁面分別是webroot根目錄下的result.jsp和error.jsp這兩個頁面。namespace="/" 這個很重要,如果沒有配置正確會出現錯誤,具體錯誤與解決方案參考另外一票部落格:http://blog.csdn.net/xw13106209/archive/2010/09/14/5884278.aspx
.

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>    <package name="Struts2" namespace="/" extends="struts-default">        <action name="query"  class="chapter7.action.QueryAction">            <result name="result">/result.jsp</result>            <result name="error">/error.jsp</result>        </action></package></struts> 

4.result.jsp頁面

簡單的jsp頁面。用於顯示查詢結果。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>查詢結果介面</title>   </head>  <body>  <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>

在result.jsp中我們可以發現使用request.getAttrbute()方法可以獲得在QueryAction中setResult(books)方法中所儲存的books對象的內容。

5.querybook.jsp介面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>        <title>查詢圖書資訊</title>      </head>   <body>  <s:form action="query">  <s:textfield label="書名" name="name"/>  <s:submit value="查詢"/>  </s:form>    </body></html>

從上面<s:form
action="query">可以看出querybook.jsp介面的下一個跳轉action是query。而在Struts.xml中也正好定義了名為query的action,如Struts.xml設定所示,其中不僅定義了一個名為query的action,並且指出該action所對應的類是QueryAction,在result標籤中定義了“result”和“error”兩種情況所需要跳轉的頁面。

6.error.jsp介面
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">     <title>My JSP 'error.jsp' starting page</title>  </head>   <body>   ERROR page. <br>  </body></html>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.