Struts2之環境配置

在學習struts2之前,首先我們要明白使用struts2的目的是什么?它能給我們帶來什么樣的好處?

設計目標

? ? Struts設計的第一目標就是使MVC模式應用于web程序設計。在這兒MVC模式的好處就不在提了。

技術優勢

? ? Struts2有兩方面的技術優勢,一是所有的Struts2應用程序都是基于client/server HTTP交換協議,The?JavaServlet API揭示了Java?Servlet只是Java API的一個很小子集,這樣我們可以在業務邏輯部分使用功能強大的Java語言進行程序設計。

? ? 二是提供了對MVC的一個清晰的實現,這一實現包含了很多參與對所以請求進行處理的關鍵組件,如:攔截器、OGNL表達式語言、堆棧。

?

? ? 因為struts2有這樣目標,并且有這樣的優勢,所以,這是我們學習struts2的理由,下面,我們在深入剖析一下struts的工作原理。

工作原理

? ? Suruts2的工作原理可以用下面這張圖來描述,下面我們分步驟介紹一下每一步的核心內容

  

  看到上面的解釋,如果有困惑,先不用著急,我們先做一個實例,通過實例來理解上面的解釋,我想這是對于初學者最佳的學習路線,好了,下面我就帶領大家一到進入Struts2的世界。

  所謂工欲善其事必先利其器,我們需要先把Struts2的配置jar文件下載好,以便接下來的開發使用,進入Struts官網,下載你需要的Struts版本,這里我們用到的是struts-2.3.16.1,下載好Struts版本,解壓,關于jar包的管理,個人建議,大家將我們經常使用的jar文件,統一分類保存在一個位置,這樣方便我們后續進行jar的引用,我們知道eclipse為我提供的有一個User libraries,我們可以添加自己的libraries來管理我們的jar文件。

  下載好我們的Struts,下面我們需要下載一個Tomcat服務器,用來部署我們的Struts項目,這里需要說明的時,安裝Tomcat之前必須安裝JAVA jdk,否則將會出現安裝不成功提示,還有一點需要說明的是,Tomcat這里建議大家安裝解壓版本,方便我們的接下來myEclipse的集成,做好這些準備工作,下面我們就可以開始我們第一個Struts2項目開發了。

  打開我們的myEclipse,將我們剛剛安裝好的Tomcat服務器集成上,點擊myEclipse上方的Window--》preferences:

  

  配置好Tomcat,下面創建一個Helloword工程,將我們的jar文件導入,這里教大家一個小技巧,這樣以后我們再導入jar文件時就會方便很多,具體操作如下:

  

  

  

  導入jar文件后,我們需要配置一些我們的Struts2環境,打開我們的工程WebRoot下的WEB-INF,找到web.xml,添加Struts2的基本配置信息:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

  配置好我們的web.xml,下面添加我們的Struts.xml文件,這個文件如何編寫呢?答案很簡單,打開我們的Struts解壓文件,找到apps下的struts2-blank,解壓該文件,解壓后找到struts2-blank\WEB-INF\classes下的struts.xml,將這個文件拷貝到我們的工程src目錄下,到這里關于Struts開發環境的配置基本完成,下面我們就一起編寫一個簡單的Helloword,開啟我們的Struts2學習之旅。

  我們的Action文件:

public class Helloword {public String helloword(){return "success";}
}

  我們的Struts配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!--    <constant name="struts.enable.DynamicMethodInvocation" value="false" />-->
<!--     設是否為調試模式 -->
<!--    <constant name="struts.devMode" value="true" />--><!--    <package name="default" namespace="/" extends="struts-default">--><!--         默認訪問文件 -->
<!--        <default-action-ref name="index" />--><!--         出錯處理文件 -->
<!--        <global-results>-->
<!--            <result name="error">/error.jsp</result>-->
<!--        </global-results>--><!--         錯誤類型 -->
<!--        <global-exception-mappings>-->
<!--            <exception-mapping exception="java.lang.Exception" result="error"/>-->
<!--        </global-exception-mappings>--><!--         訪問控制 -->
<!--        <action name="index">-->
<!--            <result type="redirectAction">-->
<!--                <param name="actionName">HelloWorld</param>-->
<!--                <param name="namespace">/example</param>-->
<!--            </result>-->
<!--        </action>-->
<!--    </package>--><!--    <include file="example.xml"/>--><package name="default" namespace="/" extends="struts-default"><action name="helloword" class="com.edu.action.Helloword" method="helloword"><result name="success">/index.jsp</result></action></package></struts>

  最終的目錄結構:

  

  到這里我們的入坑篇就為大家介紹完畢,后續內容持續更新中。。。

