您的位置:首页 > 编程语言 > Java开发

mvc模式在spring和struts2中应用及原理

2013-01-04 19:33 281 查看

mvc在spring中的原理

(1)启动服务器,根据web.xml的配置加载前端控制器(也称总控制器)DispatcherServlet。在加载时、会完成一系列的初始化动作。

(2)根据servlet的映射请求(上面的helloWorld实例中针对.do请求),并参照“控制器配置文件”(即spmvc-servlet.xml这样的配置)文件,把具体的请求分发给特定的后端控制器进行处理(比如上例会分发给HelloWorld控制器进行处理)

(3)后端控制器调用相应的逻辑层代码,完成处理并返回视图对象(ModelAndView)给前端处理器。

(4)前端控制器根据后端控制器返回的ModelAndView对象,并结合一些配置(后面有说明),返回一个相应的页面给客户端。

  小结:这种FrontController模式常应用在主流的web框架中,比如典型的struts1.x框架.FrontController模式:所有请求先交给一个前端处理器(总控处理器)处理,然后前端处理器会参照一些配置文件再把具体的请求交给相应的后端处理器。后端处理器调用逻辑层代码,并根据逻辑返回相应的视图对象给前端控制器。然后前端控制器再根据视图对象返回具体的页面给客户端(提示:和springmvc一样,在struts1.x中前端控制器是Servlet,而在struts2中前端控制器是Filter)。概述FrontController模式:前端控制器预处理并分发请求给后端控制器,后端控制器进行真正的逻辑处理并返回视图对象,前端控器器根据视图对象返回具体页面给客户端。

mvc在struts2中的原理

同理:在struts2中我们最主要的也是对DispatcherServlet(也称总控制器)的一系列的操作进行管理如:

包括我们上面所提到的1.配置控制器文件,2.通过model层对数据的处理然后再回到控制器返回处理的结果,最后进行页面的跳转。下面是自定义mvc的DispatcherServlet的关键代码:

	publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//对数据的初始化 ActionMappingmapping=this.getActionMapping(request);\//通过反射机制找到具体的action对象 Actionaction=ActionManager.CreateAction(mapping.getClassName());
ResultMappingresult=null;
try{
//处理后返回的跳转页面的值 StringresultName=action.execute(request,response);
result=mapping.getResult(resultName);
if(result==null){
response.sendError(404,"未配置Action的result元素");
return;
}
if(result.isRedirect()){ response.sendRedirect(result.getValue());
}else{
request.getRequestDispatcher(result.getValue()).forward(request,response);
}

}catch(Exceptione){
response.sendError(505,"异常,请联系管理员");
}

}

mvc模式常会被人到它的优点缺点:优点:各司其职缺点:modelII相对modelI来说配置复杂.




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: