日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

Struts2框架詳解

來源:程序員人生   發(fā)布時間:2014-09-25 03:54:37 閱讀次數(shù):3750次

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

  1. 動作-Actions

  2. 攔截器-Interceptors

  3. 值棧/OGNL

  4. 結果/結果類型

  5. 視圖技術

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


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

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

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

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

  2. 該過濾器調度的要求和確定適當?shù)膭幼鳌?/p>

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

  4. 選擇的動作執(zhí)行,執(zhí)行所請求的操作。

  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


創(chuàng)建動作類(Action Class):

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

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類將創(chuàng)建一個對象并調用execute方法來響應用戶的操作。執(zhí)行業(yè)務邏輯里面的execute方法,并最終返回字符串常量。簡單地說,為每個URL你必須執(zhí)行一個動作類,或者可以直接使用這個類的名稱作為操作名,也可以映射到一些其他的名稱使用struts.xml文件,如下圖所示。

創(chuàng)建視圖(View)

我們需要一個JSP提交最后的消息,這個頁面會使用在Struts 2框架中預定義的動作時,這將會發(fā)生在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()

接下來創(chuàng)建一個主頁面:

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

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

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

一、發(fā)現(xiàn)問題

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

二、驗證

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

三、原因

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

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

四、修改

為了使項目默認部署到tomcat安裝目錄下的webapps中,show view―>servers―>找到需要修改的tomcat―>右擊 ①停止eclipse內的Tomcat服務器(stop) ②刪除該容器中部署的項目(add and remove) ③清除該容器相關數(shù)據(jù)(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類和它的執(zhí)行方法使用struts.xml文件。當用戶點擊“提交”按鈕,它會導致Struts2框架運行的執(zhí)行方法定義在其中,HelloWorldAction類和方法的返回值的基礎上,將相應的視圖選擇和呈現(xiàn)的一個響應。

配置文件

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

<?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,因為我們正在努力開發(fā)環(huán)境,我們需要看到一些有用的日志消息。然后,我們定義了一個包叫做 helloworld. 當你想要將動作類放入其中時創(chuàng)建一個包是有用的。在我們的例子中,我們的action命名為“hello”,這是相應的URL是/hello.action和備份為HelloWorldAction.class.HelloWorldAction.class中execute方法是時運行的URL的方法/hello.action被調用. 如果execute方法返回"success", 然后我們把用戶引到HelloWorld.jsp.

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

在web.xm文件中,我們定義一個過濾器org.apache.struts2.dispatcher.FilterDispatcher. web.xml文件需要創(chuàng)建WEB-INF文件夾下的WebContent。 Eclipse在創(chuàng)建項目時已經創(chuàng)建了一個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 /*)

啟用詳細的日志:

您可以啟用完整的日志記錄功能,通過創(chuàng)建工作和Struts2同時創(chuàng)建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,F(xiàn)INE,F(xiàn)INER,F(xiàn)INEST或ALL。
就是這樣。我們已經準備好來運行我們的Hello World應用程序使用Struts 2框架。

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

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

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

版本過期如圖:

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

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




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品久久久久久久免费大片 | 欧美日韩亚洲国内综合网 | 青青草国产精品 | 爱爱视频免费看 | 亚洲高清视频在线观看 | 国产精品福利在线 | 在线欧美 | 亚洲20p | 在线播放国产精品 | 欧美又大粗又爽又黄大片视频 | 92久久 | 久久久91| 欧美亚洲一二三 | 一级视频在线观看 | www.男人天堂.com | 亚洲a v网站| 国产又爽又黄免费视频 | 久久久久久久国产 | 91久久久久久久一区二区 | 91一区二区三区 | 亚洲精品在线观看网站 | 国内在线视频 | 国产精品去看片 | 久久一本到 | 亚洲永久精品国产 | 麻豆网址 | 日韩色av | 日本福利在线观看 | 在线h片 | 日韩一区二区在线免费观看 | 欧美不卡激情三级在线观看 | 国产区在线观看 | 国产精品美女 | 亚洲免费在线观看视频 | 波多野结衣中文字幕久久 | 成人高清av | 久久久美女视频 | 国产一区二区三区 在线 | 91精品国产综合久久久久久丝袜 | 人人爱av| 国产一区福利 |