首页 >> 中医保健

设计模式设计自己的

中医保健  2021年09月06日  浏览:6 次

评分高的站 6。前端控制器(FrontController),它的任务我们已经很清楚,初始化配置文件;存储所有action到ServletContext供整个框架使用;得到发起请求的path,提供给Dispachter查找相应的action;调用Dispatcher,执行getNextPage方法得到下一个页面的url并转发:

publicvoidinit()throwsServletException{ //初始化配置文件 ServletContextcontext=getServletContext(); Stringconfig_file=getServletConfig().getInitParameter(\"config\"); Stringdispatcher_name=getServletConfig().getInitParameter(\"dispatcher\"); if(config_file==null||config_uals(\"\")) config_file=\"/WEB-INF/l\";//默认是/WEB-INF/下面的strutslet-config if(dispatcher_name==null||dispatcher_uals(\"\")) dispatcher_name=FAULT_DISPATCHER; try{ MapString,ActionModelresources=wInstance()//工具类解析配置文件 .parse(config_file,context); tAttribute(TIONS_ATTR,resources);//存储在ServletContext中 (\"初始化strutslet配置文件成功\"); }catch(Exceptione){ ror(\"初始化strutslet配置文件失败\"); intStackTrace(); } //实例化Dispacher try{ Classc=Class.forName(dispatcher_name); Dispatcherdispatcher=(Dispatcher)wInstance(); tAttribute(SPATCHER_ATTR,dispatcher);//放在ServletContext (\"初始化Dispatcher成功\"); }catch(Exceptione){ ror(\"初始化Dispatcher失败\"); intStackTrace(); } .....

doGet()和doPost方法我们都让它调用process方法:

protectedvoidprocess(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ ServletContextcontext=getServletContext(); //获取action的path StringreqURI=tRequestURI(); inti=stIndexOf(\".\"); StringcontextPath=tContextPath(); Stringpath=bstring(ngth(),i); tAttribute(QUEST_ATTR,path); Dispatcherdispatcher=(Dispatcher)tAttribute(SPATCHER_ATTR); //makesurewedon\'tcachedynamicdata tHeader(\"Cache-Control\",\"no-cache\"); tHeader(\"Pragma\",\"no-cache\"); //usethedispatchertofindthenextpage StringnextPage=tNextPage(request,context);//调用Dispatcher的getNextPage //forwardcontroltotheview RequestDispatcherforwarder=tRequestDispatcher(\"/\" +nextPage); rward(request,response);//转发页面 }

7。最后,l的配置就非常简单了,配置前端控制器,提供启动参数(配置文件所在位置,为空就查找/WEB-INF/下面的l文件),我们把所有以action结尾的请求都交给FrontController处理:

servlet servlet-nameStrutsletController/servlet-name ontController/servlet-class !-- init-param param-nameconfig/param-name param-value/l/param-value /init-param -- load-on-startup0/load-on-startup /servlet servlet-mapping servlet-nameStrutsletController/servlet-name url-pattern*.action/url-pattern /servlet-mapping

最后,让我们看看整个框架图:

乌鲁木齐治疗前列腺炎费用多少钱
吃什么可以防止补气流失
湛江癫痫病检查
友情链接