Struts2(五) 校驗簡單資料型別方法 和 值棧的說明
一、值棧的講解、什麼是值棧呢?
通過對struts2的一段時間的接觸,將自己對OGNL的核心值棧說說,值棧:簡單的說,就是存放action的堆疊,當我們提交一個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用一個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名(與要獲得的資料的屬性名相同)時,即將值取出,但這種情況可能出現找到的值不是我們想要的值,那麼解決此問題需要用TOP語法
和N語法來進行解決。 重最要的是遵循”後進先出“的原則。
值棧說明:
error是一個Map,Map裡面有包含著資料;例如上圖的errors舉例子,裡面的name就是個陣列,具體獲取值看以下案例。
二、Struts2 簡單資料型別校驗即將開始了;嘮叨下 這是一個其實原理很簡單
第一步:連線請求到對應的Action進行處理,在Action中定義同名字的引數,賦予set 和 get 方法;
第二步:對獲取到的引數進行判斷。
第三步:檢驗成功或失敗結果返回。
第四步:校驗失敗後頁面值顯示。
2.0、程式碼結構圖
2.1、JSP頁面請求
<a href="<%=path %>/test03_DataValiation_01?name=flx">使用addFieldError方法 和 s:fieldError標籤簡單處理資料校驗</a>
2.2、配置檔案 struts.xml 處理
<?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.enable.DynamicMethodInvocation" value="false" /> -->
<!-- 設定為開發者模式 修改之後不需要重啟伺服器 -->
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="struts-default">
<!-- 簡單處理資料型別 -->
<action name="test03_*" class="com.flx.actions.dataValiation.SimpleDataValiation" method="{1}">
<result>
/jsp/getParam.jsp
</result>
<result name="fails">
/jsp/fails.jsp
</result>
</action>
</package>
</struts>
2.3、Action處理類
package com.flx.actions.dataValiation;
import com.opensymphony.xwork2.ActionSupport;
/**
*
* @author FuLX
*
* @2016-12-25上午8:22:58
*
* 功能:簡單資料型別驗證 使用addFieldError方法和s:fieldError標籤簡單處理資料校驗
*/
public class SimpleDataValiation extends ActionSupport {
private static final String FINAL_FLX_SUCCESS = "success";
private static final String FINAL_FLX_FAILS = "fails";
private String name;
public String DataValiation_01() {
System.out.println("後臺接收到的引數:" + this.name);
if (this.name != null && !"admin".equals(this.name)) {
this.addFieldError("name", "資料校驗不通過");
this.addFieldError("name", "name errors_01");
return FINAL_FLX_FAILS;
}
return FINAL_FLX_SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.4、fails.jsp頁面說明
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 引用Struts 標籤庫 -->
<%@taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>資料校驗失敗</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
錯誤資訊展示
<s:fielderror fieldName="name" theme="simple"/>
<br/>
<h4>通過值棧去獲取值</h4>
errors: <s:property value="errors"/><br/>
errors.name: <s:property value="errors.name"/><br/>
errors.name[0]: <s:property value="errors.name[0]"/><br/>
errors.name[1]: <s:property value="errors.name[1]"/><br/>
<s:debug></s:debug>
</body>
</html>
2.5、頁面顯示
相關文章
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- struts2資料校驗
- 說說 Python 的變數以及簡單資料型別Python變數資料型別
- 區別值型別資料和引用型別資料型別
- oracle 各資料型別dump說明(三)Oracle資料型別
- oracle 各資料型別dump說明(二)Oracle資料型別
- oracle 各資料型別dump說明(一)Oracle資料型別
- 簡單說明一下資料庫審計能帶來的價值資料庫
- mssql sqlserver text資料型別專題說明SQLServer資料型別
- 【clickhouse專欄】基礎資料型別說明資料型別
- 基本資料型別和引用型別的初始值資料型別
- python:變數和簡單資料型別Python變數資料型別
- 不簡單的基本資料型別資料型別
- 塗鴉雲平臺資料型別和取值約束說明資料型別
- Dump型別說明型別
- javascript對於值型別資料的物件包裝簡單介紹JavaScript型別物件
- java簡單資料型別(轉)Java資料型別
- CRC校驗原理簡介及C程式碼實現說明C程式
- C#引用型別和值型別在堆、棧中的儲存C#型別
- JNI資料型別和方法資料型別
- 深度解析javaScript常見資料型別檢查校驗JavaScript資料型別
- SAP UI5 Currency 資料型別的校驗邏輯分析UI資料型別
- C#簡明教程(五)-資料型別 (轉)資料型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- Hibernate資料校驗簡介
- MATLAB(2)資料型別一(數值型和…Matlab資料型別
- sqlmap簡單中文說明SQL
- 雲端計算和虛擬化的三個小區別簡單說明
- 判斷值的資料型別資料型別
- go語言簡單入門--常識和資料型別Go資料型別
- vue表單校驗方法Vue
- Struts2筆記10 向值棧放入或獲取資料筆記
- Python自學02day——變數和簡單的資料型別Python變數資料型別
- 簡單說說vue的父子元件,父子元件傳值和vuexVue元件
- Object C學習筆記1-基本資料型別說明Object筆記資料型別
- java 方法修改主函式裡基本資料型別和引用資料型別的區別Java函式資料型別
- 【MySQL資料型別1之--數值型別】MySql資料型別
- 圖解C#的值型別,引用型別,棧,堆,ref,out圖解C#型別