1. 程式人生 > >Struts2慢慢學之一

Struts2慢慢學之一

        什麼是Structs2?它就是在Struts1的基礎上演化而來的,是一種MVC模式的框架,其實它的功能很簡單,就是將View和邏輯處理層分開。本人才疏學淺,以前都是用Spring做專案,由於要畢業,所以需要進行轉行(暫且這麼說吧),公司都是用的Structs框架,木有辦法,從頭開始學吧!

       所需軟體-Eclipse、TomCat7.0、Struts-2.3.1.2(原始碼自己下載),下面以具體小專案來說明。

        首先是Struts2的工作原理:首先Tomcat對使用者所輸入的URL進行解析,將其中的專案名稱解析出,然後程式查詢所啟動的專案,然後直接到配置檔案web.xml中,根據web.xml檔案的配置即filter查詢到struts2的配置檔案--struts.xml,然後根據其中的namespace,查詢到使用者所訪問的action,然後跳轉到使用者所需的action介面。

        也許看著上面的比較麻煩,下面用一個典型的小專案來說明:

        1、開啟Eclipse(注本Eclipse不是經典的而是下載的IDE版本,用於Web開發非常方便),新建一個Web Project,注意要按照next的方式進行,這樣在最後一步可以選擇到web.xml一項,省掉了手動新增的步驟。

        2、新增jar包,將下載的structs原始碼包解壓,然後將其中的lib檔案下你所用到的jar包新增進去,新增的位置WebContent-WEB-INF下的lib資料夾。

        3、新增struts.xml檔案,最簡單的struts.xml檔案在所下載的struts原始碼的app中,可以從其中尋找一份,也可按以下方式自己寫一份(最簡單的),直接放到src的根目錄下:

<?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="front" namespace="/" extends="struts-default">

        <action name="index" class="com.myservice.web.Action02">
            <result name="success">/Index.jsp</result>
        </action>
    </package>
</struts>
對以上內容做下說明:第6行的struts.devMode配置的是是否採用開發模式,開發模式的意思就是動態修改可以動態演示,無需重啟server,它預設是false;第7行的package如同java的包一樣,用於分類;namespace非常重要,是用於分割url的,如上所述,要開啟的url為:......./index,其中的/代表namespcae,index則代表了action的name屬性。action中的class是類,用於一些邏輯處理的普通java類;result則是轉入的jsp(View)介面,上述的jsp介面放在WebContent根目錄下。

        4、編寫Java類-Action02,新建一個包com.myservice.web,然後新建一個Java類Action02,其內容很簡單,

package com.myservice.web;

import com.opensymphony.xwork2.ActionSupport;

public class Action02 extends ActionSupport{

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return "success";
	}

}
就是覆寫execute方法,直接返回了一個字串success,這個字串是和action中result的那麼屬性所對應的。

另還有兩種方法可以完成class的功能,但是都不常用,一種是不繼承任何的類和介面,直接寫一個execute方法,也是返回String;另外一種則是寫一個class實現Action介面,然後覆寫Action的execute方法,其實ActionSupport也是實現了Action介面,但是它還另外實現了很多方法,可以非常方便的使用,因此在開發中都採用繼承ActionSupport類的方式。

        5、編寫JSP檔案,在WebContent根目錄下新建一個jsp檔案,注意要將其語言設定為utf-8,,如:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>MyWeb02</title>
</head>
<body>
<h1>明日復明日,明日何其多</h1>
</body>
</html>

通過上述工作,就完成了最簡單的編寫,然後就可以啟動server(Tomcat7.0)了,在瀏覽器中輸入http://localhost:8080/xxx/index,其中的xxx代表的是專案名。

OK!!!!!!!!!

相關推薦

Struts2慢慢之一

        什麼是Structs2?它就是在Struts1的基礎上演化而來的,是一種MVC模式的框架,其實它的功能很簡單,就是將View和邏輯處理層分開。本人才疏學淺,以前都是用Spring做專案,由於要畢業,所以需要進行轉行(暫且這麼說吧),公司都是用的Structs

Struts2慢慢之五(接上)----引數傳遞方法三

上篇說明了下Struts2引數傳遞的兩種方法,其中第二種方法被稱為:DomainModel,域模型。即新建一個類,用於存放屬性。 下面說明另外一種方法,被稱為:ModelDriven,模型驅動。 它與第二種方法非常類似,其他都是一樣的,僅僅就是Action和訪問有區別,它的

Struts2慢慢之六----簡單的資料校驗

資料校驗是在專案開發中不可缺少的一部分,使用者登入時、密碼驗證時都需要,當然要做的首先是獲得使用者輸入的內容,然後對內容進行驗證,一般都是從資料庫中讀出然後校驗,如果錯誤則顯示提示資訊,正確則進入使用者主介面。 下面用一個簡單小例子來說明下步驟: 1、index的表單 &l

TensorFlow 1.0.0rc1上玩量化神經網路 ——轉自 慢慢TensorFlow 微信公眾號

這裡的量化不是指“量化交易(Quantitative trade)”,而是 Quantization ,即離散化,注意是否走錯片場。 前言 開發神經網路時最大的挑戰是讓它真正起作用,訓練時一般希望速度越快越好,準確率越高越好。使用浮點演算法是保持結果精確最簡單的方式,GPU 擁有加速浮點演算法的

