最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Struts2學習教程之入門小白的開始基礎

 更新時間:2018年04月27日 11:06:34   作者:bgzyy  
struts2其實就是為我們封裝了servlet,簡化了jsp跳轉(zhuǎn)的復雜操作,并且提供了易于編寫的標簽,可以快速開發(fā)view層的代碼。下面這篇文章主要給各位想要學習Struts2的小白們詳細介紹了關于Struts2入門的一些開始基礎,需要的朋友可以參考下

Struts2 概述:

Struts2 是一個用來開發(fā) MVC 應用程序的框架,他提供了 Web 應用程序開發(fā)過程中的一些常見問題的解決方案,比如對于用戶輸入信息合法性的驗證,統(tǒng)一的布局,國際化等,既然有 Struts2 那么肯定有 Struts1,但是從本質(zhì)上講 Struts2 不是從 Struts1 擴展而來的,更應該說是一種換了品牌標簽的 WebWork 更合適。

struts1 VS struts2

  • struts1 里使用 ActionServlet 作為控制器,Struts2 使用過濾器作為控制器
  • Struts1 中每個 HTML 表單都對應一個 ActionForm 實例,Struts2 中 HTML 表單將被直接映射到一個 POJO
  • Struts1 的驗證邏輯編寫在 ActionForm 中,Struts2 中的驗證邏輯編寫在 Action 中
  • Struts1 中 Action 類必須繼承 org.apache.struts.action.Action 類,Struts2 中任何一個 POJO 都可以是一個 Action 類
  • Struts2 在頁面里使用 OGNL 來顯示各種對象模型,可以不再使用 EL 和 JSTL

Struts2 環(huán)境搭建

新建 Model,并勾選 Struts2 ,之后選擇 Struts2 所要使用的 library,你可以直接在新建頁面中選擇 Download 進行下載,也可以提前下載好 Struts2 所需要的 jar 包自己構建(這里我選擇自己構建的 library)

http://struts.apache.org/download.cgi#struts2516 在此頁面可以選擇自己所要使用 Struts2 版本,同樣大家也可以在腳本之家進行本地下載:http://m.fzitv.net/softs/539810.html

點擊下一步之后為自己的 struts2 項目命名(在命名的時候建議在第二欄 Content Root 的路徑后改名,若在第一欄中更改只是更改第一欄的,其余兩欄不會被更改)

點擊 Finish 完成 Struts2 項目的創(chuàng)建,所創(chuàng)建的項目如下

IDEA VS Eclipse

  • 若我們使用 Eclipse 去創(chuàng)建 Struts2 項目則需要在下載的 Struts2 包中已有的項目中去拷貝 struts2 文件的格式和 web.xml 文件的配置;IDEA 會為我們自動構建好
  • web.xml 文件在 struts2 包下的 struts\apps\struts2-blank1\WEB-INF\web.xml
  • struts.xml 文件在 struts2 包下的 struts\apps\struts2-blank\WEB-INF\classes,將其創(chuàng)建于 src 目錄下

Struts2 HelloWorld

  搭建好 Struts2 的開發(fā)環(huán)境之后我們開始第一個 Struts2 程序的編寫,其要求為在一個表單中輸入用戶的基本信息點擊提交后跳轉(zhuǎn)到另一個頁面顯示用戶所輸入的信息,在沒有學習 Struts2 之前這對于我們來說非常簡單,僅需要將頁面請求發(fā)送到 Servet 中響應請求到另一個頁面,使用 EL 和 JSTL 將信息顯示即可。對于 Struts2 這當然也算是一個 HelloWorld,我們將借此實例開始 Struts2 各方面的知識講解。

在 index.jsp 中編寫頁面代碼,供用戶輸入基本信息,如下:

依據(jù)表單 name 屬性編寫實體類,并創(chuàng)建 getXxx 和 setXxx 方法,Customer.java

在 struts.xml 文件中編寫代碼處理 struts2 請求

返回顯示頁面 show.jsp

struts.xml

<?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>
<package name="helloWorld" extends="struts-default">
<action name="input" class="com.struts2.hello.test.Customer" method="print">
<result name="print">/show.jsp</result>
</action>
</package>
</struts>

Customer.java

package com.struts2.hello.test;

/**
* Created by shkstart on 2018/03/24.
*/
public class Customer {
private String userName;
private String email;
private String address;

/*
* getXxx() setXxx() 方法
**/
public String print() {
System.out.println(new Customer());
return "print";
}

@Override
public String toString() {
return "Customer{" +
"userName='" + userName + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
'}';
}
}

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Input</title>
</head>
<body>
<table>
<form action="input.action" method="post">
<tr>
<td>UserName</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Address</td>
<td><input type="text" name="address"></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</form>
</table>
</body>
</html>

show.jsp(只展示 Body 標簽內(nèi)容)

UserName: ${userName}<br>
Email: ${email}<br>
Address: ${address}<br>

代碼詳解

Customer.java 中成員變量和 index.jsp 中的屬性一一對應,不忽略大小寫;

show.jsp 中用于顯示的和 Customer.java 中的成員變量一致,否則無法顯示

index.jsp 中的 form 表單 action 值應該設置為struts.xml 文件中的 action 的name 屬性

struts.xml 文件中的 action 節(jié)點的 method 屬性應 Custome.java 中的 String print() 方法,result 節(jié)點的 name 屬性為

String print() 方法的返回值

result 節(jié)點的值為處理了該 struts2 請求后所響應的頁面

   對于 show.jsp 頁面的顯示我們在后面會詳細講解有關知識,至此我們 Struts2 的 HelloWorld 就到這里,我相信和我一樣的小白跟著做下去應該不會出什么大的差錯?。?/p>

struts.xml 文件節(jié)點

package 屬性 --- struts2 使用 package 來組織模塊

  • name 屬性為必須的,用于其他包應用當前包;
  • extends 表示當前包所繼承的包,即可以繼承其中所有的配置,通常為 struts-default;
  • nameSpace默認值為 /,當設置此屬性的時候應在 URL中的 servletPath 前加上所設置的值

action 屬性 --- 一個 struts2 請求就是一個 action

  • result (action 的子標簽)標簽體表示響應結(jié)果
  • name 對應 struts2 請求的名字,不包含擴展名(擴展民默認為 .action);
  • class 為該 struts2 請求將要去的類的全類名;
  • method 為所要去執(zhí)行的該類的方法,該方法返回值必須為 String,且需要和 result 節(jié)點的 name 屬性一致
  • result 的 name 屬性值默認為 SUCCESS,class 默認屬性為 ActionSupport,method 默認值為 execute

一個 action 可以有多個 result 子節(jié)點,多個 result 子節(jié)點使用 name 屬性區(qū)分

result 節(jié)點的 type 屬性默認為 dispatcher(轉(zhuǎn)發(fā)),表示結(jié)果的響應類型

Action VS action

  • 在此案例中 Customer.java 就是 struts2 中所說的 Action 類,index.jsp 發(fā)送的請求為一個 action 請求;
  • action 代表一個 struts2 請求,Action 類代表能夠處理該 struts2 請求的類
  • Action 類的成員變量必須遵循與 JavaBean 屬性名相同的命名規(guī)則,屬性的類型可以是任意類型,需與表單的 name 屬性相同
  • 至少有一個供 struts2 執(zhí)行這個 action 請求時所要調(diào)用的方法
  • 同一個 Action 也可以包含多個 action 方法
  • Action 類必須有一個無參的構造器,因為會用到反射賦值

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Java http請求封裝工具類代碼實例

    Java http請求封裝工具類代碼實例

    這篇文章主要介紹了Java http請求封裝工具類代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java工程mybatis實現(xiàn)多表查詢過程詳解

    Java工程mybatis實現(xiàn)多表查詢過程詳解

    這篇文章主要介紹了Java工程mybatis實現(xiàn)多表查詢過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Spring 加載多個xml配置文件的原理分析

    Spring 加載多個xml配置文件的原理分析

    我們知道Spring一次可以加載多個Bean定義的Xml配置文件,我們可以設想下如果讓我們來做我們會怎么做?我估計會根據(jù)配置文件的順序依次讀取并加載,那再來看看Spring是如何做的?
    2021-06-06
  • SpringBoot 集成MQTT實現(xiàn)消息訂閱的詳細代碼

    SpringBoot 集成MQTT實現(xiàn)消息訂閱的詳細代碼

    本文介紹了如何在SpringBoot中集成MQTT并實現(xiàn)消息訂閱,主要步驟包括添加依賴、配置文件設置、啟動類注解、MQTT配置類、消息處理器配置、主題緩存、動態(tài)數(shù)據(jù)庫主題配置以及消息處理服務,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Java編程—在測試中考慮多態(tài)

    Java編程—在測試中考慮多態(tài)

    這篇文章主要介紹了Java編程—在測試中考慮多態(tài),具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java動態(tài)替換properties文件中鍵值方式

    Java動態(tài)替換properties文件中鍵值方式

    這篇文章主要介紹了Java動態(tài)替換properties文件中鍵值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 關于fastjson的常見API詳解

    關于fastjson的常見API詳解

    這篇文章主要介紹了關于fastjson的常見API詳解,Fastjson是一個Java庫,可用于將Java對象轉(zhuǎn)換為其JSON表示,它還可用于將JSON字符串轉(zhuǎn)換為等效的Java對象,Fastjson可以處理任意Java對象,包括您沒有源代碼的預先存在的對象,需要的朋友可以參考下
    2023-07-07
  • 如何基于Autowired對構造函數(shù)進行注釋

    如何基于Autowired對構造函數(shù)進行注釋

    這篇文章主要介紹了如何基于Autowired對構造函數(shù)進行注釋,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot集成redis實現(xiàn)共享存儲session

    SpringBoot集成redis實現(xiàn)共享存儲session

    這篇文章主要介紹了SpringBoot集成redis實現(xiàn)共享存儲session的流程步驟,文中通過代碼示例介紹的非常詳細,并總結(jié)了一些常見的錯誤及解決方法,需要的朋友可以參考下
    2024-03-03
  • 詳解Maven安裝教程及是否安裝成功

    詳解Maven安裝教程及是否安裝成功

    這篇文章主要介紹了詳解Maven安裝教程及是否安裝成功,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

赣州市| 兴城市| 三明市| 中超| 黄大仙区| 乳山市| 龙江县| 略阳县| 措勤县| 图木舒克市| 蒲城县| 永泰县| 郑州市| 乌拉特中旗| 梁平县| 阜宁县| 千阳县| 黄骅市| 水城县| 宁武县| 铅山县| 榆中县| 仪征市| 铜山县| 和静县| 宁陕县| 云霄县| 汝城县| 永吉县| 前郭尔| 南平市| 镇江市| 莫力| 澄城县| 成都市| 海盐县| 政和县| 寿光市| 肥西县| 老河口市| 巢湖市|