Spring MVC相关注解运用 —— 上篇

这篇具有很好参考价值的文章主要介绍了Spring MVC相关注解运用 —— 上篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、@Controller、@RequestMapping

1.1 示例程序

1.2 测试结果

二、@RequestParam

2.1 示例程序

2.2 测试结果

三、@RequestHeader、@CookieValue

3.1 示例程序

3.2 测试结果

四、@SessionAttributes

4.1 示例程序

4.2 测试结果

五、@ModelAttribute

5.1 示例程序

5.2 测试结果

往期专栏&文章相关导读 

1. Maven系列专栏文章

2. Mybatis系列专栏文章

3. Spring系列专栏文章

4. Spring MVC系列专栏文章 


一、@Controller、@RequestMapping

@Controller:作用:标记控制器,将控制器交给Spring容器管理。

                        位置:类上方

@RequestMapping:作用:给控制器方法设置请求路径
位置:方法或类上方。用于类上,表示类中的所有控制器方法都是以该地址作为父路径。
属性:

  1. value/path:请求路径
  2. method:指定请求方式
  3. params:规定必须发送的请求参数
  4. headers:规定请求必须包含的请求头

1.1 示例程序

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/c3")
public class MyController3 {
    /**
     * 访问路径为 /c3/annotation1
     * 支持post和get请求
     * 请求时必须带有age参数
     * 请求时必须带有User-agent请求头
     * @param username
     * @return
     */
    @RequestMapping(path = "/annotation1",method = {RequestMethod.GET,RequestMethod.POST},params = {"age"},headers = {"User-agent"})
    public String annotation1(String username){
        System.out.println("annotation1\t"+username);
        return "lyl-HQX";
    }
}

这里规定了请求参数必须带有age,但是下方方法参数列表没有age,那我们测试一下有age和无age。

1.2 测试结果

如果请求路径为:http://localhost:8080/c3/annotation1?age=10

测试结果为:

Spring MVC相关注解运用 —— 上篇

但是如果请求路径是: http://localhost:8080/c3/annotation1?username=10

Spring MVC相关注解运用 —— 上篇 可以看到就报错,因此确实需要带age参数

因此请求路径应该写成这样:http://localhost:8080/c3/annotation1?username=10&age=10

Spring MVC相关注解运用 —— 上篇

可以看到确实打印出了用户名10。 

二、@RequestParam

作用:在控制器方法中获取请求参数
位置:方法参数前
属性:

  1. name:指定请求参数名称
  2. defaultValue: 为参数设置默认值
  3. required:设置是否是必须要传入的参数

2.1 示例程序

// 在控制器方法中获取请求参数
    @RequestMapping("/annotation2")
    public String annotation2(@RequestParam(name = "name",defaultValue = "HQX",required = false) String name){
        System.out.println("annotation2\t"+name);
        return "lyl-HQX";
    }

这个注解是修饰请求参数的相关属性,那我们有没有这个name属性应该都是可以的。

2.2 测试结果

当请求路径为:http://localhost:8080/c3/annotation2

Spring MVC相关注解运用 —— 上篇

 请求路径没有该参数了,该参数的默认值就是HQX,正常输出

当请求路径为:http://localhost:8080/c3/annotation2?name=LYL

Spring MVC相关注解运用 —— 上篇

 OK,当请求路径有该参数时,就按照请求路径的参数值来输出,可以看得到确实是测试成功了。 

三、@RequestHeader、@CookieValue

@RequestHeader

  • 作用:在控制器方法中获取请求头数据
  • 位置:方法参数前

@CookieValue

  • 作用:在控制器方法中获取Cookie数据
  • 位置:方法参数前

3.1 示例程序

/**
     * @RequestHeader
     * 作用:在控制器方法中获取请求头数据
     * 位置:方法参数前
     * @CookieValue
     * 作用:在控制器方法中获取Cookie数据
     * 位置:方法参数前
     */
    // 获取User-Agent请求头和JSESSIONID的Cookie值
    @RequestMapping("/annotation3")
    public String annotation3(@RequestHeader("User-Agent")String userAgent, @CookieValue("JSESSIONID") String jSessionId){
        System.out.print("annotation3\t");
        System.out.println("userAgent: "+userAgent);
        System.out.print("jSessionId: " + jSessionId);
        return "lyl-HQX";
    }

3.2 测试结果

请求路径:http://localhost:8080/c3/annotation3

Spring MVC相关注解运用 —— 上篇

 可以看得到确实打印了请求头的相关数据:比如说windows系统,多少位,浏览器的版本等。sessionID也获取出来了。

