1.Struts 2Result Type
2.Java培训班都需要学什么
3.Struts 2çResult Type
4.如果报java培训班的源码话,都学些什么内容呢?
5.javaä¸status1åstatus2çåºå«ï¼
Struts 2Result Type
在Struts 2中,源码标签的源码type属性默认设置为"dispatcher",即页面转发。源码但开发者可以根据项目需求选择其他类型,源码比如redirect、源码发助手源码stream等。源码例如,源码以下代码展示了如何指定redirect类型:
这些result-type的源码定义可以在struts2-core-2.0..1.jar包或源代码的struts-default.xml文件中找到,该文件包含一个标签,源码定义了各种result-type,源码如下所示:
- "dispatcher"通常处理JSP页面的源码转发。
- "FreemarkerResult"用于处理FreeMarker模板。源码
- "HttpHeaderResult"控制HTTP特殊行为。源码
- "StreamResult"将InputStream对象发送给浏览器,源码常用于文件下载和AJAX数据返回。
- "StreamResult"等效于在Servlet中直接输出流,用于输出、文档等二进制流。
配置示例:
image/jpeg
StreamResult支持参数控制输出流。"VelocityResult"处理Velocity模板,缠论指标的源码"XSLTResult"处理XML/XSLT模板,"PlainTextResult"则显示原始文件内容。
"chain"(ActionChainResult)用于处理Action链,Action之间的数据共享通过ChainingInterceptor实现,但这可能会导致Spring和Hibernate session共享问题,不建议滥用。
"redirect"(ServletRedirectResult)用于重定向到一个URL,与forward不同,目标地址无法获取源Action的数据。同时,趣闲帮app源码redirect支持从源Action的ValueStack中读取值传递到目标URL。
"redirectAction"(ServletActionRedirectResult)则重定向到另一个Action。在选择redirect或forward时,应根据实际需求权衡利弊。
Java培训班都需要学什么
我了解到Java培训学习课程分为四部分:
1、Java语言基础知识的学习与应用,掌握常见的数据结构和实用算法。
2、数据库的学习与应用,熟练使用oracle数据库。强庄股启动公式源码
3、熟练运用Java脚本语言编程,掌握HTML的基本原理与运用。
4、学习软件项目开发。
Java是一门面向对象编程语言,Java语言集合了C++的优点,丢弃了缺点,所以Java语言表现的功能强大而简单易用。Java语言作为静态面向对象编程语言的C底层开发源码代表,极好地实现了面向对象理论,让程序员能够以清晰的思维方式进行复杂的编程?。
想了解更多信息,我推荐到AAA教育集团了解一下。AAA教育集团以软件教育、数字教育为主,致力于培养“高级软件工程师”为特色,以促进大学生高质量就业为办学宗旨,是业界“互联网金领生产基地”。
随着当今职业多元化发展态势,我国对IT行业软件技术人才需求越来越旺盛,校企双方联合培养软件技术人才,是学校顺应时代发展的必要举措,对推动国家信息化发展进程具有重要的现实意义。
Struts 2çResult Type
å¨é»è®¤æ¶ï¼<result>æ ç¾çtypeå±æ§å¼æ¯âdispatcherâï¼å®é ä¸å°±æ¯è½¬åï¼forwardï¼ãå¼å人åå¯ä»¥æ ¹æ®èªå·±çéè¦æå®ä¸åçç±»åï¼å¦redirectãstreamçãå¦ä¸é¢ä»£ç æ示ï¼<result name=save type=redirect>
/result.jsp
</result>
è¿æ¤result-typeå¯ä»¥å¨struts2-core-2.0..1.jarå æstruts2æºä»£ç ä¸çstruts-default.xmlæ件ä¸æ¾å°ï¼å¨è¿ä¸ªæ件ä¸æ¾å°<result-types>æ ç¾ï¼ææçresult-typeé½å¨éé¢å®ä¹äºã代ç å¦ä¸ï¼ <result-types><result-type name=chain class=com.opensymphony.xwork2.ActionChainResult/><result-type name=dispatcher class=org.apache.struts2.dispatcher.ServletDispatcherResult default=true/><result-type name=freemarker class=org.apache.struts2.views.freemarker.FreemarkerResult/><result-type name=.opensymphony.xwork2.ActionChainResultchainå ¶å®åªæ¯å¨ä¸ä¸ªactionæ§è¡å®æ¯ä¹åï¼forwardå°å¦å¤ä¸ä¸ªactionï¼æ以ä»ä»¬ä¹é´æ¯å ±äº«HttpServletRequestçãå¨ä½¿ç¨chainä½ä¸ºResultæ¶ï¼å¾å¾ä¼é å使ç¨ChainingInterceptorãChainingInterceptorçä½ç¨æ¯å¨Actionç´æ¥ä¼ éæ°æ®ãäºå®ä¸ï¼æºActionä¸ValueStackçæ°æ®ä¼è¢«åä¸æ¬¡Copyï¼è¿æ ·ï¼2个Actionä¸çæ°æ®é½å¨ValueStackä¸ï¼ä½¿å¾å¯¹äºåå°æ¥è¯´ï¼éè¿ValueStackæ¥åæ°æ®ï¼æ¯éæèå ±äº«çãæ¯å¦è¯´ï¼ä¸å¼ 页é¢ä¸ï¼ä½ å¯è½æ许å¤æ°æ®è¦æ¾ç¤ºï¼èæäºæ°æ®çè·åæ¹å¼å¯è½è¢«å¾å¤ä¸åç页é¢å ±äº«ï¼å ¸åæ¥è¯´ï¼âæ¨èæç« âè¿ä¸ªå°æ ç®çæ°æ®è·åï¼å¯è½ä¼è¢«å¾å¤é¡µé¢æå ±äº«ï¼ãè¿ç§æ åµä¸ï¼å¯ä»¥æè¿é¨åé»è¾æ½åå°ä¸ä¸ªç¬ç«Actionä¸ï¼å¹¶ä½¿ç¨chainï¼å°è¿ä¸ªActionä¸ä¸»Action串èèµ·æ¥ãè¿æ ·ï¼æåå°è¾¾é¡µé¢çæ¶åï¼é¡µé¢å§ç»å¯ä»¥å¾å°æ¯ä¸ªActionä¸çæ°æ®ã
ä»å®æä¸è®²ï¼ä½¿ç¨chainä½ä¸ºResultä¹çç¡®åå¨çä¸é¢æ说ç许å¤é®é¢ï¼æ个人ä¹æ¯é常ä¸æ¨å´æ»¥ç¨è¿ç§Resultãå°¤å ¶æ¯ï¼å¯¹äºä½¿ç¨SpringåHibernateçæåæ¥è¯´ï¼å¦æä½ å¼å¯OpenSessionInView模å¼ï¼é£ä¹Hibernateçsessionæ¯è·éHttpServletRequestçï¼æ以sessionå¨æ´ä¸ªactioné¾ä¸å ±äº«ãè¿ä¼ä¸ºæ们çç¼ç¨å¸¦æ¥æ大ç麻ç¦ãå 为æ们ç¥éHibernateçsessionä¼ä¿çä¸ä»½ä¸çº§ç¼åï¼å¨actioné¾ä¸ï¼å ±äº«ä¸çº§ç¼åæ çä¼ä¸ºä½ çè°è¯å·¥ä½å¸¦æ¥å¾å¤§çä¸æ¹ä¾¿ã
æ以ï¼è°¨æ 使ç¨chainä½ä¸ºä½ çResultï¼åºè¯¥æ为ä¸æ¡æä½³å®è·µã éå®åå°ä¸ä¸ªURL org.apache.struts2.dispatcher.ServletRedirectResultå¦æä½ å¨Actionæ§è¡å®æ¯åï¼å¸ææ§è¡å¦ä¸ä¸ªActionï¼æ2ç§æ¹å¼å¯ä¾éæ©ãä¸ç§æ¯forwardï¼å¦å¤ä¸ç§æ¯redirectãæå ³forwardåredirectçåºå«ï¼è¿éæå°±ä¸åå±å¼ï¼è¿åºè¯¥å±äºJavaç¨åºåçåºæ¬ç¥è¯ãå¨Struts2ä¸ï¼åå«å¯¹åºè¿ä¸¤ç§æ¹å¼çResultï¼å°±æ¯chainåredirectã
å æ¥è°è°redirectï¼æ¢ç¶æ¯éå®åï¼é£ä¹æºå°åä¸ç®æ å°åä¹é´æ¯2个ä¸åçHttpServletRequestãæ以ç®æ å°åå°æ æ³éè¿ValueStackçStruts2çç¹æ§æ¥è·åæºActionä¸çæ°æ®ã
åæ¶ï¼RedirectçResultæ¯æå¨é ç½®æ件ä¸ï¼è¯»å并解ææºActionä¸ValueStackçå¼ï¼å¹¶æ为åæ°ä¼ éå°Redirectçå°åä¸ã éå®åå°ä¸ä¸ªAction org.apache.struts2.dispatcher.ServletActionRedirectResult
如果报java培训班的话,都学些什么内容呢?
一般分为四个学习阶段,
第一阶段:小型桌面应用开发
阶段目的:掌握JAVA语言的语法,理解面向对象的编程思想,能够熟练使用JAVA语言开发小型桌面应用。
基础技能训练:操作系统与网络技术、JAVA面向功能对象程序设计、JAVA核心编程、JAVA网络编程
第二阶段:中小型网站应用开发
阶段目的:掌握数据库设计与开发技能,熟练使用JAVAEE组件技术开发中小型网站应用。
数据库(Oracle数据库管理及开发)、UI开发(WEB页面开发基础、XML、Ajax)、JAVAEE组件开发(jsp、servlet、jdbc)、框架技术(struts2.0、hibernate、spring、springMVC、mybatis)
第三阶段:软件工程工业实践
阶段目的:熟悉软件工程流程及规范,使用以前三个阶段所学的技能,进行软件工程工业实践。
软件工程方法论、软件工程项目实践
第四阶段:职业素质培养及就业
阶段目的:提高团队协作能力、职业道德、沟通能力和面试技巧,成功面试,成为标准IT职业人。
职业素质培养(职业道德、项目经理座谈、面试技能)、就业。
javaä¸status1åstatus2çåºå«ï¼
ããStruts1åStruts2çåºå«å对æ¯:
ããAction ç±»:
ããStruts1è¦æ±Action类继æ¿ä¸ä¸ªæ½è±¡åºç±»ãStruts1çä¸ä¸ªæ®éé®é¢æ¯ä½¿ç¨æ½è±¡ç±»ç¼ç¨èä¸æ¯æ¥å£ã
ããStruts 2 Actionç±»å¯ä»¥å®ç°ä¸ä¸ªActionæ¥å£ï¼ä¹å¯å®ç°å ¶ä»æ¥å£ï¼ä½¿å¯éåå®å¶çæå¡æ为å¯è½ãStruts2æä¾ä¸ä¸ªActionSupportåºç±»å»å®ç° 常ç¨çæ¥å£ãActionæ¥å£ä¸æ¯å¿ é¡»çï¼ä»»ä½æexecuteæ è¯çPOJO对象é½å¯ä»¥ç¨ä½Struts2çAction对象ã
ãã线ç¨æ¨¡å¼:
ããStruts1 Actionæ¯åä¾æ¨¡å¼å¹¶ä¸å¿ é¡»æ¯çº¿ç¨å®å ¨çï¼å ä¸ºä» æActionçä¸ä¸ªå®ä¾æ¥å¤çææç请æ±ãåä¾çç¥éå¶äºStruts1 Actionè½ä½çäºï¼å¹¶ä¸è¦å¨å¼åæ¶ç¹å«å°å¿ãActionèµæºå¿ é¡»æ¯çº¿ç¨å®å ¨çæåæ¥çã
ããStruts2 Action对象为æ¯ä¸ä¸ªè¯·æ±äº§çä¸ä¸ªå®ä¾ï¼å æ¤æ²¡æ线ç¨å®å ¨é®é¢ãï¼å®é ä¸ï¼servlet容å¨ç»æ¯ä¸ªè¯·æ±äº§ç许å¤å¯ä¸¢å¼ç对象ï¼å¹¶ä¸ä¸ä¼å¯¼è´æ§è½ååå¾åæ¶é®é¢ï¼
ããServlet ä¾èµ:
ããStruts1 Action ä¾èµäºServlet API ,å 为å½ä¸ä¸ªAction被è°ç¨æ¶HttpServletRequest å HttpServletResponse è¢«ä¼ éç»executeæ¹æ³ã
ããStruts 2 Actionä¸ä¾èµäºå®¹å¨ï¼å 许Actionè±ç¦»å®¹å¨åç¬è¢«æµè¯ãå¦æéè¦ï¼Struts2 Actionä»ç¶å¯ä»¥è®¿é®åå§çrequeståresponseãä½æ¯ï¼å ¶ä»çå ç´ åå°æè æ¶é¤äºç´æ¥è®¿é®HttpServetRequest å HttpServletResponseçå¿ è¦æ§ã
ããå¯æµæ§:
ããæµè¯Struts1 Actionçä¸ä¸ªä¸»è¦é®é¢æ¯executeæ¹æ³æ´é²äºservlet APIï¼è¿ä½¿å¾æµè¯è¦ä¾èµäºå®¹å¨ï¼ãä¸ä¸ªç¬¬ä¸æ¹æ©å±ï¼ï¼Struts TestCaseï¼ï¼æä¾äºä¸å¥Struts1ç模æ对象ï¼æ¥è¿è¡æµè¯ï¼ã
ããStruts 2 Actionå¯ä»¥éè¿åå§åã设置å±æ§ãè°ç¨æ¹æ³æ¥æµè¯ï¼âä¾èµæ³¨å ¥âæ¯æä¹ä½¿æµè¯æ´å®¹æã
ããæè·è¾å ¥:
ããStruts1 使ç¨ActionForm对象æè·è¾å ¥ãææçActionFormå¿ é¡»ç»§æ¿ä¸ä¸ªåºç±»ãå ä¸ºå ¶ä»JavaBeanä¸è½ç¨ä½ActionFormï¼å¼åè ç»å¸¸å建å¤ä½çç±»æè·è¾å ¥ãå¨æBeanï¼DynaBeansï¼å¯ä»¥ä½ä¸ºåå»ºä¼ ç»ActionFormçéæ©ï¼ä½æ¯ï¼å¼åè å¯è½æ¯å¨éæ°æè¿°(å建)å·²ç»åå¨çJavaBeanï¼ä»ç¶ä¼å¯¼è´æåä½çjavabeanï¼ã
ãã Struts 2ç´æ¥ä½¿ç¨Actionå±æ§ä½ä¸ºè¾å ¥å±æ§ï¼æ¶é¤äºå¯¹ç¬¬äºä¸ªè¾å ¥å¯¹è±¡çéæ±ãè¾å ¥å±æ§å¯è½æ¯æèªå·±(å)å±æ§çrich对象类åãActionå±æ§è½å¤éè¿ web页é¢ä¸çtaglibs访é®ãStruts2ä¹æ¯æActionForm模å¼ãrich对象类åï¼å æ¬ä¸å¡å¯¹è±¡ï¼è½å¤ç¨ä½è¾å ¥/è¾åºå¯¹è±¡ãè¿ç§ ModelDriven ç¹æ§ç®åäºtaglib对POJOè¾å ¥å¯¹è±¡çå¼ç¨ã
ãã表达å¼è¯è¨ï¼
ããStruts1 æ´åäºJSTLï¼å æ¤ä½¿ç¨JSTL ELãè¿ç§ELæåºæ¬å¯¹è±¡å¾éåï¼ä½æ¯å¯¹éååç´¢å¼å±æ§çæ¯æå¾å¼±ã
ããStruts2å¯ä»¥ä½¿ç¨JSTLï¼ä½æ¯ä¹æ¯æä¸ä¸ªæ´å¼ºå¤§åçµæ´»ç表达å¼è¯è¨ï¼ï¼"Object Graph Notation Language" (OGNL).
ããç»å®å¼å°é¡µé¢ï¼viewï¼:
ããStruts 1使ç¨æ åJSPæºå¶æ对象ç»å®å°é¡µé¢ä¸æ¥è®¿é®ã
ããStruts 2 ä½¿ç¨ "ValueStack"ææ¯ï¼ä½¿taglibè½å¤è®¿é®å¼èä¸éè¦æä½ ç页é¢ï¼viewï¼å对象ç»å®èµ·æ¥ãValueStackçç¥å 许éè¿ä¸ç³»åå称ç¸åä½ç±»åä¸åçå±æ§éç¨é¡µé¢ï¼viewï¼ã
ããç±»å转æ¢ï¼
ããStruts 1 ActionForm å±æ§é常é½æ¯Stringç±»åãStruts1使ç¨Commons-Beanutilsè¿è¡ç±»å转æ¢ãæ¯ä¸ªç±»ä¸ä¸ªè½¬æ¢å¨ï¼å¯¹æ¯ä¸ä¸ªå®ä¾æ¥è¯´æ¯ä¸å¯é ç½®çã
ããStruts2 使ç¨OGNLè¿è¡ç±»å转æ¢ãæä¾åºæ¬å常ç¨å¯¹è±¡ç转æ¢å¨ã
ããæ ¡éªï¼
ããStruts 1æ¯æå¨ActionFormçvalidateæ¹æ³ä¸æå¨æ ¡éªï¼æè éè¿Commons Validatorçæ©å±æ¥æ ¡éªãåä¸ä¸ªç±»å¯ä»¥æä¸åçæ ¡éªå 容ï¼ä½ä¸è½æ ¡éªå对象ã
ããStruts2æ¯æéè¿validateæ¹æ³åXWorkæ ¡éªæ¡æ¶æ¥è¿è¡æ ¡éªãXWorkæ ¡éªæ¡æ¶ä½¿ç¨ä¸ºå±æ§ç±»ç±»åå®ä¹çæ ¡éªåå å®¹æ ¡éªï¼æ¥æ¯æchainæ ¡éªåå±æ§
ããActionæ§è¡çæ§å¶ï¼
ããStruts1æ¯ææ¯ä¸ä¸ªæ¨¡åæåç¬çRequest Processorsï¼çå½å¨æï¼ï¼ä½æ¯æ¨¡åä¸çææActionå¿ é¡»å ±äº«ç¸åççå½å¨æã
ããStruts2æ¯æéè¿æ¦æªå¨å æ ï¼Interceptor Stacksï¼ä¸ºæ¯ä¸ä¸ªActionå建ä¸åççå½å¨æãå æ è½å¤æ ¹æ®éè¦åä¸åçActionä¸èµ·ä½¿ç¨ã
ããStruts1æµç¨ï¼
ããï¼1ï¼ç¨æ·ç请æ±ä»¥HTTPæ¹å¼ä¼ è¾å°æå¡å¨ä¸ï¼æ¥å请æ±çæ¯ActionServlet.
ããï¼2ï¼ActionServletæ¥æ¶å°è¯·æ±åï¼ä¼æ¥æ¾Struts-config.xmlæ件æ¥ç¡®å®æå¡å¨ä¸æ¯å¦æç¨æ·è¯·æ±çæä½ï¼æ¤å¤ç¨æ·è¯·æ±æä½åºä¸ºç»éæä½ãå¦æ没æï¼åè¿åä¸ä¸ªç¨æ·è¯·æ±æ æçåºéä¿¡æ¯ã
ããï¼3ï¼å½ActionServlet请æ±æ¾å°ç¨æ·è¯·æ±çActionåï¼é¦å å°ç¨æ·è¾å ¥ç表ååæ°æå æä¸ä¸ªActionFrom对象ï¼è¿ä¸ªActionFromå¯¹è±¡å ¶å®ä¹å°±æ¯ä¸ä¸ªJavaBean,éé¢å å«ä¸¤ä¸ªå段ï¼åå«æ¯ç¨æ·ååå¯ç ãæ¥çActionServletåæ ¹æ®struts-config.xmlä¸çé 置信æ¯å³å®æ¯å¦è¦æ§è¡ActionFrom对象ä¸çValidateæ¹æ³ãè¥Validateæ¹æ³æ§è¡æéï¼åè¿åãå¦åï¼ç»§ç»ä¸ä¸æ¥ã
ããï¼4ï¼ç³»ç»çæä¸ä¸ªç¨æ·æ请æ±çActionçå®ä¾å¯¹è±¡ï¼å°åé¢çActionFromå¯¹è±¡ä¼ éç»å®ï¼è¿è¡å®çExecute()æ¹æ³ãè¿ä¸æ¥å ¶å®å°±æ¯ç¨æ·ç»éçæ§å¶å¨ï¼å¨æ§è¡exectue()æ¹æ³æ¶ï¼å¯ä»¥è°ç¨åå°æ¨¡åéªè¯ç»éååå¯ç æ¯å¦æ£ç¡®çä¿¡æ¯ã
ããï¼5ï¼execute()æ§è¡ç»æåä¼çæActionForwardç±»åç对象并å°ä¹è¿åç»ActionServlet
ããstruts1çå¤çå¨
ããprocessMultipart()è¦æ¯æ交æ¹å¼ä¸ºpostèä¸ç±»å为Multipartåè¿åéæ°å è£ çHttpServletRequest对象
ããprocessPath()è·åurlè·¯å¾ä»¥ä¾¿éæ©struts Actionç»ä»¶
ããprocessLocale()æç¨æ·æ交çLocaleä¿¡æ¯ä¿åå°sessionä¸
ããprocessContent()设置response.setContentTypeçå¼
ããprocessNoCache()设置æ¥å¤´Cache-Control Pragma Expiresçå¼
ããprocessPreprocess()ç´æ¥è¿åtrue åç±»å¯ä»¥è¦ç该æ¹æ³å®ç°å·±çæä½
ããprocessMapping()æ¥æ¾å¯¹åºçActionMapping ä¸åå¨åè¿åé误信æ¯
ããprocessRoles()å¤æ对åºçActionæ¯å¦é ç½®äºå®å ¨è§è² ç¨æ·æ¯å¦ææé
ããprocessActionForm()æ¥æ¾ActionMappingæ¯å¦é ç½®ActionForm æåæ¥æ¾è¯¥å®ä¾ä¸åå¨åå建
ããprocessPopulate()æ¥æ¾ActionMappingæ¯å¦é ç½®ActionForm æåè°ç¨resetæ¹æ³æ¸ 空åè£ è½½è¡¨åæ°æ®
ããprocessValidate()è°ç¨ActionFormçvalidateæ¹æ³è¿åActionErrors è¦æ¯åå¨ActionMessage对象åéªè¯å¤±è´¥
ããprocessForward()æ¥æ¾ActionMappingæ¯å¦é ç½®forward æåéç¨forwardç»ææµç¨
ããprocessInclude()æ¥æ¾ActionMappingæ¯å¦é ç½®include æåéç¨includeç»ææµç¨
ããprocessActionCreate()æ¥æ¾æ¯å¦æ对åºçActionå®ä¾ ä¸åå¨åå建
ããprocessActionPerform()è°ç¨Actionçexecuteæ¹æ³
ããprocessForwardConfig() å¤ç跳转
ããstruts2çæ§è¡æµç¨
ãã1ã客æ·ç«¯åèµ·ä¸ä¸ªè¯·æ±
ãã2ã主æ§å¨FilterDispatcheræ¦æªè¯·æ±.
ãã3ã主æ§å¨éè¿ActionMapperå¤æ请æ±æ¯å¦äº¤ç»action
ããå¤ç.å¦ææ¯,é£ä¹å¤æ请æ±çactionæ¯å¦åå¨,å¦æ ä¸åå¨,æ¥é误.å¦æä¸æ¯äº¤ç»actionå¤ç,é£ä¹å°
ãã请æ±è½¬åç»å¯¹åºçwebç»ä»¶.
ãã4ã主æ§å¨å建ActionProxy对象,è¿ä¸ªå¯¹è±¡å ¨æè´è´£ actionçæ§è¡.
ãã5ãActionProxyéè¿ConfigurationManager对象è·å¾å½ å访é®çactionçç¸å ³é 置信æ¯.
ãã6ãActionProxyæ ¹æ®è·å¾çactionçé 置信æ¯,å建
ããActionInvocation对象.
ãã7ãActionInvocation对象è´è´£æ§è¡actionåé¢çæ¦æªå¨
ãã以åaction对象,并ä¸å¤çactionæ§è¡åçç»æ.
ãã8ãactionåé¢çæ¦æªå¨è¢«æ§è¡,æåæ§è¡action.
ãã9ãActionInvocationå¾å°actionæ§è¡åçé»è¾è§å¾,æ ¹ æ®é»è¾è§å¾æ¾å°ç©çè§å¾,ç¶å转å请æ±.