单例模式,原型模式,controller相关注解,restful风格

本文介绍了SpringMVC中的单例模式和原型模式的区别,以及如何使用@RequestMapping注解进行控制器的请求映射,包括GET、POST、PUT、DELETE等RESTful风格的请求方法。同时,详细解释了PathVariable用于从请求路径中获取参数的方式。
摘要由CSDN通过智能技术生成

单例模式 singleton

IOC容器每次创建bean对象,都是同一个。

当Bean的作用域为单例模式时,他会在一开始(容器加载配置时)就被创建,之后拿到的都是这个对象。(可以配置lazy懒加载,不在一开始就创建对象)

原型模式 prototype

每次调用都新建一个对象。

处于原型模式时,只有在被获取时才会被创建,也就是说,在单例模式下Bean会被IOC容器存储,只要容器没有被销毁,那么此对象将会一直存在,而原型模式才相当于在要用的时候直接new一个对象,并不会被保存。

controller控制器

@RequestMapping

@RequestMapping(“/index”)可以多个路径->@RequestMapping({“/index”, “/hello”})

放在当前Controller类名上时,当前controller中的所有Mapping映射前面都需要加一个这个路径。

@Controller
@RequestMapping("/yyds")
public class MainController {

    @RequestMapping({"/index", "/test"})
    public ModelAndView index(){
        return new ModelAndView("index");
    }
}

路径还支持使用通配符进行匹配:

  • ?:表示任意一个字符,比如@RequestMapping("/index/x?")可以匹配/index/xa、/index/xb等等。

  • *:表示任意0-n个字符,比如@RequestMapping("/index/*")可以匹配/index/lbwnb、/index/yyds等。

  • **:表示当前目录或基于当前目录的多级目录,比如@RequestMapping("/index/**")可以匹配/index、/index/xxx等。

    RequestMapping可以在内部设置method来定义允许访问的类型。也可以直接明确书写 @PostMapping或@GetMapping、@DeletedMapping等

    @RequestParam和@RequestHeader

    获取请求中的参数,只需要在方法上添加一个形参,形参前面加上@RequestParam:

    @RequestMapping(value = "/index")
    public ModelAndView index(@RequestParam("username") String username){
    }
    

    我们需要在@RequestParam中填写参数名称,参数的值会自动传递给形式参数,我们可以直接在方法中使用,注意,如果参数名称与形式参数名称相同,即使不添加@RequestParam也能获取到参数值。

一旦添加@RequestParam,那么此请求必须携带指定参数,我们也可以将require属性设定为false来将属性设定为非必须。

RestFul风格

中文释义为**“表现层状态转换”**(名字挺高大上的),它不是一种标准,而是一种设计风格。它的主要作用是充分并正确利用HTTP协议的特性,规范资源获取的URI路径。通俗的讲,RESTful风格的设计允许将参数通过URL拼接传到服务端,目的是让URL看起来更简洁实用,并且我们可以充分使用多种HTTP请求方式(POST/GET/PUT/DELETE),来执行相同请求地址的不同类型操作。

这种风格的连接,我们就可以直接从请求路径中读取参数,比如:

http://localhost:8080/mvc/index/123456

我们可以直接将index的下一级路径作为请求参数进行处理,也就是说现在的请求参数包含在了请求路径中:

@RequestMapping("/index/{str}")
public String index(@PathVariable String str) {
    System.out.println(str);
    return "index";
}

我们可以按照不同功能进行划分:

  • POST http://localhost:8080/mvc/index - 添加用户信息,携带表单数据
  • GET http://localhost:8080/mvc/index/{id} - 获取用户信息,id直接放在请求路径中
  • PUT http://localhost:8080/mvc/index - 修改用户信息,携带表单数据
  • DELETE http://localhost:8080/mvc/index/{id} - 删除用户信息,id直接放在请求路径中

我们分别编写四个请求映射:

@Controller
public class MainController {

    @RequestMapping(value = "/index/{id}", method = RequestMethod.GET)
    public String get(@PathVariable("id") String text){
        System.out.println("获取用户:"+text);
        return "index";
    }

    @RequestMapping(value = "/index", method = RequestMethod.POST)
    public String post(String username){
        System.out.println("添加用户:"+username);
        return "index";
    }

    @RequestMapping(value = "/index/{id}", method = RequestMethod.DELETE)
    public String delete(@PathVariable("id") String text){
        System.out.println("删除用户:"+text);
        return "index";
    }

    @RequestMapping(value = "/index", method = RequestMethod.PUT)
    public String put(String username){
        System.out.println("修改用户:"+username);
        return "index";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值