轉載于:https://www.cnblogs.com/AndroidJotting/p/6490645.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372817.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql數據庫備份shell_mysql數據庫備份shell腳本分享

#!/bin/bash#2020年04月27日15:56:21#auto backup mysql db#by author www.cnbugs.com########################SQL_DB"$*"SQL_USR"backup"SQL_PWD"123456"SQL_CMD"/usr/bin/mysqldump"SQL_DIR"/data/backup/date %F"if [ $…

懶惰的JSF Primefaces數據表分頁–第1部分

今天&#xff0c;我們將使用帶有視圖范圍的托管bean的惰性列表進行JSF數據表分頁。 這些單詞/表達式是什么意思&#xff1f; 如今&#xff0c;有幾個JSF框架為數據表提供現成的分頁&#xff0c;列排序器和其他功能。 今天&#xff0c;我們將使用Primefaces數據表。 通常&#…

java 動態增加定時任務

直接上代碼 import org.apache.tools.ant.util.DateUtils; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory;import java.util.Calendar; import…

基于JavaFX的SimpleDateFormat演示程序

對于使用Java Date進行格式化的新手甚至對于使用Java Date進行格式化的有經驗的Java開發人員而言&#xff0c;可能有些棘手的事情是使用SimpleDateFormat規范日期/時間格式。 SimpleDateFormat的基于類級別的Javadoc的文檔非常詳盡&#xff0c;涵蓋了表示日期/時間的各個組成部…

mysql中預定義常量_PHP預定義常量

