5-struts2知识补充(常用的struts2的标签,数据回显,防止重复提交)
目錄:
?
1)ognl:Object Graph Navigation Language
簡介:ognl工作在視圖層,可以簡化數(shù)據(jù)的訪問操作。struts2框架用ognl作為默認(rèn)的表達式語言,用來從框架的不同區(qū)域用一種同樣的語言來引用數(shù)據(jù)。與jsp內(nèi)置的EL語言相比,他們都屬于表達式語言, 但是ognl的功能更加強大,提供了EL不具備的功能。
ognl常用符號:
- #:
- 獲取非根對象,如OGNL上下文,Action上下文等。
- 用于過濾和投影集合,如:person.{?#this.age>50}
- 在jsp頁面中創(chuàng)建Map集合 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head></head><body><%--ognl表達式:在jsp頁面中創(chuàng)建List集合 --%><s:iterator value="{'reic','rose','lisa'}" var="name"><s:property value="#name" /><br></s:iterator><hr><%--在jsp頁面創(chuàng)建Map集合 --%><s:iterator value="#{1:'reic',2:'rose',3:'lisa'}" var="entry">編號:<s:property value="#entry.key"/>--姓名:<s:property value="#entry.value"/><br></s:iterator> </body> </html> tags.jsp
- %{? } :? 把內(nèi)容引入Ognl運行環(huán)境 <%--模擬從action傳入userName的值 --%><s:set var="userName" value="rose" scope="request"></s:set><%--jsp頁面獲取userName的值 --%><s:textfield name="username" value="#request.userName"></s:textfield>
直接這么寫,jsp頁面不會把textfield中的“#request.userName”當(dāng)作ognl表達式,會直接在jsp頁面中顯示為#request.userName,如下所示
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head></head><body><s:iterator value="{'rose','lisa','jack'}" var="name"><s:property value="#name"/></s:iterator><hr><%--模擬從action傳入userName的值, value值要寫ognl表達式 --%><s:set var="userName" value="#request.name"></s:set><%--jsp頁面獲取userName的值 --%><s:textfield name="username" value="%{#request.userName}"></s:textfield></body> </html> tags.jsp - $:
- 在國際化資源文件中,引用ognl表達式。
- 在struts2的配置文件中,引用ognl表達式。
?
?
常用struts2標(biāo)簽:?
常用的邏輯標(biāo)簽:參考文檔
- <s:component>標(biāo)簽:當(dāng)需要多次使用同一段代碼時,就可以考慮使用改標(biāo)簽將重復(fù)代碼定義為一個自定義組件。 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body><s:form><s:component template="TemplateComponent.jsp"><s:param name="interestlist"></s:param><s:param name="booklist" value="{'Java', 'Python'}"></s:param></s:component></s:form>
</body>
</html> index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head><body><s:checkboxlist name="interestlist" label="你的興趣愛好" list="{'Sing', 'Programmer'}"></s:checkboxlist><s:select list="parameters.booklist" labelposition="left" label="你喜歡的書"></s:select>
</body>
</html> TemplateComponent.jsp
***注意:TemplateComponent.jsp必須放在WebRoot/template/xhtml文件夾下。
- property標(biāo)簽:用于輸出指定值。輸出value指定的值。
- set:用于將某個值放入指定范圍
- push標(biāo)簽:將對象存入棧頂,不能放入其他范圍,當(dāng)標(biāo)簽結(jié)束,會從棧頂刪除
- bean標(biāo)簽:實例化一個符合JavaBean規(guī)范的class,標(biāo)簽體內(nèi)可以包含幾個param元素,用于調(diào)用set方法給class對象賦值
-
action標(biāo)簽:通過指定命名空間和action名稱,該標(biāo)簽允許在jsp頁面中直接調(diào)用action。executeResult用于指定action的result是否需要被執(zhí)行(即是否跳轉(zhuǎn)到視圖),默認(rèn)為false。
-
?iterator:用于對集合(List,Set, 數(shù)組)進行迭代。
- <s:iterator value="{'java','python'}" var="name"><s:property value="name"/><br></s:iterator>
?
- <s:iterator value="{'java','python'}" var="name"><s:property value="name"/><br></s:iterator>
-
url標(biāo)簽:該標(biāo)簽用于創(chuàng)建url,可以通過param標(biāo)簽提供request參數(shù)。
?
常用UI標(biāo)簽:
- 表單標(biāo)簽: 表單標(biāo)簽將在html文檔中被呈現(xiàn)為一個表單元素(代替html代碼,幫助簡化代碼編寫)
(在struts.xml中通過配置常量可以更改struts2表單標(biāo)簽的默認(rèn)模板:<constant name="struts.ui.theme" value="simple"></constant>, 也可以在jsp頁面任何struts2標(biāo)簽通過theme屬性進行特定指定。)
- 非表單標(biāo)簽:用于生成頁面上的樹,Tab等的標(biāo)簽。
- Ajax標(biāo)簽
?
?
表單數(shù)據(jù)回顯:
在一些編輯數(shù)據(jù)需求下要用到數(shù)據(jù)回顯(從后臺取數(shù)據(jù),顯示到頁面),只需與后臺變量同名即可,不需要自己寫value值
?
防止重復(fù)提交:
通過token攔截器實現(xiàn)防止用戶重復(fù)提交表單,它會得到頁面的token值并放入session中,再次刷新時會將新一次的token與session中的token比較,如果一致則為重復(fù)提交。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><package name="model" extends="struts-default" namespace="/model"><interceptors><interceptor-stack name="myStack"><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="token"></interceptor-ref></interceptor-stack></interceptors><default-interceptor-ref name="myStack"></default-interceptor-ref><global-allowed-methods>register</global-allowed-methods><action name="user_*" class="c_modelDriver.UserAction" method="{1}"><result>/success.jsp</result><result name="invalid.token">/register.jsp</result></action></package> </struts> struts.xml <formaction="${pageContext.request.contextPath}/model/user_register"method="post"><s:text name="user"></s:text><input type="text" name="name"><s:text name="password"></s:text><input type="password" name="password"><%--在當(dāng)前頁面生成token --%><s:token></s:token><input type="submit" value='<s:text name="login"></s:text>'></form>?
轉(zhuǎn)載于:https://www.cnblogs.com/clairexxx/p/10231553.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的5-struts2知识补充(常用的struts2的标签,数据回显,防止重复提交)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:大型系统架构设计细节你知道多少?
- 下一篇: 今天仔细学习了html加载执行的顺序