多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Struts2框架詳解

Struts2框架詳解

來源:程序員人生   發布時間:2014-09-25 03:54:37 閱讀次數:3742次

在Struts2的Model-View-Controller模式實現以下五個核心組件:

  1. 動作-Actions

  2. 攔截器-Interceptors

  3. 值棧/OGNL

  4. 結果/結果類型

  5. 視圖技術

Struts 2和傳統的MVC框架有些不同,在該框架中的作用的模式,而不是控制器的作用略有不同,雖然有一些重疊。這是Struts的MVC模式的體系結構概述。


上圖描述了Struts2的高層體系結構模型,視圖和控制器。一個Struts2的調度Servlet過濾器和攔截器與控制器實現,該模型實現的動作和視圖的組合的結果類型和結果。值棧和OGNL提供了共同點,其他部件之間的連接和集成。

除了從上述組分中,將有一個特定的信息,涉及到配置。為Web應用程序的配置,以及配置的行動,攔截器,結果等。

基于上述數據圖,可以解釋用戶的請求的生命周期在Struts 2如下所示:

  1. 用戶的請求發送到服務器,用于請求某些資源(即頁面)。

  2. 該過濾器調度的要求和確定適當的動作。

  3. 配置攔截器的功能適用于如驗證,文件上傳等。

  4. 選擇的動作執行,執行所請求的操作。

  5. 同樣,配置攔截器做任何后期處理,如果需要的話。

  6. 最后的結果是由視圖準備,并且將結果返回給用戶。

下載并且解壓struts之后可以把lib目錄下的一下文件復制到我們的項目WEB-INFlib 目錄. 要做到這一點,你可以簡單地將下降到WEB-INFlib文件夾中的所有下列文件。(下面是最小依賴集)

  • commons-fileupload-x.y.z.jar

  • commons-io-x.y.z.jar

  • commons-lang-x.y.jar

  • commons-logging-x.y.z.jar

  • commons-logging-api-x.y.jar

  • freemarker-x.y.z.jar

  • javassist-.xy.z.GA

  • ognl-x.y.z.jar

  • struts2-core-x.y.z.jar

  • xwork-core.x.y.z.jar


創建動作類(Action Class):

Action類是Struts 2的應用程序的關鍵,我們實現了大部分的Action類中的業務邏輯。Action類來響應用戶的操作,當用戶點擊一個URL。 Action類中的一個或多個方法被執行,并返回一個字符串結果。基于結果的值,一個特定的JSP頁面的呈現方式。

package com.tutorialspoint.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

Struts2框架的HelloWorldAction類將創建一個對象并調用execute方法來響應用戶的操作。執行業務邏輯里面的execute方法,并最終返回字符串常量。簡單地說,為每個URL你必須執行一個動作類,或者可以直接使用這個類的名稱作為操作名,也可以映射到一些其他的名稱使用struts.xml文件,如下圖所示。

創建視圖(View)

我們需要一個JSP提交最后的消息,這個頁面會使用在Struts 2框架中預定義的動作時,這將會發生在struts.xml文件中定義的映射

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello World</title> </head> <body> Hello World, <s:property value="name"/> </body> </html>

taglib指令告訴Servlet容器中,這個頁面將使用Struts2標簽,這些標簽之前,將通過s。s:property標簽顯示動作類‘name’的屬性值,是調用HelloWorldAction 類的方法getName()

接下來創建一個主頁面:

我們還需要在WebContent文件夾中創建index.jsp頁面文件。該文件將作為初始動作URL,用戶可以直接點擊告訴Struts2框架調用的HelloWorldAction類定義的方法并渲染HelloWorld.jsp視圖。

這里可能會遇到一個問題:

web項目無法部署到eclipse配置的本地tomcat

一、發現問題

在eclipse中新建Dynamic Web Project,配置好本地的tomcat并寫好代碼后選擇Run on Server,但運行后發現在tomcat的安裝目錄下的webapps并沒有出現所建立的工程名字。

二、驗證

很明顯項目并沒有自動部署到Tomcat的Webapps中而是部署在了別的容器中。在內置瀏覽器中輸入http://localhost:8080/webDemo/login.jsp可正常打開。但在外部瀏覽器上打開http://localhost:8080時確沒有出現所期望的小貓畫面。

三、原因

eclipse不像MyEclipse默認將項目部署到tomcat安裝目錄下的webapps中,而默認部署到工作目錄下

的.metadata.pluginsorg.eclipse.wst.server.core mp1wtpwebapps中,tmp1文件夾里面存放著該項目的信息。

四、修改

為了使項目默認部署到tomcat安裝目錄下的webapps中,show view―>servers―>找到需要修改的tomcat―>右擊 ①停止eclipse內的Tomcat服務器(stop) ②刪除該容器中部署的項目(add and remove) ③清除該容器相關數據(clean) ④打開tomcat的修改界面(open)