這些常量在 PHP 的內核中定義。它包含 PHP、Zend 引擎和 SAPI 模塊。PHP_VERSION (string)PHP_OS (string)PHP_EOL (string)自 PHP 4.3.10 和 PHP 5.0.2 起可用PHP_INT_MAX (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用PHP_INT_SIZE (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用D…

iOS與H5交互

前提&#xff1a;在iOS控制器中加載UIWebView&#xff0c;設置代理&#xff0c;遵守UIWebViewDelegate協議。 一、iOS調用JS方法 通過iOS調用JS代碼實現起來比較方便直接調用UIWebView的方法- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script…

cocos2dx 3.x 蒙板 遮罩 點擊圓功能

//注冊觸摸EventListenerTouchOneByOne *listener EventListenerTouchOneByOne::create();listener->onTouchBegan CC_CALLBACK_2(HelloWorld::onTouchBegan,this);listener->onTouchMoved CC_CALLBACK_2(HelloWorld::onTouchMoved,this);listener->onTouchEnded …

markdownTest

MARKDOWNTEST 11111111111111有一種神奇的語言&#xff0c;它比html還簡單&#xff0c;它巧妙地將內容與格式整合在一起——它就是Markdown有一種神奇的語言&#xff0c;它比html還簡單&#xff0c;它巧妙地將內容與格式整合在一起——它就是Markdown 111111111111111222222222…

python模擬密碼有效性檢測功能_檢查密碼有效性(Django/Python)

我有一個非常小的Django應用程序&#xff0c;主要是為了學習。我使用的是Django提供的內置用戶模型。為了學習這個功能&#xff0c;我創建了一些頁面&#xff0c;這些頁面允許我創建和編輯用戶&#xff0c;而不必進入管理面板。在register頁面允許我非常容易地檢查密碼和電子郵…

教程:Hibernate,JPA –第1部分

這是關于使用Hibernate和JPA的教程的第一部分。 這部分是對JPA和Hibernate的介紹。 第二部分將研究使用Spring ORM組合Spring MVC應用程序以減少創建CRUD應用程序所需的代碼量。 為此&#xff0c;您需要熟悉Maven&#xff0c;JUnit&#xff0c;SQL和關系數據庫。 依存關系 首…

TCP、UDP套接字的數據傳輸

tcp發送數據&#xff1a; 1 #include <sys/types.h> 2 #include <socket.h> 3 ssize_t send(int sockfd,const void *msg,size_t len,int flags); 函數send只能對面向連接的套接字使用。參數sockfd為已經建立好連接的套接字描述符。參數msg指向待發送數據的緩沖區&…

Windows下用PIP安裝scipy出現no lapack/blas resources found

Windows下升級了pandas&#xff0c;但是發現scipy包隨后引用出錯&#xff0c;后來確認需重新安裝scipy&#xff0c; 在用PIP安裝scipy出現no lapack/blas resources found的錯誤&#xff0c;具體原因可參考 這里。 后來找到一種簡便的解決方案&#xff0c;只要在網站 Unofficia…

Aleri –復雜事件處理

Sybase的Aleri流媒體平臺是CEP市場中最受歡迎的產品之一。 它在Sybase的交易平臺RAP版本中使用&#xff0c;該版本在資本市場中廣泛用于管理投資組合中的頭寸。 今天&#xff0c;在這個由多個部分組成的系列文章的第一個部分中&#xff0c;我希望提供Aleri平臺的概述&#xff0…

python版本回退_Python爬蟲之BeautifulSoup解析之路

上一篇分享了正則表達式的使用&#xff0c;相信大家對正則也已經有了一定的了解。它可以針對任意字符串做任何的匹配并提取所需信息。但是我們爬蟲基本上解析的都是html或者xml結構的內容&#xff0c;而非任意字符串。正則表達式雖然很強大靈活&#xff0c;但是對于html這樣結構…

0615 團隊第二階段貢獻

0615 團隊第二階段貢獻 列志華http://www.cnblogs.com/liezhihua/ 26% 組長 黃柏堂 http://www.cnblogs.com/huang123/ 22% 團隊 韓麒麟 http://www.cnblogs.com/hanqilin/ 26% 團隊 王俊杰 http://www.cnblogs.com/wangjunjie123/ 28%團隊posted on 2016…

WebStorm 運行Rect Native 項目

今天教大家如何直接使用WebStorm這個IDE直接完成編碼運行項目工作.這樣就可以不用打開Xcode了. 1.首先點擊WebStorm右上方的下拉箭頭彈出的Edit Configurations.... 2.然后會進入一個配置頁面.點擊左上方的.在彈出的列表中選中npm.如圖. 3.在右邊的配置框中,先選擇Command為hel…

python編程比賽_用Python編程分析4W場球賽后,2018世界杯冠軍竟是…

比賽已經開始&#xff0c;我們不妨用 Python 來對參賽隊伍的實力情況進行分析&#xff0c;并大膽的預測下本屆世界杯的奪冠熱門球隊吧&#xff01;通過數據分析&#xff0c;可以發現很多有趣的結果&#xff0c;比如&#xff1a;找出哪些隊伍是首次進入世界杯的黑馬隊伍找出2018…

GlassFish 3.1.2充滿了MOXy(EclipseLink JAXB)

我非常高興地宣布&#xff0c; EclipseLink JAXB&#xff08;MOXy&#xff09;現在是GlassFish 3.1.2中的JAXB&#xff08; JSR-222 &#xff09;提供程序。 我要感謝EclipseLink和GlassFish提交者為實現這一目標付出的??辛勤工作。 在本文中&#xff0c;我將介紹如何利用MOX…

夢斷代碼閱讀筆記03

讀完《夢斷代碼(Dream In Code)》樣書&#xff0c;我感覺心情有點沉重&#xff0c;Chandler項目的結局&#xff0c;它失敗了&#xff0c;它成了眾多失敗軟件項目中的一個。這個結局讓那個我感受到軟件實在是太難了&#xff0c;我覺得當初選這個專業可能到最后只是一個碼農。但是…

Java訪問權限的范圍

二、下面用表格來展示四種修飾符的訪問權限范圍&#xff1a; 同一個類 同一個包 不同包的子類 不同包的非子類 public √ √ √ √ protected √ √ √ 默認(default) √ √ private √ 轉載于:https://www.cnblogs.com/jianxin-lilang/p/6…