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>
相關文章
- Websocet 入門例項Web
- Flutter 入門例項Flutter
- TypeScript入門例項TypeScript
- SoapUI入門例項UI
- Django+MySQL 例項入門DjangoMySql
- Web Components 入門例項教程Web
- Vue專案入門例項Vue
- opengl簡單入門例項
- 【Oracle】ASM例項安裝入門OracleASM
- MyBatis基於Maven入門例項MyBatisMaven
- React 入門-寫個 TodoList 例項React
- Python——astroplan庫入門例項(二)PythonAST
- Python入門基礎知識例項,Python
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- 雲容器例項服務入門必讀
- iOS架構入門 - MVC模式例項演示iOS架構MVC模式
- 超級簡單入門vuex 小例項Vue
- SpringMVC 框架系列之初識與入門例項SpringMVC框架
- react-dva學習 --- 用例項來入門React
- vue入門筆記體系(一)vue例項Vue筆記
- Python 入門之經典函式例項(二)Python函式
- Struts2框架快速入門筆記框架筆記
- Vue入門指南-01建立vue例項 (快速上手vue)Vue
- Android外掛化快速入門與例項解析(VirtualApk)AndroidAPK
- 24 個例項入門並掌握「Webpack4」(二)Web
- 24 個例項入門並掌握「Webpack4」(三)Web
- 24 個例項入門並掌握「Webpack4」(一)Web
- 【深度學習】--DCGAN從入門到例項應用深度學習
- React入門例項參考阮一峰部落格React
- unity2019 ECS入門例項:建立一個EntityUnity
- Hibernate基於Maven入門例項,與MyBatis比對MavenMyBatis
- [翻譯]返回導向程式設計例項入門程式設計
- Spring Cloud超簡單十分鐘入門例項SpringCloud
- [Python入門]:Python簡單例項100個(入門完整版)Python入門看這個一套搞定!!Python單例
- longing載入中例項
- Struts1入門級程式hello world(解決struts1中文亂碼)
- Java SPI機制總結系列之開發入門例項Java
- vue 快速入門 系列 —— 例項方法(或 property)和靜態方法Vue
- vue 快速入門 系列 —— Vue 例項的初始化過程Vue