Spring MVC中模块代码详解

  

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响应){抛出异常   List

Spring MVC中模块代码详解