Spring MVC

目录

一、什么是MVC

二、什么是Spring MVC

三、Spring MVC功能

1、Spring MVC创建和连接

        使用@RequestMapping

        @GetMapping

2、获取参数

        获取单个参数

        上传文件

        获取Cookie/Session/header

3、返回数据

        返回静态页面

        返回text/html 

​编辑四、请求转发和请求重定向的区别


一、什么是MVC

MVC就是一种思想,而Spring MVC是对MVC思想的具体实现

MVC是Model View Controller的所缩写,是一种软件架构模式,它将软件系统Fenwick墨香,视图和控制器三个基本部分。

Spring MVC_第1张图片

Model:是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据

View:是应用程序中处理数据显示的 部分,通常视图是一句模型数据创建的

Controller:是应用程序中处理用户交互的部分。通常控制器负责从视图中读取数据,控制用户输入并且向模型发送数据。

MVC执行流程:

  1. 用户的请求首先先到Controller

  2. Controller将请求转发给Model

  3. Model处理业务并且将数据结果给Controller

  4. Controller会将数据给View引擎

  5. View转换数据生成最终的页面给用户

二、什么是Spring MVC

Spring MVC是一个Web框架,是基于Servlet API构建的框架。

它是对MVC思想的具体实现。

在构建项目时,Spring Web就是Spring MVC框架,是Spring boot里的核心。

三、Spring MVC功能

1.连接的功能:将用户浏览器和java程序连接起来,也就是访问一个地址能够调用到Spring程序。

2.获取参数的功能:用户访问的时候会带一些参数,在程序中获取到参数

3.返回数据的功能:执行了业务逻辑以后,要把程序的执行结果返回给用户

1、Spring MVC创建和连接

        使用@RequestMapping

使用@RequestMapping来实现URL路由映射,使得浏览器连接程序。

@RestController
//可以设置请求类型,规定路径,也可以只写一个name
//name小写
@RequestMapping(path="/sayhi",method = RequestMethod.GET) //必须通过path来
public class TestController {
    @RequestMapping("/sayhi")
    public String sayHi(){
        return "hello";
    }
}

访问http://localhost:8080/test/sayhi

        @GetMapping

实现HTTP连接,但是只支持GET类型的请求。

如果有规定之只能使用get类型的请求,就直接使用

@GetMapping("/sayhi2")
   public String sayHi2(){
        return "hello";
    }

 访问2http://localhost:8080/test/sayhi2

 @PostMapping就是只支持Post类型的请求。

2、获取参数

        获取单个参数

得到name。

@RestController
@RequestMapping("/test")
public class TestController2 {
    @RequestMapping("/getname")
//使用servlet
    public String getName(HttpServletRequest request){
        return "Name:"+request.getParameter("name");
    }



@RequestMapping("/getnam2")
//使用Spring的方式
public String getName2(String name) { //依赖注入
     return "Name:" + name;
}

        上传文件

@RequestMapping("/upload")
    public String upLoad(@RequestPart("myfile")MultipartFile file) throws IOException {
        //1.生成一个唯一的id | UUID = 全球唯一ID -> MAC + 随机种子 + 加密算法
        String name = UUID.randomUUID().toString().replace("-","");
        //2.得到源文件的后缀名
        name += file.getOriginalFilename()
                        .substring(file.getOriginalFilename().lastIndexOf("."));
        String path = "D:\\image\\ " + name;
        file.transferTo(new File(path));
        return path;
    }

        获取Cookie/Session/header

获取Cookie

//获取cookie
    @RequestMapping("/getcookie")
    public String getCookie(@CookieValue("java")String ck){
        return ck;
    }

获取session 

//设置session
    @RequestMapping("/set_session")
    public String doPostConstruct(HttpServletRequest request){
        HttpSession session = request.getSession();
        if (session != null){
            session.setAttribute(_SESSION_KEY,"张三");
            return "session set success";
        }else {
            return "session set fail";
        }
    }
    
    //获取session
    @RequestMapping("/getsession")
    public String getSession(@SessionAttribute(required = false,value = "SESSION_KEY")String name){
        return name;
    }

获header

@RequestMapping("/header")
@ResponseBody

public String header(@RequestHeader("User-Agent") String userAgent) {
 return "userAgent:"+userAgent;

3、返回数据

        返回静态页面

首先创建一个静态页面:

Spring MVC_第2张图片

@Controller
public class TestController3 {

    @RequestMapping("/index")
    public String index(){
        return "hello.html";
    }

}

        Spring MVC_第3张图片

        返回text/html 

@Controller
@ResponseBody//当成数据返回
public class TestController3 {

    @RequestMapping("/index")
    public String index(){
        return "hello.html";
    }
}

Spring MVC_第4张图片四、请求转发和请求重定向的区别

 1.请求重定向(redirect)将请求重新定位到资源;

        请求转发(forward)服务器端转发

2.请求重定向地址发生变化;

        请求转发地址不发生变化

3.请求重定向与直接访问新地址效果一致,不存在原来的外部资源不能访问;

        请求转发服务器端转发有可能会造成原外部资源不能访问

你可能感兴趣的:(spring,mvc,java)