SpringMVC的控制器用于处理用户的请求范式相当于Struts1里的行动,他们的实现机制,运行原理都类似
控制器是个接口,一般直接继承AbstrcatController,并实现handleRequestInternal方法.handleRequestInternal方法相当于Struts1的执行方法
进口org.springframework.web.servlet.ModelAndView; 进口org.springframework.web.servlet.mvc.AbstractController; 公开课CatController延伸AbstractController { 私人ICatService catService;//setter, getter略 保护ModelAndView handleRequestInternal (HttpServletRequestrequest HttpServletResponse响应){抛出异常 action=request.getParameter字符串(“行动”); 如果“列表”.equals(行动)){ 返回this.list(请求、响应); } } 保护ModelAndView列表(HttpServletRequestrequest HttpServletResponse响应){抛出异常 ListcatList=catService.listCat (); 请求。setAttribute (“catList catList); 返回新ModelAndView(“猫/listCat”); } }
SpringMVC没有内置数据的封装,开发者可以自己封装数据转换代码
SpringMVC独特的地方在于视图层的处理上.handleRequestInternal返回ModelAndView对象,可以看做是对JSP对象的封装.ModelAndIView直接接受JSP页面的路径。例如参数“猫/listCat”,只是JSP路径的一部分,实际完整的路径是“web - inf/JSP/猫/catList.jsp路径前后的部分是配置在配置文件中的
除了制定JSP路径,ModelAndView还可以直接传递模型对象到视图层,而不用事先放到请求中,例如newModelAndView(“猫/listCat”、“猫”,猫),如果传递多个参数,可以使用地图,如
地图地图=newHashMap (); map.put(“猫”,猫); map.put (“catList”, catList); 返回新ModelAndView(“猫/listCat”,地图);>之前一般使用一个独立的xml文件如spring-action.xml专门配置网络相关的组件
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !DCTYPEbeans公共”——//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”在 & lt; beans> & lt; bean id=皏iewResolver”类=皁rg.springframework.web.servlet.view.InternalResourceViewResolver”比; & lt;属性名=扒白骸北? & lt; value>/web - inf/jsp/& lt;/value> & lt; !——JSP前缀——比; & lt;/property> & lt;属性名=昂笞骸北? & lt; value> .jsp& lt; !——JSP后缀——比; & lt;/property> & lt; !——配置URL映射——比; & lt; bean id=皍rlHandlerMapping”类=皁rg.springframework.web.servlet.handler.SimpleUrlHandleMapping”比; & lt;属性名=坝成洹北? & lt; props> & lt; !控制器的URL会被配置成“cat.mvc”——比; & lt;支撑关键=" cat.mvc "祝辞catController & lt; props> & lt;/property> & lt;/bean> & lt; bean id=癱atController”类=癱om.clf.spring.CatController”比; & lt;属性名=" catService“ref=癱atService祝辞& lt;/property> & lt;/bean> & lt;/beans> web . xml配置 & lt; context-param> & lt; !——春天配置文件的位置——比; & lt; param-name> contextConfigLocation & lt; param-value>/web - inf/classes/中,/web - inf/classes/spring-action.xml & lt;/param-value> & lt;/context-param> & lt; listener> & lt; !——使用侦听器加载弹簧配置文件——比; & lt; listener-class> org.springframework.web.context.ContextLoaderListener & lt;/listener-class> & lt;/listener> & lt; servlet> & lt; !——春天分发器——比; & lt; servlet-name> spring & lt; servlet-class> org.springframework.web.servlet.DispatcherServlet & lt; init-param> & lt; param-name> contextConfigLocation & lt; param-value>/web - inf/classes/spring-action.xml & lt;/init-param> & lt; load-on-startup> 1 & lt;/load-on-startup> & lt; !——启动时加载——比; & lt;/servlet> & lt; servlet-mapping> & lt; servlet-name>spring & lt; url> * .mvc & lt;/servlet-mapping>>之前如果一个控制器要处理多个业务逻辑,可以使用MultiActionController,相当于Struts 1中的DispatchAction,能根据某个参数将不同的请求分发到不同的方法上
进口org.springframework.web.servlet.mvc.multiaction.MultiActionController; 公开课CatController延伸AbstractController { 私人ICatService catService;//setter, getter略 保护ModelAndView添加(HttpServletRequestrequest HttpServletResponse响应){抛出异常 …… 返回新ModelAndView(“猫/addCat”); } 保护ModelAndView列表(HttpServletRequestrequest HttpServletResponse响应){抛出异常 ListSpring MVC中模块代码详解