SpringMVC框架详解

1.MVC概念

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO,工程中的JavaBean。

View(视图) - 视图代表模型包含的数据的可视化。

Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

2.SpringMVC 

2.1 相关概念

1.Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。

2.SpringMVC是一种基于MVC设计模式的Java Web框架,其主要目的是为了简化Web应用程序的开发过程。它提供了一组组件,如控制器、视图解析器、拦截器等,使得开发人员可以更加轻松地组织和管理Web应用程序的代码。其核心思想是将请求和响应分离,使得开发人员可以将业务逻辑和展示逻辑分离开来,从而提高代码的可维护性和可重用性。

2.2 BS架构

       BS架构是指Browser/Server架构,也就是浏览器/服务器架构。它是一种网络架构模式,将应用程序分为客户端和服务器端两个部分。客户端指的是用户使用的浏览器,而服务器端则是应用程序的后台处理部分。在BS架构中,客户端负责展示用户界面和处理用户输入,服务器端负责处理客户端请求并返回相应的数据。这种架构的优点是客户端无需安装任何软件,只需要一个浏览器即可访问应用程序,同时服务器端可以集中管理和维护应用程序,提高了安全性和可靠性。

2.3 创建SpringMVC项目

1.使用IDEA创建SpringMVC项目

2.实现连接

注意:在Spring框架中,@RequestMapping注解默认的请求方式为GET。也就是说,如果没有指定请求方式,那么该方法将只处理GET请求。但是,@RequestMapping注解可以指定多种请求方式,例如:@RequestMapping(value="/test", method={RequestMethod.GET, RequestMethod.POST}),表示该方法可以处理GET和POST请求。

注意:浏览器默认发送GET请求

三种方法实现连接:

@RestController
public class UserController {
    @RequestMapping(value = "/sayhi",method = RequestMethod.POST) 
    //可以为一级路由,也可以为多级路由
    //支持get和post请求方法
    public String syahi(){
        return "hi spring mvc";
    }
    @PostMapping("/sayhello")//只支持post请求方法
     public String sayHello(){
    return "hi spring sayHello";
     @GetMapping("/sayhi") //只支持get请求方法
    public String say(){
        return "hi get hello";
    }
}
}

使用postman模拟POST请求; 

 

 3.获取方法

3.1 获取单个的参数

@RequestMapping(value = "/sayhi") //可以为一级路由,也可以为多级路由
public String syahi(String name){
    return "hi "+name;
}

 参数传递,不要使用基础类型,因为基础类型会报错。

 使用包装类型传参不会出现错误:

 2.获取多个参数

3. 获取对象:

框架会实现自动的参数映射

@RequestMapping("/reg")
public Object reg(Userinfo userinfo){
    System.out.println(userinfo);
    return userinfo;
}

 

 重命名前端的传递参数名称:前端传递username
前端传递一般为对象或者json格式的字符串对象
后端获取的时候:对象/json对象格式的字符串对象

 重命名功能:

//重命名功能
@RequestMapping("/reg2")
public Object reg(@RequestParam("username",required = false) String name,String password){
    return name+":"+password;
}

 4.获取JSON对象

加上@RequestBody注解

@RequestMapping("/reg3")
public Object reg3(@RequestBody Userinfo userinfo){
    return userinfo;
}

5.从基础URL中获取参数(不是从URL的参数部分获取参数)
path(url) = /user/123456
优点1:搜索引擎抓取关键字权重更高
优点2:url更简洁

/**
 * 获取URL参数
 * @param name
 * @param password
 * @return
 */
@RequestMapping("/reg4/{name}/{password}")
public Object reg4(@PathVariable String name,@PathVariable String password){
    return "name->"+name+" | password->"+password;
}

重命名:

/**
 * 获取URL参数
 * @param name
 * @param password
 * @return
 */
@RequestMapping("/reg4/{name}/{password}")
public Object reg4(@PathVariable String name,@PathVariable(required=false,
name="pwd") String password){
    return "name->"+name+" | password->"+password;
}

@PathVariable ->基础URL里面的参数(? 之前的参数)
@RequestParm ->URL参数部分的参数( ? 之后的参数)

6.获取上传文件@RequestPart

 

/**
 * 获取上传文件
 * @param file
 * @return
 */
@RequestMapping("/myupload")
public Object upload(@RequestPart("myimg")MultipartFile file) {
    File saveFile = new File("D:\\桌面\\CsdnImg\\myimg.png");
    try {
        file.transferTo(saveFile);
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

 Postman构建:

注意:文件上传的大小默认限制为1MB;重新设置上传大小限制:

srping.servlet.multipart.max-file-size=100MB
srping.servlet.multipart.max-request-size=100MB

 文件上传不重复:

  /**
     * 获取上传文件
     * @param file
     * @return
     */
    @RequestMapping("/myupload")
    public Object upload(@RequestPart("myimg")MultipartFile file) {
        String fileName = UUID.randomUUID()+
                file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        File saveFile = new File("D:\\桌面\\CsdnImg\\"+fileName);
        try {
            file.transferTo(saveFile);
            return true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值