程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> struts2筆記 - helloworld

struts2筆記 - helloworld

編輯:關於JAVA

可以從Apache Struts 的官方站點(http://struts.apache.org/)下載發布版本,當前最新的版本是2.0.9。下載的版本中包含struts2-core.jar和相關的依賴類庫文件,示例程序,HTML格式的文檔,和全部的源代碼。

1,導入struts2需要的jar文件

commons-logging-1.0.4.jar  日志記錄接口,可以配置選擇使用jdk1.4 log 或者 log4j
freemarker-2.3.8.jar     所有標簽的模板都是用Freemarker編寫
ognl-2.6.11.jar        Objet Graph NavigationLanguage,Struts2表達式的基礎。
struts2-core-2.0.9.jar    struts2框架類庫
xwork-2.0.4.jar        xwork類庫,struts2的基礎

2,配置web.xml文件

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>My Application</display-name>
  <filter>
   <!--配置struts過濾器-->
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>

  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3,配置struts.xml文件

必須要把該文件建立在編譯好的WEB-INF下的classes目下

在myeclipse可以把它新建到src下。src下的所有資源文件等都會在保存時自動編譯到classes目錄

<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <!-- 配置默認的包. -->
   <package name="default" extends="struts-default">

   </package>
</struts>

3,建立頁面文件

Struts2提交一個請求的時候,輸入的數據並沒有直接送給下一個頁面,而是送給了一個你提供的Java類。這種Java類被稱為Action。當 Action執行之後,Struts2會選擇一個結果作為返回,通常情況下是一個JSP頁面,但是也可以是PDF文件,Excel表單或者Java Applet窗口。

這時需要做的是

創建一個JSP頁面來顯示歡迎消息

創建一個Action類來生成歡迎消息

在struts.xml中創建一個配置項來關聯上述的Action和JSP頁面

建立jsp頁面

第一行引入了struts2的標簽庫,在之後的頁面中可以使用s標簽了。這行在幾乎所有的struts2應用的jsp頁面中都會出現

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
   <head>
     <title>Hello World!</title>
   </head>
   <body>
     <s:form action="hello">
     <s:textfield name="name" label="name" />
    </s:form>
   </body>
</html>

創建action類

execute方法用來處理業務操作

import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {

   private String name;
   public String execute() throws Exception {
    return SUCCESS;
   }

   public void setName(String name){
     this.name= name;
   }

   public String getName() {
     return name;
   }
}
配置struts.xml關聯jsp和action

<!DOCTYPE struts PUBLIC  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <package name="tutorial" extends="struts-default">
     <action name="HelloWorld" class="tutorial.HelloWorld">
       <result>/HelloWorld.jsp</result>
     </action>
   </package>
</struts>

工作原理

當浏覽器發送請求 http://localhost:8080/tutorial/HelloWorld.action 的時候,在服務器上發生了如下事件:

服務器接收到對HelloWorld.action的請求,根據web.xml文件中的配置,所有以.action結尾的請求都會被 org.apache.struts2.dispatcher.FilterDispatcher過濾,所以這個請求被發送給 FilterDispatcher,FilterDispatcher是Struts 2 框架的入口點。

Struts 2 框架查找HelloWorld.action對應的Java 類,發現是HelloWorld.java,之後Struts 2 框架實例化了一個HelloWorld類,並且調用了這個類的execute方法。

execute方法設置了message的內容,並且返回SUCCESS。框架卻定返回值SUCCESS,並且找到對應的內容HelloWorld.jsp,並且通知服務器將HelloWorld.jsp作為返回內容。

在HelloWorld.jsp被處理的過程中,<s:property value="message" />標簽的內容被替換為HelloWorld 的getMessage方法調用的結果

根據HelloWorld.jsp內容生成的HTML內容被發回到請求的浏覽器。

結果類型(Result Type)

Action 處理完成之後,會選擇一個結果返回給客戶,這個結果可能是簡單的HTML頁面,JSP頁面,FreeMarker模板,Velocity模板,或者是一個 PDF文旦個或者是更復雜的JasperReports。一個Action可能有幾個可選的結果類型,為了決定到底使用那個結果類型,Action類的 execute方法必須返回一個標記結果類型的字符串。

struts.xml
<action name="Logon" class="tutorial.Logon">
  <result type="redirect-action">Menu</result>
  <result name="input">/tutorial/Logon.jsp</result>
</action>

如果我們輸入了用戶名和密碼,Logon Action會返回“success”。"success"是默認的返回結果,這個時候會使用Menu action作為結果。

如果我們什麼也不輸入,Logon Action 會返回"input", Struts 2會使用Logon.jsp 作為結果返回

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved