熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

從實例看struts2運行原理

2013-11-23 20:40:10  來源: Java開源技術 

   簡單例子

  先做一個最簡單的struts的例子在浏覽器中請求一個action然後返回一個字符串到jsp頁面上顯示出來

  第一步把struts最低配置的jar包加入的項目中

  commonsloggingjar

  freemarkerjar

  ognljar

  strutscorejar

  xworkjar

  第二步在webxml中加入攔截器配置

  <filter>

  <filtername>struts</filtername>

  <filterclass>orgapachestrutsdispatcherFilterDispatcher</filterclass>

  </filter>

  <filtermapping>

  <filtername>struts</filtername>

  <urlpattern>/*</urlpattern>

  </filtermapping>

  第三步把空的strutsxml配置文件放到項目src下面

  <struts>

  </struts>

  第四部編寫自定義的action類

  package test;

  import comopensymphonyxworkActionSupport;

  public class HelloAction extends ActionSupport {

  private String str;

  public String hello() {

  thisstr = hello!!!;

  return success;

  }

  public String getStr() {

  return str;

  }

  public void setStr(String str) {

  thisstr = str;

  }

  }

  第五步編寫strutsxml配置文件

  <struts>

  <package name=test namespace=/np extends=strutsdefault>

  <action name=hello class=testHelloAction method=hello>

  <result name=success>/hellojsp</result>

  </action>

  </package>

  </struts>

  第六步編寫hellojsp文件

  <%@ page language=java contentType=text/html; charset=UTF pageEncoding=UTF%>

  <%@ taglib prefix=s uri=/strutstags%>

  <!DOCTYPE html PUBLIC //WC//DTD HTML Transitional//EN>

  <html>

  <head>

  <meta httpequiv=ContentType content=text/html; charset=UTF>

  <title>Test</title>

  </head>

  <body>

  <h><s:property value=str/></h>

  </body>

  </html>

  第七步啟動tomcat在浏覽器中訪問

  

  hello 是項目名字

  np 命名空間對應namespace裡面的字符串

  helloaction 其中hello對應action裡面的字符串action表示請求的是一個action

   運行機制

  )客戶端在浏覽器中輸入一個url地址

  )這個url請求通過http協議發送給tomcat

  )tomcat根據url找到對應項目裡面的webxml文件

  )在webxml裡面會發現有struts的配置

  )然後會找到struts對應的strutsxml配置文件

  )根據url解析strutsxml配置文件就會找到對應的class

  )調用完class返回一個字String根據strutsxml返回到對應的jsp

   struts流程

  上圖來源於Struts官方站點是Struts 的整體結構

  一個請求在Struts框架中的處理大概分為以下幾個步驟

  ) 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求

  ) 這個請求經過一系列的過濾器(Filter)

  ) 接著FilterDispatcher被調用FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action

  ) 如果ActionMapper決定需要調用某個ActionFilterDispatcher把請求的處理交給ActionProxy

  ) ActionProxy通過Configuration Manager詢問框架的配置文件找到需要調用的Action類

  ) ActionProxy創建一個ActionInvocation的實例

  ) ActionInvocation實例使用命名模式來調用在調用Action的過程前後涉及到相關攔截器(Intercepter)的調用

  ) 一旦Action執行完畢ActionInvocation負責根據strutsxml中的配置找到對應的返回結果

  Struts的核心就是攔截器Strutsxml中所有的package都要extends=strutsdefault同理與所有的Java類都要extends自Object一樣strutsdefaultxml裡面就是要做以上事情


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28861.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.