一聚教程网:一个值得你收藏的教程网站

热门教程

Spring中MVC模块代码详解

时间:2022-06-29 01:01:46 编辑:袖梨 来源:一聚教程网

SpringMVC的Controller用于处理用户的请求。Controller相当于Struts1里的Action,他们的实现机制、运行原理都类似

Controller是个接口,一般直接继承AbstrcatController,并实现handleRequestInternal方法。handleRequestInternal方法相当于Struts1的execute方法

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class CatController extends AbstractController{
	private ICatService catService;
	//setter、getter略 
	protected ModelAndView handleRequestInternal(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
		String action =request.getParameter("action");
		if("list".equals(action)){
			return this.list(request,response);
		}
	}
	protected ModelAndView list(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
		List catList =catService.listCat();
		request.setAttribute("catList", catList);
		return new ModelAndView("cat/listCat");
	}
}

SpringMVC没有内置数据的封装,开发者可以自己封装数据转换代码

SpringMVC独特的地方在于view层的处理上。handleRequestInternal返回ModelAndView对象,可以看做是对JSP对象的封装。ModelAndIView直接接受JSP页面的路径。例如参数"cat/listCat",只是JSP路径的一部分,实际完整的路径是"WEB-INF/jsp/cat/catList.jsp",路径前后的部分是配置在配置文件中的

除了制定JSP路径,ModelAndView还可以直接传递Model对象到View层,而不用事先放到request中,例如newModelAndView("cat/listCat","cat",cat),如果传递多个参数,可以使用Map,如

Map map = newHashMap(); 
map.put("cat",cat); 
map.put("catList",catList); 
return new ModelAndView("cat/listCat",map); 

一般使用一个独立的xml文件如spring-action.xml专门配置web相关的组件

 
 
 
    
        
          /WEB-INF/jsp/ 
        
        
          .jsp          
        
  
    
    
        
           
              catController 
           
        
    
    
        
    
 
  
web.xml配置 
 
   contextConfigLocation 
    
       /WEB-INF/classes/applicationContext.xml, 
       /WEB-INF/classes/spring-action.xml   
    
 
  
 
    
       org.springframework.web.context.ContextLoaderListener 
    
 
  
 
   spring 
   org.springframework.web.servlet.DispatcherServlet 
    
       contextConfigLocation 
       /WEB-INF/classes/spring-action.xml 
    
   1 
 
  
 
    spring 
   *.mvc 
 

如果一个Controller要处理多个业务逻辑,可以使用MultiActionController,相当于Struts 1中的DispatchAction,能根据某个参数将不同的请求分发到不同的方法上

import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class CatController extends AbstractController{
	private ICatService catService;
	//setter、getter略 
	protected ModelAndView add(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
		…… 
		       return new ModelAndView("cat/addCat");
	}
	protected ModelAndView list(HttpServletRequestrequest,HttpServletResponse response) throws Exception{
		List catList =catService.listCat();
		request.setAttribute("catList", catList);
		return new ModelAndView("cat/listCat");
	}
}

配置到spring-action.xml

 
    
       action 
    
    
       list 
    
 
  
 
        
           
              catController 
              catMultiController 
           
        
    
  
    
        
    
  
    
        
    

热门栏目