【SpringMVC】Controller注解及请求参数详解

您所在的位置:网站首页 控制器参数 【SpringMVC】Controller注解及请求参数详解

【SpringMVC】Controller注解及请求参数详解

2024-07-01 20:55:49| 来源: 网络整理| 查看: 265

本文目录 Controller注解Controller 注解用法Controller 接收请求参数通过形参接收请求参数通过实体Bean 接收请求参数通过HttpServletRequst接收请求参数通过RequestParam注解接收请求参数通过PathVariable注解接收请求参数通过ModelAttribute注解接收请求参数修饰的方法有返回值修饰的方法没有返回值

Controller注解

在Spring中 Controller注解用于指示Spring类的实例是一个控制器,相对于实现Controller接口变得更加简单。而且实现Controller接口只能处理一个单一的请求,而是用@Controller注解可以支持同时处理多个请求动作,更加灵活。 @Controller用于标记一个类,使用他标记的类就是一个SpringMVC Controller对象,即一个控制器类,Spring使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解的方法才是真正处理请求的处理器。 在使用Controller注解前,需要在Spring配置文件中打开注解扫描

Controller 注解用法

在使用注解前,创建一个 SpringMVC工程:【SpringMVC】SpringMVC入门实例

@Controller public class LoginControl { @RequestMapping(value = "/index/login") public String login(){ return "login"; } }

@Controller表示该类是一个控制器类,@RequestMapping注解用来映射一个请求,value="/index/login"表示请求由该注解下的login方法进行处理。 所以当请求’/index/login’的地址,可以转发到LoginControl的login()方法进行处理 在这里插入图片描述

前面的RequestMapping注解也可以加到Controller类上 ,如下所示,请求得到同样的结果

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } } Controller 接收请求参数 通过形参接收请求参数

首先在之前的工程(【SpringMVC】SpringMVC入门实例)上增加如下修改 在这里插入图片描述 login.jsp修改如下:

Title 名字: 年龄:

增加success.jsp

Title 添加成功

在LoginControl中添加 add()方法,该方法增加两个参数age和name,该参数名称需要和表单input中name的名称一致。

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @RequestMapping(value = "/add") public String add(int age,String name){ System.out.println("age:"+age+" name:"+name); return "success"; } }

请求结果如下: 在这里插入图片描述 在这里插入图片描述

控制台打印了请求参数信息 在这里插入图片描述

通过实体Bean 接收请求参数

在前面工程基础上新建实体类User

public class User { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "age=" + age + ", name='" + name + '\'' + '}'; } }

将LoginControl中 的add()方法参数修改如下:

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @RequestMapping(value = "/add") public String add(User user){ System.out.println("user:"+user ); return "success"; } }

执行结果: 在这里插入图片描述

通过HttpServletRequst接收请求参数

将LoginControl中 的add()方法参数修改如下:

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @RequestMapping(value = "/add") public String add(HttpServletRequest request){ System.out.println("request age:"+ request.getParameter("age") ); System.out.println("request name:"+ request.getParameter("name") ); return "success"; } }

打印如下: 在这里插入图片描述

通过RequestParam注解接收请求参数

RequestParam注解作用:把请求中的指定名称的参数传递给控制器中的形参赋值 注解属性 value:请求参数中的名称 required:请求参数中是否必须提供此参数,默认值是true,必须提供

将LoginControl中 的add()方法参数修改如下:

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @RequestMapping(value = "/add") public String add(@RequestParam(value="name",required=false)String username,@RequestParam(value="age",required=false)String age){ System.out.println("RequestParam age:"+ age); System.out.println("RequestParam name:"+ username ); return "success"; } }

打印如下: 在这里插入图片描述

通过PathVariable注解接收请求参数

PathVariable注解作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符 注解属性 value:指定url中的占位符名称

优点:Restful风格的URL 请求路径一样,可以根据不同的请求方式去执行后台的不同方法

在login.jsp中添加一个a标签

Title 名字: 年龄: PathVariable注解请求

将LoginControl中 添加sayHello()方法:

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @RequestMapping(value = "/add") public String add(@RequestParam(value="name",required=false)String username,@RequestParam(value="age",required=false)String age){ System.out.println("RequestParam age:"+ age); System.out.println("RequestParam name:"+ username ); return "success"; } @RequestMapping(path="/hello/{id}") public String sayHello(@PathVariable(value="id") String id) { System.out.println("id="+id); return "success"; } }

在这里插入图片描述

通过ModelAttribute注解接收请求参数

ModelAttribute注解作用

出现在方法上:表示当前方法会在控制器方法执行前线执行。出现在参数上:获取指定的数据给参数赋值。 修饰的方法有返回值

给User中添加一个id属性,再到UserController中添加一个parameterUser()方法,给user添加id, 在add方法中user已经被上面的parameterUser先执行了修改,已经给id赋值

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @ModelAttribute public User parameterUser(){ User user = new User(); user.setId(1); return user; } @RequestMapping(value = "/add") public String add(User user){ System.out.println("user :"+ user); return "success"; } }

在这里插入图片描述 在这里插入图片描述

修饰的方法没有返回值

在上面案例基础上,把parameterUser的返回值去掉,增加一个Map来存储数据,存储的key为user,在add方法中使用@ModelAttribute(“user”)User user获取在parameterUser()方法中赋值的数据。程序运行后,add方法的user参数能取到parameterUser方法赋值的数据。 执行结果同上

@Controller @RequestMapping("/index") public class LoginControl { @RequestMapping(value = "/login") public String login(){ return "login"; } @ModelAttribute public void parameterUser(Map userMap){ User user = new User(); user.setId(2); userMap.put("user",user); } @RequestMapping(value = "/add") public String add(@ModelAttribute("user")User user){ System.out.println("user :"+ user); return "success"; } }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