四、@SessionAttributes

作用:将Model模型中的数据存到session域中
位置:类上方

4.1 示例程序

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/c4")
// 将Model模型中name的数据存到session域中
@SessionAttributes("name")
public class MyController4 {
    @RequestMapping("/t1")
    public String t1(Model model){
        // model1中保存name数据
        model.addAttribute("name","LYL");
        return "lyl-HQX";
    }
    @RequestMapping("/t2")
    public String t2(HttpSession session){
        // 从session中获取name数据
        System.out.println(session.getAttribute("name"));
        return "lyl-HQX";
    }
}

4.2 测试结果

OK,从上面程序我们可以知道,要先访问/t1,再访问/t2,才可以获取name的值。直接访问/t2是无法打印出name的属性值的。接下来我们测试一下:

当我们先访问/t2:​​​​​​:http://localhost:8080/c4/t2

Spring MVC相关注解运用 —— 上篇

OK,可以看到确实是打印出null,

Spring MVC相关注解运用 —— 上篇

并且浏览器也没有对应的值。

接下来访问/t1,http://localhost:8080/c4/t1

添加值之后

Spring MVC相关注解运用 —— 上篇

再访问/t2,可以看得到控制台确实打印出来了。 

 Spring MVC相关注解运用 —— 上篇

五、@ModelAttribute

作用1:设置指定方法在控制器其他方法前执行
位置:方法上方

作用2:从Model模型中获取数据给参数赋值
位置:方法参数前

5.1 示例程序

作用一示例程序:

package com.example.controller;

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

@Controller
@RequestMapping("/c5")
public class MyController5 {
    // @ModelAttribute作用1:设置指定方法在控制器其他方法前执行
    @ModelAttribute
    public void before(){
        System.out.println("前置方法");
    }

    @RequestMapping("/t1")
    public String t1(){
        System.out.println("t1");
        return "lyl-HQX";
    }
}

 作用二示例程序:

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/c5")
public class MyController5 {
    // @ModelAttribute作用1:设置指定方法在控制器其他方法前执行
    @ModelAttribute
    public void before(Model model){
        System.out.println("前置方法");
        model.addAttribute("name","LYL");
    }

    @RequestMapping("/t1")
    public String t1(@ModelAttribute("name") String name){
        System.out.println(name);
        return "lyl-HQX";
    }
}

5.2 测试结果

作用一测试结果:http://localhost:8080/c5/t1

Spring MVC相关注解运用 —— 上篇

OK,可以看得到前置方法确实生效了。 

 作用二测试结果:http://localhost:8080/c5/t1

Spring MVC相关注解运用 —— 上篇

Spring MVC相关注解运用 —— 上篇 OK,可以看到确实两个作用都成功执行了。

往期专栏&文章相关导读 

     大家如果对于本期内容有什么不了解的话也可以去看看往期的内容,下面列出了博主往期精心制作的Maven,Mybatis等专栏系列文章,走过路过不要错过哎!如果对您有所帮助的话就点点赞,收藏一下啪。其中Spring专栏有些正在更,所以无法查看,但是当博主全部更完之后就可以看啦。

1. Maven系列专栏文章

Maven系列专栏 Maven工程开发
Maven聚合开发【实例详解---5555字】

2. Mybatis系列专栏文章

Mybatis系列专栏 MyBatis入门配置
Mybatis入门案例【超详细】
MyBatis配置文件 —— 相关标签详解
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分)
Mybatis分页查询——四种传参方式
Mybatis一级缓存和二级缓存(带测试方法)
Mybatis分解式查询
Mybatis关联查询【附实战案例】
MyBatis注解开发---实现增删查改和动态SQL
MyBatis注解开发---实现自定义映射关系和关联查询

3. Spring系列专栏文章

Spring系列专栏 Spring IOC 入门简介【自定义容器实例】
IOC使用Spring实现附实例详解
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式
Spring DI简介及依赖注入方式和依赖注入类型
Spring IOC相关注解运用——上篇
Spring IOC相关注解运用——下篇
Spring AOP简介及相关案例
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】
Spring事务简介及相关案例
Spring 事务管理方案和事务管理器及事务控制的API
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务

4. Spring MVC系列专栏文章 

SpringMVC系列专栏 Spring MVC简介附入门案例
Spring MVC各种参数获取及获取方式自定义类型转换器和编码过滤器
Spring MVC获取参数和自定义参数类型转换器及编码过滤器
Spring MVC处理响应附案例详解
Spring MVC相关注解运用 —— 上篇

