1 / 10
SSHЅלߤߌוЭ॒
By fydstudio@live.com
ॕ▁Ӣ͵StrutsוЭ॒
StrutsׂйMVCગઋࠥڔङ Java Web FrameWorkͫݕ Java WebڐՇବچ
ͧModelؘ࣫Џԇମ૾ङ JavaBean۪ EJBুўͺView▲ু JSPކўুۨͺControlActionServletչ Servlet ͨ
Strutsঐѝ͵
1澝ActionServlet extends HttpServletͫݎݶબࡌҒێͫ߿݇ކў struts-config.xmlИ
ҫপ pathً
ۅङқرબࡌсোثځङ actionثהࣲͧActionServletӫڏ actionثͨ
2澝Action ոդث ͫݎݶActionServletબࡌ લͫऀ JavaBeanثબࡌҟӀѽהࣲٷرրځҒێଏ֛োActionServlet
3澝ActionForm ث੮ԥރ݇ਘԈد澝ચ澝୍
4澝Struts-config.xml ކўͫث ActionFormͫރ࢛݇ͫAction љՃ૩૨ڬङͺৠॻ֢எԗҒێ࢛ङ
ͺࠃ߫澝ݖўङ
StrutsٖҀࡗस͵
1澝ڢ web serverկԈޞؘͫ҆ԗActionServletͫલऀҿ initސࡣͫserverପଋઆߤ struts-config.xmlކўੂՈ
ҒێͧSAXઆߤͨͫ رҒێݹ֨՟य़ثИ
2澝ClientՇଟ▲З*.DoङબࡌޞͫActionServlet ߲܇ ActionMappingҒێҫপ pathًۅқͫӮލ
ީի֨થ૨ڬબࡌͫif false404 error
3澝If TRUEӮލҫপީի߄ nameًۅͫif falseӫڏ Actionͫલऀ executeސࡣրځ Clientબࡌ
4澝If TRUEӫڏثځङ ActionFormثͧActionForm ثю௳ઍӫڏ▲ࠩͨͫ ପଋՆذߑӲਘԈدރ݇ͫӫڏ
Actionͫલऀ executeސࡣրځ Clientબࡌ
2 / 10
▁Ж֧࠭ Struts2ߤߌЗࣩדࣂלࠃӢНјЇӘЖࠖற
1 ؚۯঀӬԗ▲Зܶէ Servletؠ֘ͧ҆ײ Tomcatͨङબࡌ
2 Зબࡌଋ▲ӧङଋࢡ֘ͧFilterͨ ͧпଋࢡ֘И߄▲ЗՒҟ ActionContextCleanUp ङՕଣଋࢡ֘ͫ
Зଋࢡ֘ثй Struts2չҿѕࠃ߫ङதۨڮ߄ٮԉͫ҆ײSiteMesh Pluginͨ
3 ݎवFilterDispatcherੴલऀ FͫilterDispatcherતActionMapperߛӐؔЗબࡌީիલऀ߮ЗAction
4 ײߧActionMapperӐؔલऀ߮ЗActionͫFilterDispatcher܋બࡌङהࣲсো ActionProxy
5 ActionProxyପଋ Configuration Managerતࠃ߫ङކўͫ܇ӱલऀङActionঝ
6 ActionProxyӫڏ▲ЗActionInvocationङؘ҆澞
7 ActionInvocation ؘ҆҅ऀոդࠥڔߛલऀͫ֨લऀ Actionङଋ३ӹեͫࢄՃӱबҼܩ۬֘ͧIntercepterͨ
ङલऀ澞
8 ▲ޚ Actionۼ੧؏ࡂͫActionInvocation િુ߿݇ struts.xml Иङ܇ӱثځङଏ֛ৈߧ澞ଏ֛ৈߧପٯ
ީͧѸЉۈީͫЭՕ ਈީՐיङ▲З Actionͨ▲Зੴ੮ॐङ JSP۪ৱ FreeMarkerङࠥ࣍澞֨੮ॐङଋ३ИՕ
љ҅ऀ Struts2 ࠃ߫И܈ङ߶澞֨Зଋ३ИࢄՃӱ ActionMapper
Strutsࣩକ
ͧ1ͨͭ web.xmlކў
П؏ۨث StrutsPrepareAndExecuteFilterङ ؉ͫङؘૅީ▲Зଋࢡ֘ ؉ͫિુӬԗޅЗ Strutsࠃ߫
ٷЌהࣲ۱߄ङબࡌ澞
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
ͧ2ͨͭ struts.xmlކў
3 / 10
ࠃ߫ङ߾ڶކўؼީЗ௳ઍङ struts.xmlކў澞
Resultࣩூੜ६ֹފ dispatcherऀߛէவͫପٯהࣲ JSP澞
ͧ3ͨͭ Actionङ
▲З ActionՕљੴךࠩޥذ(Ց actionИङ nameЉգ)
nameactionդ०
class: ثځङঝङ૨ڬ
method: લऀActionИङސࡣդ
ױ߈Јକͧூੜਸ਼ executeݱࡄ
ͧ4ͨͭ struts-default.xml
࠴ކўީ struts2ࠃ߫௳ઍԆૺङކў ؉ͫؔУд struts2▲п߾ڶbeanչܩ۬֘ ؉ͫѫਘԈԕխ(included)
ӱ struts.xmlކўИ(ؘૅީପଋ)ͫٷО۩ћݕ҈д▲п߶ӕङ澞
ͧ5ͨͭ ҿ؉ކў
struts.properties struts-plugin.xml
һи namespace
֙Ж୪ਦتઊrequest澝session澝application澝response
StrutsЗܶрݤܨࣩГमݱړ͵
ސࡣ▲URLՀރ
ސࡣиForm੮ԥ
Action६Зڰ୪ਦتઊࣩݱࡄ͵
ސࡣ▲ள IoCͧݏӲՆ Inversion of Controlͨސڔ
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext application = ServletActionContext.getServletContext();
HttpSession session = request.getSession();
ސࡣи IoCސڔͫActionঝؘ࣫ثځङݎՍͫײڢږҵ RequestثޞͫސࡣײЈ
/forward/test.jsp
/forward/test1.jsp
struts.xmlИङӄؠ
test1
ݎ֪֭
4 / 10
public class MemberAction extends ActionSupport implements ServletRequestAware{
HttpServletRequest request;
…
public void setServletRequest(HttpServletRequest arg0) {
this.request=arg0;
}
…
}
ҾєܯՌ͵
1. ServletRequestAware
2. ServletResponseAware
ܯՌݱࡄ͵
setServletResponse(HttpServletResponse response)
1. SessionAware
ܯՌݱࡄ͵
setSession(Map session)
य़ސࡣੂڱङީ sessionङًۅޥذ(setAttribute)
Strutsܶрய੩ࣩГमݱࡄ͵
ސࡣ▲ӯऀ JavaScript੧ચ
ސࡣи୍ૺ ActionSupportИङސࡣ validate
ױѽ১ؓТ▁Ж܊ۍ֗ͺ
আ▲࠵ਘؔУ▲Зؘ࣫ InterceptorݎՍ۪ͧৱ܈ਘ AbstractInterceptorͨङঝ澞
আи࠵֨ strutx.xmlИࡨӆЇ▲࠵ИؔУङܩ۬֘澞
আІ࠵֨҅ऀङ Action ИږऀЇଚؔУङܩ۬֘ͫОдސҎЭՕرܩ۬֘ؔУО௳ઍङܩ߽۬֘ͫ֨Љ
Ԇࣔ࠺גޢङەӑЈ۱߄ङ ActionୃੴЗܩ۬֘ܩ۬澞
܊ۍ֗ոࢂࣩ֗ԙӯ
ܩ۬֘ީׂй javaङՆذߑӲङͫ৲ଋࢡ֘ީׂйӡރ֛લ
ଋࢡ֘҉й servletؠ֘ͫ৲ܩ۬֘Љ҉й servletؠ֘
ܩ۬֘Ցਈث actionબࡌҁऀͫ৲ଋࢡ֘өՕљثәЧ۱߄ङબࡌҁऀ
֘Օљઘ actionЇЈކ澝қ߷ୌङثͫ৲ଋࢡ֘Љਈͫଋࢡ֘Пث requestչ response੧הࣲ
֨ actionङࣿոյߊИͫܩ۬֘Օљךࠩੴલऀͫ৲ଋࢡ֘Ցਈ֨ؠ֘Ӭԗޞੴલऀ▲ࠩ
5 / 10
࣐҄܊ۍࣩ֗Ѩ䎯
ࢲࡴۅ
Actionঝङऩ߶ԆЋࡨ.
ґચдїुङՕયۅչ୍ऀۅ.
ࡹડଋ३Ԇؠޣ
MVC੦ਗ਼ࠆړࡘ߅͵
ڠӲر applicationङ૿ҵͫהࣲչ૿ӟӣڐͫӣОModel-View-Control
ModelЏԇރ݇չЏԇମ૾ֺͫࠥਈОךЗં֣ݕ҈ރ݇ͫݕځऀՕ୍ऀۅ
Viewં֣ީЊऀۯслङउவͫުॐबҼރ݇ٷݎݶऀۯङ૿ҵރ݇ͫં֣Љ੧ѠѾؘஎङЏԇהࣲ߲ͫતֺࠥङ
ЏԇࣙہͫѸީЉਈݷֺࠥͫݎݶֺࠥהࣲङҒێͫԈہުॐৈߧ
Controlݎݶऀۯબࡌͫٷલऀثځङֺࠥչં֣րځબࡌ
Ѩ䎯͵1澝ךЗં֣ਈһц▲ЗֺࠥͫݕځऀङՕ୍ऀۅ
2澝ֺࠥީਘԕխङͫչં֣澝ݏӲ֘ґܴबثࣞॹͫՕљސҎ֪ݷՊރ݇كչЏԇମ૾ؘ࣫ͫߣۨਧױङߠ凥
ՠ
3澝ݏӲ֘ݕд applicationङՕֺչࢲࡴۅ
ॕзӢ͵HibernateוЭ॒
Hibernate͵આӐރ݇ڀٵՖङ१ࠛͫث JDBC APIҁૹङدͫORMۃͧث----Ҽֺޥذͨ
ьСފܕРԖ P͵ersistence ͫؼީ܋ӄИङރ݇ґӱ्दЇ҈љե۱ऀܴͫ Сԗङؘ࣫ଋ३םךପଋރ݇ڀߛ؏ۨ澞
تઊһॸކدͣObject Relational Mappingͫএ०ORMͤ
ORM ީ▲य़ОдઆӐவէثЊҼރ݇ڀ֨ङлЉԙङ࣫ङ܉ߐ澞এԥङપͫORM ީପଋ҅ऀݔଚث
չރ݇ڀФޥذङҫރ݇ͫر java ३پИङثਘԈܴСԗӱҼރ݇ڀИ澞ߎૅЇؼީرރ݇ђ▲य़ڥڔ݅
6 / 10
ӱՐי▲य़ڥڔ澞
јզتઊࣩڤړ؎ۉتݤܨٿࣩݒҀ͵
1澝ثչރ݇ڀ੮ङޥذҼͺ
2澝ثङًۅչ੮ङ࠼ڏॹޥذҼͺ
3澝ثФثځރ݇ڀ੮ФङޥذҼ
hibernate.cfg.Xml͵ї੮ޅЗ application Ҷقͫثځ▲Зރ݇ڀକݎҒێङͺކ
ўИԕխдପଋDialectݎՍؘ࣫ރ݇ڀސઈߑӲͺ
PojoܴСԗङ▲Зثͫঝѷй java Vo ثͺpojo ঝڷீؘ࣫ Serializable ݎՍͫիөپӧԗڑٯͺݕ҈௳
ઍङޗՀߣଭӡރͺ
ܕРԖࢩ㓆ࣩՉԖ͵ЛޞࣙہܴͫСԗࣙہͫख़ࣙہͺ
SessionFactory͵୍ͧиͨͫ ԕխд hibernate۱߄ޥذކўङ࢛३پͺثйރ݇ڀ੮ङׂߎݱҁધՏ
੧ؔУͺҭڢ applicationչ DBФङїࣲͫ▲Зރ࢛݇юثځ▲З sessionfactoryͫݵܴٷՇઘͫݵܴি३
؍Ҷͺ
Session͵ૹͧ▲ͨͺ дڢࠩݱҁङ pojoث ͺӗص੧ޞͫݕۅਈͺ hibernateࣿۨ
ङ sqlધՏͺளি३؍ҶͺsessionЉਈһцͫࠩݱҁڐկҼ sessionͺ
डં pojoثङࣙہͫڢ pojoثރ݇ՇࣿՊԗͫhibernateਘԈޏރ݇ڀґચ pojoչ DBգ࠵ͺ
Session নࣩЅלҀ࣐͵
1ͫӗصރ݇ڀङઘைࣤͫݕઘۅਈ澞
2ͫґચИङثЊރ݇ڀգ࠵ͫѹйИङث०ОܴСԗث澞
3ͫڢܴСԗثФ֨Ҽ৻ޞͫSession ґચЉӟ࣫ث֣ङ࠸୧澞
SessionѪੱ
Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
//ރ݇ڀݱҁ
session.getTransaction().commit();
Hibernateକࠖற
আ▲࠵ӫڏ▲Зؘѽঝͫԕխثځङؘѽًۅ澝௳ઍङߣଭӡރͧޗՀރङߣଭӡރ 澝ͨЗًۅङ getterչ
setterސࡣ
7 / 10
আи࠵ӫڏޥذކў(Student.hbm.xml) ͜ࡉڿ▁Їԅ९Ѽ
<--! Lazy ڌԅૉ -->
<--! type ՔјЈӉͧॸঞѪ১ԇ੫ӯ -->
<--! generatorОି࣏ۉज़ࣛ -->
<--! Id࣐ؓТОି�Րৗޥ▁Ж -->
<--! ױ߈ੌՔјԅmany-to-oneۋ one-to-manyॗ -->
আІ࠵ؔУ Hibernateކў
ѹ֨ாऩङ srcऩڣЈͫӫڏ▲Зځऀ HibernateङކўͫHibernate.cfg.xml
ކدݧѝࣩԅҴ
߂եͫࡹડЗ Hibernateځऀ
ੇૉتઊ͵
load(ͨސࡣ
Object loadͧClass entityClass,Serializable idͨ
ऀйђރ݇ڀԆૺܶؔङܴСԗثӱ SessionИͫױ߈ܗࣩؓڢЈ֧Ө۳ӞڐٮͫЊ getͧ ͨސ
ࡣЉգ澞
getͧͨސࡣ
Object getͧClass entityClass,Serializable idͨ
ђރ݇ڀԆૺܶؔङܴСԗثӱ SessionИͫײߧܶؔङઓڣЉ֨өଏ֛ null澞
ॕЅӢ͵SpringוЭ॒
Spring͵ީ▲Зڐ࢛ङݏӲՆ(Inversion of Control ,IoC)չவէӤவ(AOP)ङૹؠ֘ࠃ߫ͫ؉ङПऩڱީএ
ԗѣЏڐՇ澞
ܰӱՅૃ IOCͣ Inverse of Controlͤ͵ Spring߾ڶࠢھͺؘ ࣫дثФҼङՆ ͫثФङफݎ҉Ҽं IOC
ؠ֘ݏӲͺIOCОગઋࠥڔЇङࠢھͫӣОDependency Injectionͧ҉ࡨҵͨչ Service Locatorͧ߆ԇؔѹ֘ͨ
फ़Ԥࣩंؠ֘ߛࣲثФङ҉Ҽͧ৲Љީثߎ૯ߛࣲͨͫ ؼՒȔݏӲՆȕ۪Ȕ҉ࡨҵ”
զӣस AOPͣAspect oriented programingͤ͵ Springङ߾ڶࣔͺӤவїࣲثОऱؘثݕ҈ङ߮З
߆ԇйЏԇ߾ڶङֿ߆ԇͺ
жԆ͵ԽۅͧAtomicͨͫ ▲ਚۅͧConsistencyͨͫ ஜख़ۅͧIsolationͨͫ ܴСۅͧDurabilityͨ
Struts ո Springࣩঐۉ�ࠖற͵
আ▲࠵ Ԇૺ Jarԕͧstruts2-spring-plugin-2.1.8.jar澝spring.jar澝commons-logging.jarͨ
আи࠵ Springङडծ֘ͧ֨web.xmlИͨ,િુ կԈ Springͫڐٗҁ
org.springframework.web.context.ContextLoaderListener
8 / 10
۪ৱ ServletͧДय़ސࡣѠଣ▲य़ͨ
context
org.springframework.web.context.ContextLoaderServlet
আІ࠵҉ࣁ SpringङઁөͫबҼङ beanؔУ澞
҆ײ֨ RegisterBean.xmlИࢍԆ RegisterActionঝङ beanؔУ
আ֚࠵ғݷԽߛङ Struts2ИҼй Actionङֲࠥކўͫر ActionИङ classًۅङқґܴչ SpringИङ
ؔУङ beanङ idًۅङқґܴ▲ਚ
----------
----------
/sshLabwork1/register_xhtml.jsp
/sshLabwork1/register_detail_xhtml.jsp
আм࠵ࢍԆ▲З௳ઍ SpringԆૺކўApplicationContext.xml,࠴ކўङ௳ઍѹ֨WEB-INFऩڣЈ
//ڢથކўЉ֨௳ઍѹޞͫ֨web.xmlИગ▲ЗײЈՀރ
contextConfigLocation
/WEB-INF/classes/spring/applicationContext.xml
9 / 10
ॕ֙Ӣ͵SSHߤߌࣼһӃ؟
log4j֧WebڏՆЗࣩڀ࣐
log4jީ▲Зਈלٮԉ३پմ܋Ғێ૿ӟӱЉգѐङٗӀ澞؉Օљر૿ӟङҒێӣۨЉգङӰͫՕљਘؔУࠀ
ڔԗ૿ӟङҒێ澞
Log4j࣒ЅЖଜੌࣩঐѝ߄ۉ͵
Logger -ޙںҒێङઓڣ֘
Appender -ޙںҒێङ૿ӟऩङ֪
Layout -ޙںҒێङ૿ӟࠀڔ澞
Log4j▁Һ֧�ЖׁޯࣩݺڹঃӯͧёѹӰள͵TRACE澝DEBUG澝INFO澝WARN澝ERRORљՃ FATAL澞
Log4jକࠖற͵
আ▲࠵۱ङ jarކў
ږҵ log4jबځ࣍ߎङ jarކўՃҿҼ৻ކўͫ҆ײ commons-logging.jarչ log4j-1.2.15.jar
আи࠵ӊ▲Зކў
ѹݹ֨ srcЈͫୂ০ޞ֨ classesऩڣЈ
ކўդ
ׂй xmlङ log4j.xml
ׂйًۅކўङ log4j.properties
আІ࠵֨їुИ૿ӟҒێ
Logger logger = Logger.getLogger(this.getClass().getName());
logger.warn("----helloo json");
10 / 10
AjaxͧAsynchronous JavaScript and XML֧ͨWebڏՆЗࣩڀ࣐
Љީ▲Зޏङ܉ߐͫзؘЇͫ؉ީ▲пޛ߄ۨࣅङ܉ߐљ▲य़ҶޏԆڠםङސڔޅՠ֨▲澞
Ajaxࣩһି۪ޱ͵
҅ऀ XHTML(HTML)չ CSSߣڏ߶ӕԗङيॐك
҅ऀ DOM੧Ԉہުॐչсл
҅ऀ XMLչ XSLT੧ރ݇с݅չݱ
҅ऀ XMLHttpRequestڑ࠵ੂՈރ݇
҅ऀ JavaScriptر۱߄ҫপেؔ֨▲
Ajaxڀ࣐सٽࣩѨԍ֧и͵
1. ପଋڑ࠵ࠥڔͧڐࠖՆ૮࠭ͨͫݕԟдऀۯѽ
2. ѩԗдࡻઃ֘չ߆ԇ֘ФङѮ૿ͫӗصЉڷङރ݇ڪଏͫӗصд٫ءԩऀ
3. Ajaxږݲؚ֨ۯঀ੧ͫ܈ܛд▲ୂӣߎߛं߆ԇ֘܈ܛङٗҁͫђ৲ӗصдםऀۯЈङ߆ԇ֘િૺ澞
XMLHttpRequestتઊࣩݱࡄي㓬ͧXMLHttpRequestثީ Ajax ࣩߟڵͨ
ݱࡄ͵
open()ڏॹӱ߆ԇ֘ङޏબࡌ
send()է߆ԇ֘Շଟબࡌ
onreadystatechange֛ܶؔલӡރ
readyStateݕ҈ڢӹ HTML ङؼࣙہ
status߆ԇ֘րځङࣙہїु
responseText߆ԇ֘ଏ֛ङબࡌրځކߎ
ًۅ પޢ
readyState ثࣙہ 0=ߌӬԗͺ 1=યՈИ 2=ٝયՈͺ3=слИͺ 4=؏ۨ
responeText ߆ԇ֘ଏ֛ӄؠङކߎ
responeXML ߆ԇ֘ଏ֛ङ XMLކࠈث
status ߆ԇ֘ଏ֛ङࣙہुͫײ 404ͫ200ঈ
200࠳ٯͺ404࡚߄܇ӱކў۪ऩڣͺ500߆ԇ֘ӄୂ୪ન
statusText ߆ԇ֘ଏ֛ङࣙہुङކߎҒێ