关于SpringMVC

一、SpringMVC的三层结构:

  1. 服务器三层结构,数据流通方向如图所示:
    在这里插入图片描述
  2. 关于MVC设计模型:
M  	model 模型 javabean
V  	View 视图 JSP
C 	Controller控制器 Servlet
  1. SpringMVC 概述:
    SpringMVC 是一种基于Java实现MVC设计模型的请求驱动类型的轻量级web框架。使用Spring进行web开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2…SpringMVC已成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的MVC框架,他通过一套注解,让一个简单的java类成为处理请求的控制器,而无需实现任何接口,同时它还支持RESTful编程风格的请求。

二、SpringMVC 基本注解之 @RequestParam
其作用(应用场景)为:给请求数据接收方做注解,用于解决前后端请求数据名不一致。
这里,我们通过一个具体的例子来说明:
前端代码举例如下:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/2/5
  Time: 10:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="/testRequestParam/test1?name=哈哈">testRequestParam</a>
</body>
</html>

后端代码举例如下:

package cn.incast.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(path = "/testRequestParam")
public class requestParamController {
    @RequestMapping(path = "test1")
    public String testRequestParam(@RequestParam(name = "name") String userName){
        System.out.println(userName);
        return "success";
    }
}

这里,我们通过@RequestParam解决了前后端请求数据名不一致的问题,jsp页面请求数据为name、但是后端接收数据为userName因此用==@RequestParam(name = “name”)==来做标注。

三、SpringMVC-基本注解之@RequestBody
其作用(应用场景)为:
用于获取请求体内容。直接使用得到为 key=value&key=value......结构的数据。get请求方式不适应。
注意事项:
required: 是否必须有请求体。 默认值是true 当取值为true时,get请求方式会报错。如果取值时falseget请求得到的时null
这里,我们通过一个具体的例子来说明,举例代码如下:

   public String testRequestBody(@RequestBody String Body){
        System.out.println(Body);
        return "success";
    }

四、SpringMVC-基本注解之@PathVariable
restful编程风格:
原本方式为 :

UserController 类

path="/user/save"
save

path= "/user/update"
update

path="/user/findAll"
findAll

restfule方式为:

UserController 类

path="/user" post
save

path="/user" put 
update

path="/user" get
findAll

path= "/user/{id}" get
findById(id)

localhost:8080/user get

接下来,我们列举一个具体的应用场景,参考代码如下:

@RequestMapping(path = "/testPathVariable/{id}")
    public String testPathVariable(@PathVariable(value = "id") String id){
        System.out.println(id);
        return "success";
    }
<a href="/testRequestParam/testPathVariable/10">testRequestParam</a>

编译后测试的结果如下:
在这里插入图片描述

五、SpringMVC-基本注解之@CookieValue
其作用(应用场景)为:
用于把制定cookie名称的值传入控制器方法参数。
注意事项:
value: 指定cookie的名称。
required: 是否必须有此cookie

接下来,我们列举一个具体的应用场景,参考代码如下:

<%-- 测试@CookieValue --%>
<a href="/testRequestParam/testCookieValue">testCookieValue</a>
@RequestMapping(path = "/testCookieValue")
public String testCookieValue(@CookieValue(name = "JSESSIONID") String cookieValue){
    System.out.println(cookieValue);
    return "success";
}

编译后测试的结果如下:
在这里插入图片描述

六、SpringMVC-基本注解之@SessionAttributes
其作用(应用场景)为:
Session对象中存储键值对数据,但是需要先存在Request对象中,再添加注解@SessionAttributes(name=“键名”)

接下来,我们列举一个具体的应用场景,参考代码如下:

<%-- 测试SessionAttribute --%>
<a href="/testRequestParam/testAddSession">添加session</a>
<a href="/testRequestParam/testGetSession">获取session</a>
<a href="/testRequestParam/testDelSession">删除session</a>
  @RequestMapping(path = "/testAddSession")
    public String testAddSession(Model model){
       model.addAttribute("学习","SpringMVC");//添加键值对到Request对象中
        return "success";
    }
    @RequestMapping(path = "/testGetSession")
    public String testGetSession(ModelMap modelmap){
        System.out.println(modelmap.get("学习"));
        return "success";
    }
    @RequestMapping(path = "/testDelSession")
    public String testDelSession(SessionStatus status){
        status.setComplete();
        return "success";
    }

编译后测试的结果如下:
在这里插入图片描述

特别提醒:
使用SessionAttributes注解时,使用Model类的addAttribute()方法添加入Request对象中,使用ModelMap类的get()方法获取,并且@SessionAttributes注解只适用于类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值