慢慢 動態規劃

多做幾道題來理解動態規劃吧。畢竟程式碼寫出來才能算是真正理解了。 A、leetcode 198. House Robber You are a professional robber planning to rob houses along a street. Eac

慢慢TensorFlow》往期內容回顧

經過一個月加一週,公眾號終於有所起色,官方通過了原創宣告和後臺留言功能稽核,謝謝每位讀者的支援! 將之前的文章稍微分類整理了一下,方便大家查詢: 1.  TensorFlow 安裝 2. TensorFlow 部署 3. TensorFlow

.net程式設計師十大必之一的xml實現類

動態建立xml節點 一、需求分析 網站中英版切換,網站資訊儲存於xml檔案當中,如果XML節點為空,則建立節點並設定預設值。 protected void Page_Load(object sender, EventArgs e) { XmlDocum

Makefile慢慢

GCC := g++ AR := ar ARFLAG := r CFLAGS := -c -g -Wall CPPSRC := $(notdir $(wildcard *.cpp)) OBJSRC := $(patsubst %.cpp,%.o,$(CPPSRC)) cl

跟我ASP.NET MVC之一:開篇有益

了解 軟件 搜索引擎 路由 繼承 簡單 工廠 平臺 抽象層 摘要: ASP.NET MVC是微軟的Web開發框架,結合了模型-視圖-控制器(MVC)架構的有效性和整潔性,敏捷開發最前沿的思想和技術,以及現存的ASP.NET平臺最好的部分。它是傳統ASP.NET Web F

Struts2知識復習之一

prope 不常用 bject inpu 資源 extends web-inf org struts #Struts2知識復習之一 概述:struts2是一個基於MVC設計模型的輕量級web應用框架,它本質上相當於servlet。它是 Struts1(早期基於MVC模式的

菜鳥SSH——Struts2內部是如何工作的

前面說完了Spring、Hibernate,很自然今天輪到struts了。struts的核心原理就是通過攔截器來處理客戶端的請求,經過攔截器一系列的處理後,再交給Action。下面先看看struts官方的工作原理圖:   圖1 struts原理圖   簡

我們一起shell之一:shell瞭解

寫在最前面!!!!!!by skyfans 下定決心,開始編寫這方面的部落格內容。原因很簡單,自己做了運維近8年,從最開始的windows伺服器運維到後來接觸linux,是一個漫長的過程,也不是一個漫長的時間。技術這玩意,更新的越來越快,如果作為一名技術人員,不努力,永遠也趕不上技術的快

資料視覺化是目前最牛逼的行業之一!這些必庫你會幾個呢?

推薦   資料視覺化的庫有挺多的,這裡推薦幾個比較常用的: Matplotlib   Plotly   Seaborn   Ggplot   Bokeh   Py

一步步spark之一scala高階特性中泛型類與泛型函式3.6

一步步學spark之一scala高階特性中泛型類與泛型函式 泛型類中的泛型是包容具體型別變換的,對這些具體不同的型別,泛型類根據型別進行統一的操作,很多時候泛型類就相當於模板。 泛型定義一個泛型引數 兩個泛型引數 定義空的Map 返回的型別中是

一步步spark之一scala函數語言程式設計中模式匹配3.5

一步步學spark之一scala函數語言程式設計中模式匹配 match模式  case匹配 模式匹配中沒有break,return之類的語句  在模式匹配的case中一旦匹配到,整個match就立即返回 ,返回最後一條語句或者變數值 另一種寫法 帶

一步步spark之一scala函數語言程式設計中case class3.4

一步步學spark之一scala函數語言程式設計中case  class case class類與正常的class類的區別: case class定義時候一般都需要在類名之後直接加上引數,引數前面不加val或var都可以,不加 的情況下預設是 val 用case class

一步步spark之一scala函數語言程式設計中set無序集合3.3

一步步學spark之一scala函數語言程式設計中set無序集合 定義常量set集合 去掉一個數用- 再次檢視 還是沒有變化  因為是一個不可變的 有序集合Set,使用treeSet進行排序 建立可變的Set 匯入包&nbs

一步步spark之一scala函式程式設計中序列,可變列表與不可變列表3.2

一步步學spark之一scala函式程式設計中序列,可變列表與不可變列表 定義List集合 head就是去列表中第一個元素 tail就是除了第一個元素以外的其他元素列表 另一種定義list方法 把新的數加入到list中

一步步spark之一scala高階特性中隱式轉換,隱式引數,隱式類3.8

一步步學spark之一scala高階特性中隱式轉換,隱式引數,隱式類3.8 隱式轉換可以擴充套件類的功能,加上implicit 表示隱式轉換,後面跟上要轉換的函式 隱式引數 使用的時候在引數前面加上 implicit 隱式引數作用: 引數可以被隱式的賦

一步步spark之一scala高階特性中Lower bounds(下界)與Upper bounds(上界),View bounds(檢視邊界)3.7

一步步學spark之一scala高階特性中Lower bounds(下界)與Upper bounds(上界),View bounds(檢視邊界) Upper bounds(上界):我們使用一個物件或者一個類必須是什麼型別的,也就是說必須是什麼型別或者什麼型別的子類。 表示語法 <: