Struts2框架05 result標簽的類型

来源:http://www.cnblogs.com/NeverCtrl-C/archive/2017/07/12/7158009.html
-Advertisement-
Play Games

1 result標簽是乾什麼的 就是結果,伺服器處理完返回給瀏覽器的結果;是一個輸出結果數據的組件 2 什麼時候需要指定result標簽的類型 把要輸出的結果數據按照我們指定的數據類型進行處理 3 常見的類型(在struts的預設配置文件120行有這些類型的列表) 3.1 dispatcher 轉發 ...


 

1 result標簽是乾什麼的

  就是結果,伺服器處理完返回給瀏覽器的結果;是一個輸出結果數據的組件

  

2 什麼時候需要指定result標簽的類型

  把要輸出的結果數據按照我們指定的數據類型進行處理 

  

3 常見的類型(在struts的預設配置文件120行有這些類型的列表)    

  3.1 dispatcher  轉發(預設類型)

  3.2 redirect  重定向URL

    格式一

      <result type="redirect">
        網址(例如:http://www.baidu.com)
      </result>  

    格式二(註意:param標簽的name屬性是固定值location)
      <result type="redirect">
        <param name="location">
          http://www.baidu.com
        </param>
      </result>

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 2   <modelVersion>4.0.0</modelVersion>
 3   <groupId>cn.xiangxu</groupId>
 4   <artifactId>ssh02</artifactId>
 5   <version>0.0.1-SNAPSHOT</version>
 6   <packaging>war</packaging>
 7   <dependencies>
 8       <dependency>
 9           <groupId>org.apache.struts</groupId>
10           <artifactId>struts2-core</artifactId>
11           <version>2.3.8</version>
12       </dependency>
13       <dependency>
14           <groupId>org.apache.struts</groupId>
15           <artifactId>struts2-spring-plugin</artifactId>
16           <version>2.3.8</version>
17       </dependency>
18   </dependencies>
19 </project>
maven依賴文件
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 3   <display-name>ssh02s</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   
13   <!-- 配置spring監聽listener
14               用於初始化Spring容器 -->
15   <listener>
16       <listener-class>
17           org.springframework.web.context.ContextLoaderListener
18       </listener-class>
19   </listener>
20   
21   <!-- 配置Spring配置文件的位置 -->
22   <context-param>
23       <param-name>contextConfigLocation</param-name>
24       <param-value>classpath:spring-*.xml</param-value>
25   </context-param>
26   
27   <!-- 配置主控制器和過濾條件 -->
28   <filter>
29       <filter-name>mvc</filter-name>
30       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
31   </filter>
32   <filter-mapping>
33       <filter-name>mvc</filter-name>
34       <url-pattern>/*</url-pattern>
35   </filter-mapping>
36   
37 </web-app>
web.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
 5     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
 7     xmlns:jpa="http://www.springframework.org/schema/data/jpa"
 8     xsi:schemaLocation="
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
10         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
11         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
12         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
13         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
14         http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
15         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
16         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
17         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
18 
19     <!-- 配置組件掃描 -->
20     <context:component-scan base-package="cn.xiangxu" />
21     
22 </beans>
spring_context.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     
 7     <package name="type" namespace="/type" extends="struts-default">
 8         <action name="redirect" class="redirectAction"> <!-- 後臺經過處理後,再進行重定向 -->
 9             <result name="redirect" type="redirect">
10                 http://www.baidu.com
11             </result>
12         </action>
13             
14         <action name="cq"> <!-- 直接重定向,在後臺不進行任何處理 -->
15             <result type="redirect">
16                 http://cq.qq.com/
17             </result>
18         </action>
19         
20         <action name="dzsk"> <!-- 利用格式二實現 -->
21             <result type="redirect">
22                 http://www.dzshike.com/
23             </result>
24         </action>
25     </package>
26     
27 </struts>
struts.xml
 1 package cn.xiangxu.action;
 2 
 3 import org.springframework.context.annotation.Scope;
 4 import org.springframework.stereotype.Controller;
 5 
 6 @Controller
 7 @Scope("prototype")
 8 public class RedirectAction {
 9     public String execute() {
10         System.out.println("測試重定向URL");
11         return "redirect";
12     }
13 }
RedirectAction

項目結構

  

  3.3 redirectAction  重定向Action

    格式一:請求路徑不變,僅僅改變請求名
      <result name="xxx" type="redirectAction">
        請求名/請求名.action
      </result>

    格式二:請求路徑和請求名都該改變
      <result name="xxx" type="redirectAction">
        <param name="namespace">/路徑名</param>
        <param name="actionName">請求名/請求名.action</param>
      </result>

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6 
 7     <package name="test" namespace="/test" extends="struts-default"> <!-- namespace是配置訪問路徑,extends是配置繼承預設struts文件 -->
 8         <action name="demo" class="testAction"> <!-- name是配置訪問網名,class是配置action類 -->
 9             <result name="success">
10                 /WEB-INF/jsp/msg.jsp
11             </result>
12         </action>
13     </package>
14     
15     <package name="type" namespace="/type" extends="struts-default">
16     
17         
18         <action name="demo" class="testAction">
19             <result name="success">
20                 /WEB-INF/jsp/msg.jsp
21             </result>
22         </action>
23         
24         <action name="redirectAction01" class="redirectActionAction"> <!-- 重定向1:只改變請求網名 -->
25             <result name="redirectAction" type="redirectAction">
26                 demo
27             </result>
28             <result name="redirectAction" type="redirectAction">
29                 demo
30             </result>
31         </action>
32         <action name="redirectAction02" class="redirectActionAction"> <!-- 重定向2:路徑和網名都改變 -->
33             <result name="redirectAction" type="redirectAction">
34                 <param name="namespace">/test</param>
35                 <param name="actionName">demo</param>
36             </result>
37         </action>
38         
39     </package>
40     
41 </struts>
struts.xml
 1 package cn.xiangxu.action;
 2 
 3 import org.springframework.context.annotation.Scope;
 4 import org.springframework.stereotype.Controller;
 5 
 6 @Controller
 7 @Scope("prototype")
 8 public class RedirectActionAction {
 9     public String execute() {
10         System.out.println("測試重定向action");
11         return "redirectAction";
12     }
13 }
RedirectActionAction.java

項目結構

  

  3.4 stream 流,處理圖片 

    3.4.1 格式     

    <result name="success" type="stream">
      <param name="contentType">image/jpeg</param>
      <param name="inputName">imageStream</param>
      <param name="contentDisposition">attachment;filename="document.pdf"</param>
      <param name="bufferSize">1024</param>
    </result>


    3.4.2 參數解釋

      contentType 定義媒體類型
      inputName 必須是一個inputStream類型的流
      contentDisposition 強制下載保存(可選)
      bufferSize 指定緩存區域的大小(可選)


    3.4.3 案例:向瀏覽器發送圖片數據並顯示

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6 
 7     
 8     <package name="type" namespace="/type" extends="struts-default">
 9         
10         
11         <action name="stream" class="streamAction">
12             <result name="success" type="stream">
13                 <param name="contentType">image/png</param>
14                 <param name="inputName">image</param> <!-- image是ImageAction中的一個成員變數 -->
15             </result>
16         </action>
17         
18     </package>
19     
20     
21     
22 </struts>
struts.xml
 1 package cn.xiangxu.action;
 2 
 3 import java.awt.Color;
 4 import java.awt.Graphics2D;
 5 import java.awt.image.BufferedImage;
 6 import java.io.ByteArrayInputStream;
 7 import java.io.ByteArrayOutputStream;
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 import javax.imageio.ImageIO;
12 
13 import org.springframework.context.annotation.Scope;
14 import org.springframework.stereotype.Controller;
15 
16 @Controller
17 @Scope("prototype")
18 public class StreamAction {
19     
20 private InputStream image;
21     
22     public String execute() throws IOException {
23         // 設置圖片
24         BufferedImage img = new BufferedImage(399, 60, BufferedImage.TYPE_3BYTE_BGR);
25         
26         // 獲取畫筆
27         Graphics2D g = img.createGraphics();
28         g.setColor(Color.white);
29         g.drawString("hello fury,測試stream", 10, 30);
30         
31         // 將圖片轉成位元組數組
32         ByteArrayOutputStream out = new ByteArrayOutputStream(); 
33         ImageIO.write(img, "png", out);
34         out.close();
35         
36         // 將位元組數組放到位元組流中
37         byte [] data = out.toByteArray();
38         image = new ByteArrayInputStream(data);
39         
40         return "success";
41     }
42 
43     public InputStream getImage() {
44         return image;
45     }
46 
47     public void setImage(InputStream image) {
48         this.image = image;
49     }
50 }
StreamAction.java

     項目結構

      

  3.5 json  用於處理ajax請求

    導包:struts2-json-plugin
      註意:package標簽中的extends屬性值變更為json-default(json-default繼承了struts-default)
    用法:兩種方式
      返回Action中的所有值
        <result name="xxx" type="json"></result>
      返回Action中的單個屬性值
        <result name="xxx" type="json">
          <param name="root">action中的屬性名</param> <!-- name的屬性值是固定的 -->
        </result>

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6 
 7     
 8     <package name="type" namespace="/type" extends="json-default">
 9     
10         
11         <action name="json" class="jsonAction"> <!-- 返回多個值 -->
12             <result name="success" type="json"></result>
13         </action>
14         
15         <action name="json02" class="jsonAction"> <!-- 返回一個值 -->
16             <result name="success" type="json">
17                 <param name="root">name</param>
18             </result>
19         </action>
20         
21         
22     </package>
23     
24     
25 </struts>
struts.xml
 1 package cn.xiangxu.action;
 2 
 3 import org.springframework.context.annotation.Scope;
 4 import org.springframework.stereotype.Controller;
 5 
 6 @Controller
 7 @Scope("prototype")
 8 public class JsonAction {
 9     private String name;
10     private Integer age;
11     
12     public String execute() {
13         name = "wys";
14         age = 100;
15         return "success";
16     }
17     
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public Integer getAge() {
25         return age;
26     }
27     public void setAge(Integer age) {
28         this.age = age;
29     }
30     
31     
32 }
JsonAction.java
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 2   <modelVersion>4.0.0</modelVersion>
 3   <groupId>cn.xiangxu

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天開始學習python,首先環境安裝 1.在https://www.python.org/downloads/下載python2.X或者3.X(ps:這裡建議下載32位的python ,因為64位python開發出來的程式,打包成 EXE程式後會不相容32位系統) 2.下載之後安裝,打開安裝包 2 ...
  • 一、連接資料庫 1. 步驟 2. 獲取Driver的方式 通過new新建 :Driver driver = new com.mysql.jdbc.Driver(); 通過反射創建類的實例 :Driver driver = (Driver)Class.forName(driverClass).newI ...
  • Python 之 filecmp 2017年7月12日 參考書籍:《Python自動化運維 ——技術與最佳實踐》 作者:李天斯 1.什麼是filecmp filecmp作為python的標準庫,無需安裝,作用是對文件,目錄,遍歷子目錄的差異對比功能,它是一個輕量級的工具,在對linux伺服器備份文件 ...
  • 項目做了動靜分離,即靜態文件全部放在nginx中,動態文件在tomcat中,如何引用靜態文件,我是這麼做的,見下: 運行結果: ...
  • 今天解決了第11章_不顯示博文表單的問題,時間太晚了,先留個坑,明天寫出詳細的解決方案。 同時也將前11章(當我結束本書學習時會將所有的問題一一列出並給出中文的解決方案)的常見問題給予解答。 ...
  • basestring basestring() 說明:basestring是str和unicode的超類(父類),也是抽象類, 因此不能被調用和實例化,但可以被用來判斷一個對象是否為str或者unicode的實例, isinstance(obj, basestring) 等價於isinstance( ...
  • 什麼題目都不會做於是開始做搜索題。 然而我搜索題也不會做了。 鐵定沒戲的蒟蒻。 1.NOIP2004 蟲食算 “對於給定的N進位加法算式,求出N個不同的字母分別代表的數字,使得該加法算式成立。輸入數據保證有且僅有一組解”。 大概就是給你一堆(n個)字母讓你求出n進位下的一個n位數加n位數得到n位數的 ...
  • Java作為一面向對象的語言,具備面向對象的三大特征——繼承,多態,封裝。 繼承顧名思義,繼任,承接,傳承的意思。面向對象的語言有一個好處,就是可以用生活中的例子來說明面向對象的特性。那麼我們先來看看生活中的繼承關係有哪些?最常見的:父母子女;汽車,電動車,自行車和車。無論哪種車,都有具備車的特性。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...