springmvc的常用注解

2023-11-05

1.@RequestParam

      1.作用在方法传递的参数前,用于接收所传参数(是springmvc中接受普通参数的注解)

      2.属性 :value 请求参数中的名称

                     required:请求参数中是否提供此参数,默认为true

                    defaultValue:指定参数的默认值

 @RequestMapping("/user")
 @Controller
 public class QuickController {
     @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam("username")String username,@RequestParam(value = "age",required = false,defaultValue = "0")Integer age){
        System.out.println(username +",,," + age);
        return "index";
    }
 }
 <form action="user/testRequestParam" method="post">
      姓名:<input type="text" name="username"><br>
      年龄:<input type="text" name="age"><br>
      <input type="submit" value="testRequestParam">

  </form>

输入姓名和年龄 控制台会得到所输入的姓名和年龄

 

 

2.@Controller

     1.@Controller用于标记一个类,使用它标记的类就是一个springmvc Controller对象,即一个控  制器类 。Spring使用扫描机制查找所有基于注解的控制器类。它通常是和基于注解@RequestMapping的方法结合使用的。

    2.该注解有个默认方法,返回类型为String类型 value的默认值为空

package org.springframework.stereotype;

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@org.springframework.stereotype.Component
public @interface Controller {
    @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Component.class)
    java.lang.String value() default "";
}

3.@RequestMapping

     1.在springmvc中使用@RequestMapping来映射请求,也是通过它来指定控制器可以处理哪些URL请求。相当servlet中在web.xml的配置

     2.@RequestMapping有六个属性,一般在项目中常用的有三个属性:value,method,produces

         value:指定请求的实际地址

         method:指定类型的请求,主要有GET,POST,PUT,DELETE,默认为GET

         produces:指定返回内容类型 produces="application/json;charset=UTF-8"

@RequestMapping(value = "/user",produces="application/json;charset=UTF-8")
@Controller
public class QuickController {
     @RequestMapping(value = "/testPost",method = RequestMethod.POST)
    public String testPost(){
        System.out.println("quickMethod running.....");
        return "index";
    }
}
<form action="user/testPost" method="post">
  <input type="submit" value="testPost">
</form>

4.@SessionAttributes

   1.可以让参数在多个请求间共享,配置需要在session中存放数据范围,@SessionAttributes只能使用在类定义上。

      2.

@SessionAttributes(value = {"user"},types = {String.class})

会将model中属性名为user以及类型为String的属性添加到会话中。

@SessionAttributes(value = {"user"},types = {String.class})
@RequestMapping("/user")
@Controller
public class QuickController {
    @RequestMapping("/testSessionAttribute")
   public String testSessionAttribute(Map<String,Object> map){
        User user = new User();
        user.setName("LBJ");
        user.setAge(37);
       Car car = new Car();
       car.setKind("aodi");
       user.setCar(car);
       map.put("user",user);
       map.put("a","wc");
       map.put("inter",new Integer(12));
       return "index";
   }
}

 

<a href="user/testSessionAttribute">testSessionAttribute</a>
request:${requestScope.user};${requestScope.a};${requestScope.inter}
<br>
session:${sessionScope.user};${sessionScope.a};${sessionScope.inter}

很明显 session没有拿到12这个值

 

5.@ModelAttribute

     1.@ModelAttribute可以用于修饰方法和参数

       用在方法上:被@ModelAttribute注释的方法会在此controller的每个方法执行前执行,可以修饰没有返回值的方法,也可修饰有具体返回值的方法。

       用在参数上:会将客户端传递来的参数按名称注入到指定对象中

应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。

@RequestMapping("/user")
@Controller
public class QuickController {
    @RequestMapping("/testModuleAttribute")
    public String testModuleAttribute(User user){
        System.out.println(user);
        return "index";

   }
<form action="user/testModuleAttribute" method="post">
    <input type="text" name="name">
    <input type="submit" value="testModuleAttribute">
  </form>

此时我们只能得到名字

当我们加上@ModelAttribute

