spring专题---第三部分MVC---一文学会spring MVC的常用注解

在这里插入图片描述

本篇总结内容

    前言
    @RequestMapping及常用参数
    参数绑定
    映射cookie
    使用POJO绑定参数
    JSP页面的转发和重定向
    总结
    分享交流

前言

    spring MVC框架为开发者提供了功能强大的注解机制,可以帮助我们简化代码开发,提高开发效率,同时使得程序具备更好的扩展性,这一篇我就来总结一下spring MVC框架中常用注解的具体使用。

@RequestMapping及常用参数

@RequestMapping
    spring MVC通过@RequestMapping注解将URL请求与业务方法进行映射,在控制器的类定义处以及方法处都可以添加@RequestMapping注解,在类定义处添加@RequestMapping相当于多了一层访问路径。

@Controller
@RequestMapping(value = "/testController")
public class TestController {
    @RequestMapping(value = "/test")
    public String Test(){
        System.out.println("doing Test");
        return "index";
    }
}

在这里插入图片描述
@RequestMapping常用参数
(1)value:指定URL请求的实际地址,是@RequestMapping的默认值。可以省略,但注意当参数只有value时可以省略,多个参数不能省略value。

    @RequestMapping("/test")
    public String Test(){
        System.out.println("doing Test");
        return "index";
    }

    等同于

    @MyRequestMapping(value = "/test")
    public String Test(){
        System.out.println("doing Test");
        return "index";
    }

(2)method:指定请求的method类型,包括GET、POST、PUT、DELETE等。

@Controller
public class HelloController {
    //这里使用了method参数,指定了以什么方式访问
    @RequestMapping(value = "hello",method = RequestMethod.POST)
    public String Test(){
        System.out.println("执行了Test方法");
        return "index";
    }
}

在这里插入图片描述
    其他几种请求类型同理,我们常用的是GET和POST请求,在REST架构中会用到PUT和DELETE请求。
(3)params:指定request中必须包含的参数值,否则无法调用该方法。

@Controller
public class HelloController {
    //这里用到了params,限制了访问参数必须包含哪些
    @RequestMapping(value = "hello",params = {"name","age=18"})
    public String Test(){
        System.out.println("执行了Test方法");
        return "index";
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
    通过上边三幅图我们看到,只有只用指定的参数访问才能成功,其它都失败。

参数绑定

    params是对URL请求的参数进行限制,不满足条件的URL无法访问业务方法,然而这个特性在开发中不是常用的,常用到的是获取URL中的参数,实现这一操作很简单,两部完成:
(1)在业务方法中定义时声明参数列表;
(2)给参数列表添加@RequestParam注解。

@Controller
public class HelloController {
    
    @RequestMapping(value = "hello")
    public String Test(@RequestParam("name")String name,@RequestParam("age")int age){
        System.out.println("执行了Test方法");
        System.out.println(name+"##"+age);
        return "index";
    }
}

在这里插入图片描述
在这里插入图片描述
    这里注意必须要有这两个参数,少一个参数都会404。
在这里插入图片描述
    这里报缺少参数age。
    将URL请求的参数name和id分别映射给形参name和id,同时进行了数据类型的转换,因为URL参数类型都是String类型的,可我们代码中写的是int类型,spring MVC可以自动根据形参的数据类型完成数据类型转换,比如age="18"转换为age=18,具体的数据类型转换工作是由HandlerAdapter来完成的。
spring MVC也支持RESTful风格的URL参数获取

@Controller
public class HelloController {

    @RequestMapping(value = "hello/{name}")
    public String Test(@PathVariable("name")String name){
        System.out.println("执行了Test方法");
        System.out.println(name);
        return "index";
    }
}

在这里插入图片描述
    注意访问请求路径

http://localhost/hello/lisi

映射Cookie

    spring MVC通过映射可以直接在业务方法中获取Cookie的值。

@Controller
public class HelloController {

    @RequestMapping(value = "hello")
    public String Test(@CookieValue(value = "JACOB") String sessionId){
        System.out.println("执行了Test方法");
        System.out.println(sessionId);
        return "index";
    }
}

使用POJO绑定参数

    spring MVC会根据请求参数名和POJO属性名进行匹配,自动为该对象填充属性值,并且支持属性级联。
(1)创建实体类Car

public class User {
    private int id;
    private String name;
    //此处省略setter方法和toString方法
}

(2)创建addUser.jsp

<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="addUser" method="post">
    编号:<input type="text" name="id"/><br/>
    姓名:<input type="text" name="name"/><br/>
         <input type="submit" value="提交"/>
</form>
</body>
</html>

(3)业务方法

@Controller
public class HelloController {

    @RequestMapping("/addUser")
    public String getPOJO(User user){
        System.out.println(user);
        return "index";
    }
}

(4)运行
在这里插入图片描述
在这里插入图片描述

JSP页面的转发和重定向

    spring MVC默认以转发的形式响应JSP,我们可以手动修改为重定向。
以下为转发形式:

@Controller
public class HelloController {

    @RequestMapping("/redirectTest")
    public String getPOJO(User user){
        System.out.println(user);
        return "forward:/index.jsp";  //可以不写forward,不写默认forward
    }
}

在这里插入图片描述
    可以看到请求前后,地址栏没有改变,实现了转发跳转。
以下为重定向形式:

@Controller
public class HelloController {

    @RequestMapping("/redirectTest")
    public String getPOJO(User user){
        System.out.println(user);
        return "redirect:/index.jsp";  //redirect不能省略
    }
}

在这里插入图片描述
在这里插入图片描述
    通过地址栏可以看到,地址改变,实现了重定向跳转。需要注意的是业务方法中,设置重定向不能写逻辑视图,必须写目标资源的物理路径,如“redirect:/index.jsp"。

总结

    本篇总结了spring MVC常用注解的使用方法,主要应用与客户端到服务端的请求映射,包括请求路径,请求类型,请求参数等。完成了MVC设计模式中V(view)——C(controller)的映射,省去了在XML文件中复杂的映射配置。

分享交流

    以上便是我对这一部分的理解,如果有错误或者你有其他疑惑都可以留言给出,我都会一一进行回复,希望对你有所帮助,如果写的不好也请您多多包涵。欢迎在下方补充留言哟。
    对SSM框架感兴趣的童鞋,可以移步这里,在这里你可以快速的搭建好一个SSM框架。
    如果你在写项目的时候,遇到一些不寻常的问题,也可以关注我的博客园,上边会发布一些我在写项目中遇到的各种问题以及解决方式。

发布了21 篇原创文章 · 获赞 27 · 访问量 4282

猜你喜欢

转载自blog.csdn.net/llllxxxxyyyy/article/details/104102690
今日推荐