JAEE学習ノート(25)Struts 2(1)
19780 ワード
struts 2フレームワーク
目次
1.struts 2の紹介
2.struts 2構成について(Action構成について)---ポイント
3.struts 2結果タイプについて
4.struts 2処理要求パラメータ---重点
5.struts 2のタイプ変換
6.struts 2の検査
7.struts 2国際化
8.struts 2遮断器----重点
9.struts 2ファイルのアップロードとダウンロード
10.struts 2におけるognlとvaluestack---ポイント
11.ognlとvaluestatck---ポイント
12.struts 2でのフォームの重複コミット防止
13.struts 2のajaxプラグイン.
14.練習
=======================================================
1.struts 2フレームワークの紹介
struts 2クイックスタート:
=======================================================
struts 2のプロセス分析およびツール構成
=========================================================
struts 2構成(ポイント)
===========================================================
Action
============================================================
struts 2フレームワークでservlet apiを取得する
Result結果タイプ
目次
1.struts 2の紹介
2.struts 2構成について(Action構成について)---ポイント
3.struts 2結果タイプについて
4.struts 2処理要求パラメータ---重点
5.struts 2のタイプ変換
6.struts 2の検査
7.struts 2国際化
8.struts 2遮断器----重点
9.struts 2ファイルのアップロードとダウンロード
10.struts 2におけるognlとvaluestack---ポイント
11.ognlとvaluestatck---ポイント
12.struts 2でのフォームの重複コミット防止
13.struts 2のajaxプラグイン.
14.練習
=======================================================
1.struts 2フレームワークの紹介
: , ?
( ), , 。
, ? ?
: struts2 , ?
Struts 2 Struts , struts 1 WebWork Struts 2 。
Struts 2 Struts 1 。Struts 2 WebWork
struts2=struts1+webwork;
struts2 apache 。
struts2 mvc 。 javaweb model2 mvc 。 model2=servlet+jsp+javaBean
struts2 javaweb 。
struts2 , web , 。
struts2 :
struts1 webwork jsf springmvc
ssh---struts2 spring hibernate
ssi---springmvc spring ibatis
XWork--- webwork
Xwork : (interceptor), , ,
(OGNL – the Object Graph Navigation Language),
IoC(Inversion of Control )
-----------------------------------------------------------------------------
struts 2クイックスタート:
index.jsp------>HelloServlet-------->hello.jsp web .
index.jsp------>HelloAction--------->hello.jsp struts2
1. jar
struts2 jar struts-2.3.15.1-all .
struts2 :
apps:
docs:
lib:struts2 jar
src:
core struts2
xwork-core struts2 xwork,xwork
: struts2 , jar , apps struts2-blank copy
2. index.jsp
hello.jsp
3. struts2
1.web.xml ( )----- Filter
: struts2 。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
2. struts.xml , struts2 。
: struts2 。
:struts.xml
:src (classes )
4. HelloAction
, HelloAction String , , 。
public String say(){
return "good";
}
5. struts.xml HelloAction
/hello.jsp
6. index.jsp ,
struts 2を めて
:http://localhost/struts2_day01/index.jsp ,
HelloAction say , hello.jsp
--------------------------------------------------------------------------
struts2 :
index.jsp
hello.jsp
HelloAction
struts.xml
-----------------
1. Filter----StrutsFilter
2. web.xml StrutsFilter
struts
cn.itcast.filter.StrutsFilter
struts
/*
3. StrutsFilter , Action , hello.jsp .
// 2.1
String uri = request.getRequestURI();
String contextPath = request.getContextPath();
String path = uri.substring(contextPath.length() + 1);
// System.out.println(path); // hello
// 2.2 path struts.xml
SAXReader reader = new SAXReader();
// struts.xml document 。
Document document = reader.read(new File(this.getClass()
.getResource("/struts.xml").getPath()));
Element actionElement = (Element) document
.selectSingleNode("//action[@name='" + path + "']"); //
if (actionElement != null) {
// class method
String className = actionElement.attributeValue("class"); // action
String methodName = actionElement.attributeValue("method");// action 。
// 2.3 , Class , Method
Class actionClass = Class.forName(className);
Method method = actionClass.getDeclaredMethod(methodName);
// 2.4 method .
String returnValue = (String) method.invoke(actionClass
.newInstance()); // action , 。
// 2.5
// returnValue action result name , returnValue 。
Element resultElement = actionElement.element("result");
String nameValue = resultElement.attributeValue("name");
if (returnValue.equals(nameValue)) {
// 2.6 。
String skipPath = resultElement.getText();
// System.out.println(skipPath);
request.getRequestDispatcher(skipPath).forward(request,
response);
return;
}
}
=======================================================
struts 2のプロセス分析およびツール構成
1.
---- StrutsPrepareAndExecuteFilter ----- Interceptors ( ) ----- Action execute --- Result
* struts-default.xml
* defaultStack
---- ,
2. struts.xml
Aptana , Aptana xml struts2
struts.xml DTD ,
, dtd,
, DTD
*** DTD , DTD
3. struts2
com.opensymphony.xxx xwork-core
org.apache.struts2 core
4. struts2-config-browser-plugin-2.3.15.1
struts2
struts2/lib/struts2-config-browser-plugin-2.3.7.jar WEB-INF/lib
http://localhost/struts2_day01/config-browser/index.action struts2
=========================================================
struts 2構成(ポイント)
1.struts2
struts2 , StrutsPrepareAndExecuteFilter.
StrutsPrepareAndExecuteFilter init Dispatcher .
Dispatcher init struts2
init_DefaultProperties(); // [1] ---------- org/apache/struts2/default.properties
init_TraditionalXmlConfigurations(); // [2] --- struts-default.xml,struts-plugin.xml,struts.xml
init_LegacyStrutsProperties(); // [3] --- struts.properties
init_CustomConfigurationProviders(); // [5] -----
init_FilterInitParameters() ; // [6] ----- web.xml
init_AliasStandardObjects() ; // [7] ---- Bean
1.default.properties
: struts2
: org/apache/struts2/default.properties
2.struts-default.xml
: bean,interceptor,result 。
: struts core jar .
struts-plugin.xml
struts2 。
struts.xml
struts2 。
3. struts.properties
。
4.web.xml
, 。
default.properties
struts-default.xml
struts.xml
-----------------------------------------------------------------------
2. Action
1. : 。 action。
1.name , , 。
2.namespace action name action 。
3.extends 。
4.abstrace true/false, true, 。
2 action
1.name action , ( ) package namespace action 。
2.class Action
3.method Action , , String.
3.
1.name action , 。
action :
1.
namespace ""
class com.opensymphony.xwork2.ActionSupport
method execute
name "success"
2. action
action :
/hello.jsp
:
http://localhost/struts2_day01_2/a/b/c/hello
action。
:struts2 action ,
1.namespace="/a/b/c" action name=hello .
2.namespace="/a/b action name=hello
3.namespace="/a" action name=hello
4.namespace="/" action name=hello .
, 404 .
3. action。
: action 。
, , action , name action。
4.action
action , class 。 com.opensymphony.xwork2.ActionSupport。
, , action class 。
---------------------------------------------------------------------------
default.properties struts 。
: , ?
1.struts.xml( )
2.struts.properties( )
3.web.xml( )
, StrutsPrepareAndExecuteFilter .
struts.action.extension
do,,
struts.action.extension=action,,
strus2 .
request.setCharacterEncoding("UTF-8"); post
false ,true , true、 false
, struts.xml ( )
----------------------------------------------------------------------------
struts.xml :
: 。 , struts.xml
。
===========================================================
Action
1. Action :
1. POJO .
Java (Plain Old Java Objects)
, ( Object)
: 。
: 。
struts2 :
* struts2 struts.xml Action
* obj = Class.forName(" ").newInstance();
* Method m = Class.forName(" ").getMethod("execute"); m.invoke(obj); execute
2. , Action . com.opensymphony.xwork2.Action
: 。 , 。
: 。
public static final String SUCCESS = "success"; // ( )
public static final String NONE = "none"; // return null;
public static final String ERROR = "error"; // ( )
public static final String INPUT = "input"; // , ( )
public static final String LOGIN = "login"; // ( )
3. , ActionSupport . com.opensymphony.xwork2.ActionSupport
ActionSupport Action 。
: 、 、 .
: 。
, .
--------------------------------------------------------------------------
action :
1. method , action .
book_add, BookAction add 。
book_update, BookAction update 。
2.
1. struts.xml
2. jsp
book.jsp
book add
book update
book delete
book search
product.jsp
product add
product update
product delete
product search
book add , Book_add, struts.xml .
Book
add
{1}Action---->BookAction
method={2}--->method=add
:
1. 。
2. , 。
----------------------------------------------
3. ( )
struts.xml
: http://localhost/struts2_day01_2/book!add
BookAction add 。
book!add 。
:struts2 , default.properties
true.
struts.enable.DynamicMethodInvocation = true
============================================================
struts 2フレームワークでservlet apiを取得する
struts2 , servlet api;
struts2 servlet api :
1. ActionContext
1. ActionContext 。
ActionContext context=ActionContext.getContext();
2. servlet api
: ActionContext Servlet api, Map 。
1.context.getApplication()
2.context.getSession()
3.context.getParameter();--- request.getParameterMap()
4.context.put(String,Object) request.setAttribute(String,String);
2. ( servlet api)
1. action 。
ServletContextAware : ServletContext
ServletRequestAware : request
ServletResponseAware : response
2. 。
private HttpServletRequest request;
3. web , web .
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
: :
struts2 interceptor .
if (action instanceof ServletRequestAware) { // action ServletRequestAware
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); // request .
((ServletRequestAware) action).setServletRequest(request);// request action 。
}
3. ServletActionContext .
ServletActionContext static。
getRequest();
getResposne();
getPageContext();
--------------------------------------------------------------------
Result結果タイプ
1.name action method , .
2.type :
type :
struts-default.xml type
: chain dispatcher redirect redirectAction stream
dispatcher: , 。 action 。
chain: 。 action action。
redirect: action
redirectAction: action action。
stream: , 。
: freemarker velocity
-----------------------------------------------------------------------------
/demo6/result.jsp
/demo6/result.jsp