⑤找到servers location,選擇第二個(User tomcat Installation) ⑥修改deploy path為webapps ⑦保存關閉

需要說明的是①②③必須操作,否則下面的步驟會被置灰無法操作。


還會遇到另一個錯誤就是在jsp的開始會有JavaWeb:報錯信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

原來Javaweb工程類中沒有添加Tomcat運行時相關類導致。
下面是具體的解決方法:
1、右擊web工程-》屬性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server
2、切換到Java Build Path界面中的Orader and Export,選擇Tomcat。

主頁面的代碼如下(index.jsp):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World From Struts2</h1> <form action="hello"> <label for="name">Please enter your name</label><br/> <input type="text" name="name"/> <input type="submit" value="Say Hello"/> </form> </body> </html>

hello動作定義在上面的視圖文件將被映射到HelloWorldAction類和它的執行方法使用struts.xml文件。當用戶點擊“提交”按鈕,它會導致Struts2框架運行的執行方法定義在其中,HelloWorldAction類和方法的返回值的基礎上,將相應的視圖選擇和呈現的一個響應。

配置文件

我們需要一個映射,以配合URL,HelloWorldAction類(模型),HelloWorld.jsp(視圖)。映射告訴Struts 2框架的類將如何響應用戶的操作(URL),這一類的方法將被執行,在該方法返回的基礎上選擇什么視圖來顯示字符串結果。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute"> <result name="success">/Hello.jsp</result> </action> </package> </struts>

在這里,我們設置struts.devMode為true,因為我們正在努力開發環境,我們需要看到一些有用的日志消息。然后,我們定義了一個包叫做 helloworld. 當你想要將動作類放入其中時創建一個包是有用的。在我們的例子中,我們的action命名為“hello”,這是相應的URL是/hello.action和備份為HelloWorldAction.class.HelloWorldAction.class中execute方法是時運行的URL的方法/hello.action被調用. 如果execute方法返回"success", 然后我們把用戶引到HelloWorld.jsp.

下一步是創建一個web.xml文件這是任何請求發送到Struts2的一個切入點。Struts2的應用程序的入口點,將是一個部署描述符(web.xml)中定義的過濾器。

在web.xm文件中,我們定義一個過濾器org.apache.struts2.dispatcher.FilterDispatcher. web.xml文件需要創建WEB-INF文件夾下的WebContent。 Eclipse在創建項目時已經創建了一個web.xml文件。所以,讓我們只需要修改如下:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Struts 2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <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>

我們已經指定index.jsp是我們主頁的文件。我們已經配置Struts2的過濾器上運行的所有URL (i.e, any url that match the pattern /*)

啟用詳細的日志:

您可以啟用完整的日志記錄功能,通過創建工作和Struts2同時創建logging.properties文件在 WEB-INF/classes 文件,在屬性文件中,請注意以下兩行:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

默認logging.properties指定ConsoleHandler的路由記錄到stdout和也的FileHandler。一個處理程序的日志級別閾值可以設置使用SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST或ALL。
就是這樣。我們已經準備好來運行我們的Hello World應用程序使用Struts 2框架。

下面還有幾個需要注意的信息,最主要的是,出錯以后要看出錯信息,找到原因。現在遇到的問題歸結為兩個原因:

1)配置文件中的書寫錯誤。

2)導包不全面,按照錯誤提示的導包就行。

版本過期如圖:

org.apache.struts2.dispatcher.FilterDispatcher 換成:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久2| 黄色网址免费观看 | 91福利视频免费观看 | 爱爱永久免费视频网站 | jizz中国zz女人18 | 波多洁野衣一二区三区| 成人欧美一区二区三区在线观看 | 岛国片在线播放 | 日本高清中文字幕一区二区三区a | 在线亚洲精品国产成人二区 | 久久精品国产99久久无毒不卡 | 91精品视频网站 | 欧美日韩精品乱国产 | 欧美一卡二卡3卡4卡无卡免费 | 怡红院免费的全部视频国产a | freexx性video18印度| 亚洲片在线 | 中文字幕视频网 | 亚洲国产片高清在线观看 | 国产欧美一区二区三区小说 | 久久优 | 日韩精品视频在线播放 | 亚洲精品日韩在线一区 | www免费视频com | 亚洲一区二区在线 | 亚洲成网站 | 国产精品中文字幕在线观看 | xh98hx国产在线视频 | 国产成人综合精品 | 毛片在线播放观看日本 | 国产一区二区三区日韩欧美 | 国产精品成人一区二区三区 | 国产精品久久久久影院色老大 | 欧美天堂久久 | 波多野结衣视频免费看 | 久久久亚洲天堂 | 波多野结衣免费观看视频 | 日韩精品亚洲一级在线观看 | 欧美性猛交xxxx乱大交丰满 | 欧美性猛交xxxx乱大交蜜桃 | 在线 成人 |