-
MVC。。。。。
查看全部 -
處理結果類型——type屬性(result標簽的屬性)
type的默認值為dispatcher,這個類型支持JSP視圖技術(跳轉到相應JSP)。
struts2支持多種視圖技術,例如JSP、Valocity(模板引擎)、FreeMarker(模板引擎)等。
struts2-core核心包:struts-default.xml有個包聲明了返回的結果類型,
chain:鏈式結果類型,將action和另外一個action鏈接起來。
dispatcher:相當與forward服務器內部轉發。
redirect和redirectAction:相當于請求重定向,重要問題——>重定向會丟失請求參數。
plainText:顯示某一界面的原始代碼。
stream:一般用于文件的下載。
查看全部 -
處理結果類型(處理結果是通過在struts.xml使用<result/>標簽配置結果)
根據位置的不同,分為兩種結果:
局部結果:將<result>標簽作為<action/>元素的子元素來處理。
全局結果:將<result/>作為<global-result/>元素的子元素的來處理,<global-result/>相當于公共的處理結果集。
例如:<package name="">
<global-results>
? ? ? <result name="">..</result>
? ? ? <result ?name="">..</result>
<global-results>
</package>
<result>標簽的子元素<param name="loaction" parse="">resource</param>:
name屬性的location:定義了該視圖對應的實際視圖資源。
parse屬性:是否可以在實際視圖名字中使用OGNL表達式,struts默認是true。
OGNL:Object-Graph ?Navigation ?Language,很強大的表達式語言。
${#request.path獲取值},前提是已經對request存入值。(可以在struts.xml中使用,也可以在JSP中使用。(實際項目中不是很常用)
查看全部 -
處理結果類型
struts2處理流程
用戶請求(前提在web.xml中配置攔截,通過路徑)——>Struts框架(通過struts.xml配置)——>控制器Action(返回string類型邏輯視圖字符串)——>Struts框架(通過result標簽)——>視圖資源。
Struts1返回結果類型:ActionForward。
Struts2返回結果類型:String(提供代碼復用性,有利于框架分離)。
result標簽帶/和不帶/的區別
?帶/表示項目的上下文路徑。
不帶/表示執行action的namespace指定的路徑。
處理結果類型(com.opensymphony.xwork2.Action)
SUCCESS:Action正確的執行返回,返回相應試圖,success是name屬性的默認值。
NONE:表示Action正確的執行完成,但并不返回任何視圖。
ERROR:表示Action執行失敗,返回到錯誤處理視圖。
LOGIN:Action因為用戶沒有登陸的原因沒有正確執行,將返回該登陸視圖,要求用戶進行登陸驗證。
INPUT:Action的執行,需要從前端界面獲取參數,一般在應用中,會對這些參數進行驗證,如果驗證沒有通過,將自動返回到該視圖。
查看全部 -
處理結果類型(com.opensymphony.xwork2.Action)
INPUT:Action的執行,需要從前端界面獲取參數,一般在應用中,會對這些參數進行驗證,如果驗證沒有通過,將自動返回到該視圖。
自動跳轉到input界面方式:
1、傳入的參數類型轉換錯誤,自動跳轉INPUT界面(int——>String)
舉例:前端輸入的數據被賦值給實體類時類型不一致。
?2、校驗時,調用的this.addFieldError(fieldName,errorMessage)它是添加表單的錯誤,這里面有值,如果被執行,代表校驗不通過,也會自動跳轉INPUT界。
如果不想手動返回INPUT,則要把代碼寫在validate()方法里。
user.getUsername()==null和"".equals(user.getUsername())這兩個條件判斷的區別?
因為未經第一個判斷直接進行第二個判斷,當用戶名為null時會發生空指針異常
第一個判斷用戶名是否為null(空)
第二個判斷用戶名是否為""(空字符串)""并不等于null
查看全部 -
ServletAPI:HttpServletRequest、HttpServletResponse,和ServeltContext對應JSP內置對象為Request、Response、Application(Servlet可以直接調用HttpServletRequest和HttpServletResponse,因為doGet、doPost方法)。
Struts:Struts不提供ServletAPI耦合,Struts的Action的execute方法不存在任何參數。
Struts提供的三種訪問ServeltAPI方式:
方式一:ActionContext(上下文類,通過它可以獲得servletAPI ,所有的對象都是以Map進行存儲的)。
方式二:實現***Aware接口。
方式三:ServletActionContext(與方式一相似)。
查看全部 -
動態方法調用:解決一個Action對應多個請求,以免Action太多。
方法一:指定method屬性。
編寫多個action標簽,編寫多個name和method屬性。
方法二:感嘆號方式。(官方不推薦)
步驟1:開啟常量值——<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
步驟二:<action>標簽里不寫method屬性,訪問方式——http://localhost:8080/項目名/action名+!+方法名.action
方法三:通配符方式。(官方推薦使用)
查看全部 -
導入包
web.xml添加
<filter> ??<filter-name>struts2</filter-name> ??<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> ??</filter> ??<filter-mapping> ??<filter-name>struts2</filter-name> ??<url-pattern>*.action</url-pattern> ??</filter-mapping>
.src下創建struts.xml
<struts> ????<package?name="default"?namespace="/"?extends="struts-default"> ????????<action?name="helloworld"?class="com.action.HelloWorldAction"> ????????<result>/result.jsp</result> ????????</action> ????</package> </struts>
創建action類
public?class?HelloWorldAction?extends?ActionSupport?{ ????@Override ????public?String?execute()?throws?Exception?{ ????????System.out.println("HelloWorldAction"); ????????return?SUCCESS; ????} }
查看全部 -
Struts2動態方法調用
? 1. 通過method 指定方法
? 2. 使用!? 例如: http:localhost:8080/Struts/helloworld!add.action
???? 必須設置<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
?3.使用通配符 * (推薦使用)
?? 例如:<action name="helloworld_*_*" method="{1}" class="xxx">
????????? <result name="{1}">{1}.jsp</result>
??? </action>
查看全部 -
MVC模式
查看全部 -
struts.xml里標簽package里元素必須按照一定的順序排列:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(就是所有的action放到最后)??查看全部 -
struts2.5 為了增加安全性,在 struts.xml 添加了這么個屬性:<global-allowed-methods>regex:.*</global-allowed-methods>
即
<package name="default" namespace="/" extends="struts-default">
?? <global-allowed-methods>regex:.*</global-allowed-methods>
?<action name="helloworld" class="com.imooc.action.HelloWorldAction">
????? <result>/result.jsp</result>
????? <result name="add">/add.jsp</result>
????? <result name="update">/update.jsp</result>
?</action>
查看全部 -
版本:struts-2.5.16
1.代碼:<!DOCTYPE struts PUBLIC
? ?"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
? ?"http://struts.apache.org/dtds/struts-2.5.dtd">
2.路徑調整了:web.xml包路徑
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
3.多導個log4j個jar包查看全部 -
第三步里 的request 是實現了 ServletRequestAware里的setServletRequest方法
具體如下@Override public?void?setServletRequest(HttpServletRequest?arg0)?{ //?TODO?Auto-generated?method?stub request?=?arg0; }
查看全部 -
struts2工作原理
查看全部
舉報