Spring MVC——交互层框架

(1) MVC:web分层的一个核心也是非常“伟大”的一种设计模式

① 模型

② 视图

③ 交互

① 优势:

1) 和Spring一脉相承

2) 灵活性,更加优雅

3) 兼容性

1. SpringMVC的完整业务流程

(1) 请求抵达web.xml                                                                                                            -前端控制器                  -web.xml中配置的servlet、filter在服务器启动的时候提前做一些配置过滤:包括获取bean\拦截器等

(2) Web.xml找到DispatcherServlet                                                                                        -页面控制器\处理器        -获取controller当中的方法,

(3) DispatcherServlet调用组件解析SpringMVC的配置文件                                                           -以及解析页面访问请求

(4) 将配置文件的解析结果保存在HandlerMap当中(Controller,拦截器)                                         -(handmap匹配)--》handerChain进行chain()模型处理,返回model\view     

(5) 匹配请求,寻找对应的Handler,即交互层Controller,执行该Controller                                       -

(6) Controller调用Service获取业务数据模型Model

(7) Service返回的业务模型,由Controller完成组装,组装成ModelAndView。即,模型和视图。

(8) Controller将ModelAndView返回给DispatcherServlet,DispatcherServlet根据返回的视图信息

   ,将对应的数据模型,渲染到视图上,将视图的渲染结果交还给客户端。

Spring MVC——交互层框架_第1张图片


uSpring MVC特点

n清晰地角色划分

n灵活的配置功能

n提供了大量的控制器接口和实现类

n真正的View层实现无关(JSP、Velocity、Xslt等)

n国际化支持

n面向接口编程

nSpring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起

操作:

【1】pom依赖配置

      -spring-core、spring-context、spring-beans、spring-aop

      -javax.servlet-api     

      -AOP相关:spring-context-support、spring-web、spring-webmvc、spring-tx、spring-aspects

      -文件上传相关:commons-fileupload、commons-io

      -Json数据处理:jackson-mapper-asl、jackson-core、jackson-databind、jackson-annotations

【2】其他配置文件:web.xml 对监听器、页面控制器的配置


    
         contextConfigLocation
         classpath*:/applicationContext.xml
    

    
    
    
         org.springframework.web.context.ContextLoaderListener
    

    
    
    
         mvc
         org.springframework.web.servlet.DispatcherServlet
        
                 contextConfigLocation
                 classpath*:/applicationContext.xml
        

         1
    

    
         mvc
         *.do   
    

applicationContext.xml配置

//包扫描器

======简化*.do的路径配置


        
        

    

========文件上传配置

         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        
        
        
        
    

=========json数据处理配置

     class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        
            
                 text/html;charset=UTF-8
            

        

    

          class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        
            
                
            

        

    

【3】常用SpringMVC注解配置

@Controller
@Scope("prototype")
【controller类上】@RequestMapping("/test2") + 【方法上】@RequestMapping("/t1")

========url不带参数名

@RequestMapping("/t5/{arg1}/{arg2}/{arg3}")

public void test5(@PathVariable String arg1,
             @PathVariable String arg2,
             @PathVariable String arg3)

============传参方法设置post\get等

@RequestMapping(value="/t6/{arg1}/{arg2}/{arg3}",
             method={RequestMethod.POST,RequestMethod.GET})

============传参必须设置字段:params

@RequestMapping(value="/t7/{arg1}/{arg2}/{arg3}",
             method={RequestMethod.POST,RequestMethod.GET},
             params={"random=123"})

===========Ant风格:?0/1个  *多个  **任意多个/a/b/c/

@RequestMapping(value="/t8/{arg1}/{arg2}/{arg3}/id?",
             method={RequestMethod.POST,RequestMethod.GET},
             params={"random=123"})

@RequestMapping(value="/t9/{arg1}/{arg2}/{arg3}/id*/{arg4}",
             method={RequestMethod.POST,RequestMethod.GET},
             params={"random=123"})

@RequestMapping(value="/t10/{arg1}/{arg2}/{arg3}/**/{arg4}",
             method={RequestMethod.POST,RequestMethod.GET},
             params={"random=123"})

============多个dao方式

@RequestMapping(value={"/test12","/test13"})

页面转发:

【1】request.getRequestDispatcher("/index.jsp").forward(request, response);   + request.setAttribute方法  与  el操作

【2】ModelAndView :通过配置该对象进行页面转发,返回ModelAndView对象

ModelAndView mAndView = new ModelAndView("/index.jsp");
         mAndView.addObject("msg", "hello this is ssm");
         return mAndView;

【3】ModelMap:配置属性,返回转发页面路径字符串

map.addAttribute("msg", "this is modleMap3");
return "/index.jsp";

【4】对【3】的转发增强——

      --返回: forward:/index.jsp

      --内部转发:return "forward:/test3/t5.do";

        url传参:"forward:/test3/t7.do?arg1=macro";

文件处理:

file.transferTo(new File("e://",file.getOriginalFilename()));

file.getName()  //属性名

file.getOriginalFilename()  //文件名

file.getContentType()  //文件类型

file.getSize()  //文件大小

json数据处理

@ResponseBody

包括:实体类、map\list\array\set等

你可能感兴趣的:(Spring MVC——交互层框架)