Spring MVC相关注解运用 —— 中篇文章来源地址https://www.toymoban.com/news/detail-512841.html

Spring MVC相关注解运用 —— 下篇
Spring MVC多种情况下的文件上传
Spring MVC异步上传、跨服务器上传和文件下载
Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】
Spring MVC拦截器和跨域请求
SSM整合案例【C站讲解最详细流程的案例】

到了这里,关于Spring MVC相关注解运用 —— 上篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring IOC相关注解运用——下篇

    目录 一、@Configuration 二、@ComponentScan 1. 说明 2. 测试方法 3. 运行结果 三、@PropertySource 1. 说明 2. 测试方法 3. 测试结果 四、@Bean 1. 说明 2. 添加驱动依赖 3. 将Connection对象放入Spring容器 3. 测试 五、@Import 1. 说明 2. 测试方法 3. 运行结果 往期专栏文章相关导读  1. Maven系列专栏文

    2024年02月05日
    浏览(30)
  • 【Spring MVC】Spring MVC的功能使用和相关注解介绍

    Spring MVC主要有三个功能: 连接 获取参数 输出数据 对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了Spring MVC。 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。 先创建一个SpringMVC项目,过程和SpringBoot项目创建相

    2024年02月16日
    浏览(31)
  • Spring MVC 的controller方法返回值

    说明:controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view 逻辑视图名 说明:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。 返回字符串 在index.jsp里面定义超链接 Redirect重定向 说明: Contrller方法返回结果重定向到

    2024年01月16日
    浏览(39)
  • Spring MVC中@Controller和@RestController的区别

    @Controller 和 @RestController 是 Spring MVC 中用于处理 HTTP 请求的注解,它们有以下区别: 返回值处理方式: @Controller 用于定义一个传统的 Spring MVC 控制器,它的方法通常返回视图名称或 ModelAndView 对象,由视图解析器解析并渲染成 HTML 页面。 @RestController 组合了 @Controller 和 @Resp

    2024年01月17日
    浏览(38)
  • Spring MVC学习之——Controller类中方法的返回值

    2.1逻辑视图名 说明:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。 返回字符串 2.2Redirect重定向 说明: Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。 redirect方式

    2024年01月18日
    浏览(53)
  • Spring Boot中最常用注解的使用方式(上篇)

    摘要:本文将详细介绍Spring Boot中最常用的注解的使用方式,并通过代码示例加以说明。通过学习这些注解,读者将能够更好地理解和运用Spring Boot框架,构建高效的企业级应用。 1.@RequestMapping @RequestMapping :将一个HTTP请求映射到对应的控制器方法上。可以用于类和方法级别。

    2024年02月07日
    浏览(35)
  • Spring Boot 中的 @Controller 注解:原理、用法与示例

    Spring Boot 是一个快速开发 Spring 应用程序的框架,它提供了很多有用的功能和特性。其中,@Controller 注解是一个常用的注解,它可以将一个 Java 类标记为 Spring MVC 中的控制器。本文将介绍 Spring Boot 中 @Controller 注解的原理、用法和示例。 在 Spring MVC 中,@Controller 注解用于标识

    2024年02月07日
    浏览(35)
  • 【Spring MVC】Spring MVC基于注解的程序开发

    目录 一、什么是Spring MVC  二、Spring MVC项目的创建和使用 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 1.2、@RequestMapper的简单使用  1.3、使用@GetMapping和@POSTMapping注解来实现HTTP连接 三、获取参数 1、实现获取单个参数 2、实现获取对象 3、后端参数重命名(@Requ

    2024年02月13日
    浏览(37)
  • 【Spring】— Spring MVC的注解

    1.DispatcherServlet DispatcherServlet的全名: org.Springframework.web.servlet.DispatcherServlet 它在程序中充当着前端控制器的角色。 【示例】在使用DispatcherServlet时,只需将其配置在项目的web.xml文件中,其配置代码如下。 在上述代码中, load-on-startup 元素和 init-param 元素都是可选的。如果 lo

    2024年02月10日
    浏览(26)
  • Spring MVC常用注解

    @PathVariable、@RequestBody和@RequestParam @PathVariable、@RequestBody和@RequestParam是Spring MVC框架中用于处理请求参数的注解。 @PathVariable:用于处URL路径中的 占位符参数 。例如,对于URL /users/{id} ,其中的 {id} 是一个占位符,可以使用@PathVariable注解将其绑定到方法的参数上,如下所示:

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包