Struts入門例項
在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>
相關文章
- Struts2中一個簡單的入門例項
- TypeScript入門例項TypeScript
- Websocet 入門例項Web
- SoapUI入門例項UI
- Flutter 入門例項Flutter
- Kafka入門例項Kafka
- React 入門例項教程React
- ActiveMQ 入門及例項MQ
- opengl簡單入門例項
- Django+MySQL 例項入門DjangoMySql
- Vue專案入門例項Vue
- React入門學習例項React
- Jquery入門及例項一jQuery
- MyBatis基於Maven入門例項MyBatisMaven
- Web Components 入門例項教程Web
- React 入門-寫個 TodoList 例項React
- React 入門最好的例項-TodoListReact
- 【Oracle】ASM例項安裝入門OracleASM
- Shell程式設計入門例項程式設計
- struts2入門
- Python——astroplan庫入門例項(二)PythonAST
- .Net平臺下ActiveMQ入門例項MQ
- 【Akka】Akka入門程式設計例項程式設計
- Struts入門初步知識
- Struts快速入門(二) (轉)
- Struts快速入門(三) (轉)
- Struts快速入門(四) (轉)
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- 雲容器例項服務入門必讀
- Python入門基礎知識例項,Python
- 超級簡單入門vuex 小例項Vue
- iOS架構入門 - MVC模式例項演示iOS架構MVC模式
- vue 快速入門的三個小例項Vue
- vue快速入門的三個小例項Vue
- 學習React入門最好的例項-TodoListReact
- PHP框架Yii系列教程(一):入門例項PHP框架
- Struts2基礎入門
- react-dva學習 --- 用例項來入門React