SpringMVC入门丶请求参数绑定丶常用注解

SpringMVC入门

  1. 创建WEB工程,引入依赖

    
    
    5.0.2.RELEASE
    
    
    
    org.springframework
    spring-context
    ${spring.version}
    
    
    org.springframework
    spring-web
    ${spring.version}
    
    
    org.springframework
    spring-webmvc
    ${spring.version}
    
    
    javax.servlet
    servlet-api
    2.5
    provided
    
    
    javax.servlet.jsp
    jsp-api
    2.0
    provided
    
    
    
  2. 在web.xml中配置一个核心前端控制器(DispatcherServlet)

    
    
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
    contextConfigLocation
    classpath:Springmvc.xml
    
    1
    
    
    dispatcherServlet
    /
    
    
  3. 编写springmvc.xml的配置文件

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  4. 编写Controller

    //表示此类是一个controller
    @Controller
    public class HelloController {
    
        /**
         * 测试path
         * @return
         */
        @RequestMapping(path = "/hello")
        public String hello(){
            System.out.println("hello SpringMVC!");
            return "success";
        }
    
    }
    
  5. 在WEB-INF目录下创建pages文件夹,编写success.jsp的成功页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
       hello
    
    
       

    Success!!!

  • 入门案例的分析
    • 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,
      就会加载springmvc.xml配置文件
    • 开启了注解扫描,那么HelloController对象就会被创建
    • 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解
      找到执行的具体方法
    • 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件
    • Tomcat服务器渲染页面,做出响应

SpringMVC的一次完整的执行

 

SpringMVC入门丶请求参数绑定丶常用注解_第1张图片

​ RequestMapping注解

1. RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系
2. RequestMapping注解可以作用在方法和类上
    1. 作用在类上:第一级的访问目录
    2. 作用在方法上:第二级的访问目录
    3. 细节:路径可以不编写 / 表示应用的根目录开始
3. RequestMapping的属性
    1. path 指定请求路径的url    
    2. value value属性和path属性是一样的
    3. mthod 指定该方法的请求方式,不写代表匹配所有 method = {RequestMethod.POST}
    4. params 指定限制请求参数的条件              params = {"username"}
    5. headers 发送的请求中必须包含的请求头

请求参数的绑定

  1. 请求参数的绑定说明
    1. 绑定机制
      1. 表单提交的数据都是k=v格式的 username=haha&password=123
      2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
      3. 要求:提交表单的name和参数的名称是相同的
    2. 支持的数据类型
      1. 基本数据类型和字符串类型
      2. 实体类型(JavaBean)
      3. 集合数据类型(List、map集合等)
  2. 基本数据类型和字符串类型
    1. 提交表单的name和参数的名称是相同的
    2. 区分大小写
  3. 实体类型(JavaBean)
    1. 提交表单的name和JavaBean中的属性名称需要一致
    2. 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:
      address.name
  4. 给集合属性数据封装
    1. 在jsp中姓名:
  5. 请求参数中文乱码的问题


    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    

    characterEncodingFilter
    /*

6.自定义类型转换器

​ java为我们提供了一个接口,我们可以通过实现Converter接口来自定义转换器

​ 1.自定义类型转换器

//自定义类型转换器(String->Date)
public class StringToDateConverter implements Converter {
    @Override
    public Date convert(String source) {
        if (source == null){
            throw new RuntimeException("字符串不能为空");
        }

        try {
            DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(source);
            return date;
        } catch (ParseException e) {
            throw new RuntimeException("字符串异常");
        }
    }
}
 2. 注册自定义类型转换器,在SpringMvc.xml中编写配置


    
        
            
        
    




常用的注解

  1. RequestParam注解

    1. 作用: 把请求中指定的参数传递给控制器中的形参
    2. 属性 :
      1. value: 请求参数中的名称
      2. required: 请求参数中是否必须有此参数,默认值是true,即必须提供
    3. 例:
    @RequestMapping(path="/hello")
    public String sayHello(@RequestParam(value="username",required=false)String name) {
        System.out.println(name);
        return "success";
    }
    
  2. RequestBody注解

    1. 作用: 用于获取请求体的内容(ps:get方法不行)
    2. 属性
      • required: 是否必须有请求体,默认是true
    3. 例:
    @RequestMapping(path="/hello")
    public String sayHello(@RequestBody String body) {
        System.out.println(body);
        return "success";
    }
    
  3. PathVariable注解

    1. 作用: 用于绑定url中的占位符.(如/delete/{id},{id}就是占位符)
    2. 属性
      • value: 指定url中占位符的名称
    3. Restful风格的url
      1. 请求路径一样,可以根据不同的请求方式来执行后台的不同方法
      2. restful风格的url的优点
        1. 结构清晰
        2. 易于理解
        3. 符合标准
        4. 扩展方便
    4. 例:
    @RequestMapping(path="/hello/{id}")
    public String sayHello(@PathVariable(value="id") String id) {
        System.out.println(id);
        return "success";
    }
    
  4. RequestHeader注解

    1. 作用:获取指定请求头的值
    2. 属性
      • value:请求头的名称
    3. 例:
    @RequestMapping(path="/hello")
    public String sayHello(@RequestHeader(value="Accept") String header) {
        System.out.println(header);
        return "success";
    }
    
  5. CookieValue注解

    1. 作用: 用于获取指定cookie的名称的值
    2. 属性
      • value: cookie的名称
    3. 例:
    @RequestMapping(path="/hello")
    public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue) {
        System.out.println(cookieValue);
        return "success";
    }
    
  6. ModelAttribute注解

    1. 作用
      1. 出现在方法上:表示当前方法会在控制器方法执行前线执行。
      2. 出现在参数上:获取指定的数据给参数赋值。
    2. 应用场景
      • 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。

你可能感兴趣的:(SSM框架)