Spring MVC的基础知识

1.SpringMVC引言

  • 为什么要有springMVC?
    springmvc用来替换原有项目中struts2技术
  • springMVC好处?
    1. 可以和现有项目中Spring框架进行无缝整合
    2. 运行效率高于struts2框架
    3. SpringMVC提倡使用注解式开发效率远高于struts2框架
  • springMVC特点
    springMVC轻量级, 典型MVC框架,控制器框架
    Spring MVC的基础知识_第1张图片

3. SpringMVC开发步骤

  • 项目中引入相关依赖

      org.springframework
      spring-core
      4.3.2.RELEASE
    
    
      org.springframework
      spring-context
      4.3.2.RELEASE
    
    
      org.springframework
      spring-context-support
      4.3.2.RELEASE
    
    
      org.springframework
      spring-jdbc
      4.3.2.RELEASE
    
    
      org.springframework
      spring-aop
      4.3.2.RELEASE
    
    
      org.springframework
      spring-beans
      4.3.2.RELEASE
    
    
      org.springframework
      spring-expression
      4.3.2.RELEASE
    
    
      org.springframework
      spring-aspects
      4.3.2.RELEASE
    
    
      org.springframework
      spring-tx
      4.3.2.RELEASE
    
    
      org.springframework
      spring-web
      4.3.2.RELEASE
    
    
    
      org.springframework
      spring-webmvc
      4.3.2.RELEASE
    

    
      javax.servlet
      servlet-api
      2.5
    
  • 配置web.xml

  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
     
       contextConfigLocation
       classpath:springmvc.xml
     
  
  
    springmvc
    
    /
  
  • 引入springmvc.xml
  • 开启注解扫描
  • 注册处理器映射器
  • 注册处理器适配器
  • 注册视图解析器 前缀 / 后缀.jsp 解析结果 =/index.jsp

    
    
    
    
    
    
    
        
        
        
    
  • 开发Controller 时加入相关注解
  /*
  @RequestMapping注解的作用;
   用在类上相当于struts2中namespace在访问类中所有方法时请求路径必须加入这个路径
   用在方法上相当于struts2中action标签的name属性用来给当前方法指定请求路径
 - */
@Controller
@RequestMapping(value = "hello")
public class HelloContrller {
    @RequestMapping(value = "hello")
    public String hello(){
        System.out.println("hello springMvc");
        return "index";//页面逻辑名
    }
  • 启动服务器进行测试

4.springMVC中的跳转方式

  • servlet 原始控制器:跳转方式 forward redirect
    request.getDispatcher("/路径").forward(request,response);一次请求 请求之后地址栏不变
    response.sendRedirect("/项目名、路径"); 多次跳转 客户端跳转,多次请求 请求之后地址栏改变
  • struts2 控制器框架 跳转方式:forward redirect
    1. Action------>jsp
      forward:/index.jsp 默认
      redirect:/index.jsp
    2. Action----->Action(相同namespace|不同namespace)
      1. 相同namespace:
              forward:跳转的路径
               redirect:跳转的路径
  1. 不同namespace:
     forward|redirect:  
                               /xx 
                               跳转actionname的路
                                 
  1. SpringMVC跳转方式 forward redirect

    Controller------>jsp
    forward: return “index”; 在springmvc中默认跳转页面就是
    redirect: return “redirect:/index.jsp” 注意:重定向跳转不会经过视图解析器
    Conytroller----->Controller(相同不同):
    forward:|redirect:
    语法: return “forward:redirect:”/跳转类上@requestMapping路径/跳转类中方法@RequestMapping路径”

5.SpringMVC中参数收集

Servlet : reques.getParameter(“key”)
struts2: 使用成员变量收集客户端参数
SpringMVC :语法:直接使用控制器方法的参数来接收客户端请求参数
要求:保证前台请求参数传递的key与后台方法参数变量名一致

  1. 使用SpringMVC接收零散类型参数
    语法:保证前台传递参数key或form表单中input的name属性名与后台控制器参数变量名一致自动接收参数,并将收集参数完成自动类型转换。
    注意:
    1. springmvc默认在收集日期类型的参数时日期格式为"yyy/MM/dd HH",如果传递日期起格式不正确会出现400错误
    2. 修改springmvc中默认日期格式 @DateTimeFormate(pattern=“yyyy-MM-dd”) 注意一旦修改必须使用指定格式传递参数
  2. 使用Springmvc接收对象类型参数
    语法:直接将要接收对象作为控制器方法参数声明即可
    前台传递参数key或form表单的name属性名与定义的对象中属性名一致springmvc自动封装对象
    注意:
    1. 如果对象中声明的属性名与零散类型声明属性名一致两个在接收参数时都赋值
    2. 在使用对象接收请求参数时如果要修改对象中接收的日期类型的个格式时直接在对象的属性中加入@DataTimeFormate
    3. 如果在接收对象时对象中含有其他对象类型前台赋值语法 对象中属性名.属性名=值 这种形式
    3. 使用springmvc接收数组类型参数
    语法:将接收数组直接作为控制器方法参数声明即可
    注意:前台传递的多个参数如果要放在一个数组中必须保证传递的多个参数变量名与声明数组变量名一致,springmvc自动放入一个数组中
  3. 使用Springmvc接收集合类型的参数
    注意:springmv默认不支持直接接收集合类型的参数
    接收集合类型的语法:
    1. 将要接收集合放在一个自定义对象中接收,并在对象中提供GET SET方法。
    2. 将要接收集合类型数据放入一个自定义VO(value Obiect)对象中接收。

你可能感兴趣的:(SpringMVC,Spring框架)