发布一篇层层递进Struts1(五)的地方理流程
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......这篇博客我们深切Struts框架实行部分源码,从ActionServlet的process函数入手下手,看一下其内涵的实行历程。
流程图
以下游程图展现的是ActionServlet和RequestProcessor两个类用到的函数,如RequestProcessor挪用的别的类的函数不再申明。
函数申明
我们选择几个主要的函数申明,别的函数则复杂申明一下便可。
ActionServlet
process
/***<p>Performthestandardrequestprocessingforthisrequest,andcreate*thecorrespondingresponse.</p>**@paramrequestTheservletrequestweareprocessing*@paramresponseTheservletresponsewearecreating**@exceptionIOExceptionifaninput/outputerroroccurs*@exceptionServletExceptionifaservletexceptionisthrown*/protectedvoidprocess(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{ModuleUtils.getInstance().selectModule(request,getServletContext());ModuleConfigconfig=getModuleConfig(request);
RequestProcessorprocessor=getProcessorForModule(config);if(processor==null){processor=getRequestProcessor(config);}processor.process(request,response);}}在调试时起首进进这个函数(Tomcat启动终了,发生哀求后),这个函数的感化是猎取加载阶段发生的Module对象,发生struts逻辑处置的次要对象RequestProcessor。
RequestProcessor
process
/***<p>Processan<code>HttpServletRequest</code>andcreatethe*corresponding<code>HttpServletResponse</code>ordispatch
*toanotherresource.</p>**@paramrequestTheservletrequestweareprocessing*@paramresponseTheservletresponsewearecreating**@exceptionIOExceptionifaninput/outputerroroccurs*@exceptionServletExceptionifaprocessingexceptionoccurs*/publicvoidprocess(HttpServletRequestrequest,
HttpServletResponseresponse)throwsIOException,ServletException{
//Wrapmultipartrequestswithaspecialwrapperrequest=processMultipart(request);//IdentifythepathcomponentwewillusetoselectamappingStringpath=processPath(request,response);if(path==null){return;
}if(log.isDebugEnabled()){log.debug("Processinga"+request.getMethod()+"forpath"+path+"");}//SelectaLocaleforthecurrentuserifrequested
processLocale(request,response);//Setthecontenttypeandno-cachingheadersifrequestedprocessContent(request,response);processNoCache(request,response);//Generalpurposepreprocessinghookif(!processPreprocess(request,response)){return;}this.processCachedMessages(request,response);//IdentifythemappingforthisrequestActionMappingmapping=processMapping(request,response,path);if(mapping==null){return;
}//Checkforanyrolerequiredtoperformthisactionif(!processRoles(request,response,mapping)){return;}//ProcessanyActionFormbeanrelatedtothisrequestActionFormform=processActionForm(request,response,mapping);processPopulate(request,response,form,mapping);//ValidateanyfieldsoftheActionFormbean,ifapplicabletry{if(!processValidate(request,response,form,mapping)){return;}}catch
(InvalidCancelExceptione){ActionForwardforward=processException(request,response,e,form,mapping);processForwardConfig(request,response,forward);
return;}catch(IOExceptione){throwe;}catch(ServletExceptione){throwe;}//Processaforwardorincludespecifiedbythismappingif(!processForward(request,response,mapping)){return;}if(!processInclude(request,response,mapping)){return;}//CreateoracquiretheActioninstancetoprocessthisrequest
Actionaction=processActionCreate(request,response,mapping);if(action==null)
{return;}//CalltheActioninstanceitselfActionForward
forward=processActionPerform(request,response,
action,form,mapping);//ProcessthereturnedActionForwardinstance
processForwardConfig(request,response,forward);}<p>
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种将安全性(Security)列为第一优先考虑的语言 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
页:
[1]