 @ModelAttribute
    public void test(Map<String,User> map){
        System.out.println("1111");
        User user = new User();
        user.setName("Gurry");
        user.setAge(31);
        map.put("user",user);

   }

 输入名字的同时 可以得到名字和年龄

 

6.@PathVariable

   1.通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL中的{xxx}占位符可以通过@PathVariable("xxx")绑定到方法入参中

       2.@PathVariable可以接收多个参数但是无法接收对象

@RequestMapping("/user")
@Controller
public class QuickController {
     @RequestMapping(value = "/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println("testPathVariable running....." + id);
        return "index";
    }
}

 

<a href="user/testPathVariable/12">testPathVariable</a>

 

7.@ResponseBody  

     1.@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入response对象的body区,通常返回JSON数据或者XML数据,使用此注解不会再走视图处理器。

 不加@ResponseBody注解 返回字符串需要response.getWriter.write();

 @RequestMapping("/testString")
    public void testString(HttpServletResponse response){
        try {
            response.getWriter().print("hello");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

加入@ResponseBody注解之后

 @RequestMapping("/testResponsebody")
    @ResponseBody
    public String testResponsebody(){
       return "abcdefg";
    }

 8.@RequestHeader

        1.@RequestHeader注解用于获取请求消息头

        2.属性 value:提供消息头名称 参数值为String类型  

                   required : 是否必须有消息头,默认值为true

                  defaultValue:请求头变量绑定失败时的默认值

 @RequestMapping("/testHead")
    public String testHead(@RequestHeader(value = "Accept") String myHeader){
        System.out.println("testHead");
        System.out.println(myHeader);

        return "index";
    }

 

 <a href="user/testHead">testHead</a>

 部署成功,控制台获取了请求头的值

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springmvc的常用注解 的相关文章

随机推荐

  • 对于制造业来说,MES上线前后有哪些变化?

    对于制造业来说 MES软件系统未上线前的现状 具体如下 1 目前 制造业产品的批次记录仍然是手工录入 并且每批都需要去打印 除此之外 生产过程中的投料量计算结果 产品测试的申请单 月生产计划表 产品所需浓度的计算都需要人工填写 不仅需要耗费
  • python包管理-pip

    镜像列表 官方 已默认添加 豆瓣 清华大学 中国科技大学 阿里 网易镜像 腾讯镜像 华为镜像 北京外国语大学 哈尔滨工业大学 百度 https pypi python org simple http pypi doubanio com si
  • 基于爱奇艺HCDN视频分发网络的开放缓存

    为通过Internet向海量用户传输高清晰度 高码率的视频节目 爱奇艺融合CDN和P2P技术 开发出一套适合多终端的混合分发传输网络 HCDN 本文来自爱奇艺高级技术总监庹虎在LiveVideoStackCon 2018大会中的演讲 由Li
  • CTF-8 靶场夺旗

    兵无常势 水无常形 能因敌而致胜者 谓之神 环境准备 VMware Workstation Pro12 Kali Linux IP 10 10 16 128 CTF 8 虚拟机 NAT 网络连接 1 主机发现 fping asg 10 10
  • ubuntu10上安装万能五笔

    我听同事说ubuntu上运行eclipse会比window上快 我抱着好奇就安装了ubuntu来试玩玩 安装完毕 上网找资料的时候 发现我需要中文输入 尤其是五笔 后来返回到window上上网搜索 找到了些资料 知道如何通过ibus来使用拼
  • java泛型里能放多个类吗,具有多个类的Java泛型通配符

    小编典典 实际上 你可以做你想做的事 如果要提供多个接口或一个类加接口 则必须使通配符看起来像这样 请参见sun com上的泛型教程 特别是页面底部的 绑定类型参数 部分 实际上 如果需要 你可以列出多个接口 并 InterfaceName
  • Spring Boot 3.0学习笔记

    什么是Spring Boot Spring Boot是一个基于Spring Framework的快速开发Web应用的工具 它使用了约定优于配置的方式来快速构建应用 使得开发人员能够专注于业务逻辑的实现 而不用过多关注配置和框架集成问题 Sp
  • iostat 工具分析I/O性能

    iostat命令用途 主要用于监控系统设备的IO负载情况 iostat首次运行时显示自系统启动开始的各项统计信息 之后运行iostat将显示自上次运行该命令以后的统计信息 用户可以通过指定统计的次数和时间来获得所需的统计信息 iostat有
  • 若依框架密码验证环节修改(三方登录时改为跳过密码验证,但正常登录保留密码验证)

    当用到三方登录时 例如微信登录等 没法验证密码 又找不到若依密码的解密方式 套用此方法 跳过密码验证 并且为可选的 想让哪个方法登录时要密码或者不要 写上即可 我使用的是若依不分离版 但参考自官方文档 大差不差 具体见个人情况 参考地址 若
  • 【学习笔记】数据获取之爬虫笔记

    概述 疫情期间在风变编程 https www pypypy cn 上学习了爬虫的相关知识 风变编程是一个交互式学习网站 目前开的模块还不是很多但是交互式在线教学实验的形式还是十分有趣 交互式的形式教一个读书顺序 督催一行一行读书 告诉什么时
  • 网页唤起QQ在线聊天

    免费版 详见 https shang qq com v3 widget html 示例 a href http wpa qq com msgrd v 3 uin 1078363295 site qq menu yes 在线客服 a 目前还能
  • 【华师】C++简答题汇总

    简答题 斜体和代码块都是了解即可 面向对象四大特征 封装 抽象 继承 多态 对象 客观世界中的任何一个事物都可以视作一个对象 任何一个对象都己有两个要素 属性和行为 属性是对象本身的性质 而行为是对象的功能 C 中每个对象都是由数据和函数组
  • unity 项目强制退出通知服务器,MonoBehaviour.OnApplicationQuit() 当应用程序退出 - Unity5 中文 API 手册...

    Description 描述 Sent to all game objects before the application is quit 在应用退出之前发送给所有的游戏物体 In the editor this is called wh
  • FTP实现文件夹上传

    package com supcon orchid ChuanHuaCostom util import java io BufferedInputStream import java io BufferedOutputStream imp
  • TCP实现客户端和服务器端连接、文件上传,UDP发送消息、实现多线程在线咨询

    TCP实现客户端和服务器端连接 客户端 连接服务器Socket 发送消息 import java io IOException import java io OutputStream import java net InetAddress
  • python面对对象编程

    什么是面对对象编程 程序设定的范式 面对对象编程可以是代码程序更加的可控更加让人理解 面对对象编程就是把现实世界变得抽象并建立起对象模型 程序就是不同对象之间相互调用的逻辑 例 人 动物 车 这些都是现实世界的东西那就可以在这段代码中抽象出
  • UVM-寄存器模型

    目录 1 什么是寄存器 2 寄存器块 3 UVM寄存器模型 3 1 期望值 3 2 镜像值 3 3 创建寄存器类 3 4 定义寄存器块 3 5 寄存器env 4 完整例子 4 1设计 4 2 interface 4 3 寄存器 4 4 寄存
  • vscode不能选择python解释器

    command python select interpreter resulted in an error 解决方法 会看到左下角会有restricted mode这几个字 然后点这几个字 再选择Trust就可以了
  • 计算机网络(自顶向下)学习笔记——网络层

    第四章 网络层 4 1 概述 转发功能和路由选择功能的区别 转发涉及在单个的路由中从一条入链路到一条出链路的传送 路由选择涉及一个网络的所有路由器 他们经路由选择协议共同交互 决定分组从源到目地结点所采用的的路径 4 1 1 转发和路由选择
  • springmvc的常用注解

    1 RequestParam 1 作用在方法传递的参数前 用于接收所传参数 是springmvc中接受普通参数的注解 2 属性 value 请求参数中的名称 required 请求参数中是否提供此参数 默认为true defaultValu