当前位置: 首页 > news >正文

SpringMVC基础Controller

文章目录

  • Controller 的编写和配置
    • 1. Controller 注解类型
    • 2. @RequestMapping 注解类型
    • 3. 编写请求方法
    • 4. 请求参数和路径变量

Controller 的编写和配置

@Controller 注解和 @RequestMapping 注解是 Spring MVC 最重要的两个注解。

使用基于注解的控制器的优点如下:

  • 一个 Controller 类可以处理多个动作,而实现了一个 Controller 接口的控制器只能处理一个动作。

  • 基于 Controller 注解的控制器的请求映射不需要写在配置文件中。使用 @RequestMapping 注解类型,可以对一个方法进行请求处理。

1. Controller 注解类型

Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证 Spring 能找到你的控制器,必须完成两件事:

// ...
@ComponentScan("...")
public class SpringWebConfig implements WebMvcConfigurer {...
}
  1. 自定义一个配置类,实现 WebMvcConfigurer 接口;

  2. 在配置类上标注,@ComponentScan 扫描你的 @Controller 所在的包。

注意,不要让 Spring 扫描一个太广泛的包,这会包含无意义的行为。

2. @RequestMapping 注解类型

@RequestMapping 注解类型的作用如同起名字所暗示:映射一个请求和一个方法。可以使用它注解一个方法或类。

@RequestMapping 注解的方法将成为一个 请求处理方法 ,在接收到URL请求时被调用。

@RequestMapping(value="/hello", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView printHello() {System.out.println("Hello World");ModelAndView mav = new ModelAndView();mav.addObject("message", "Hello Spring MVC Framework!");mav.setViewName("hello");return mav;
}

value 属性是 @RequestMapping 的默认属性,唯一时可省略属性名。

method 属性用来指示该方法仅处理哪些 HTTP 方法。若 method 属性只有一个值时,则无须花括号。若没有指定 method 属性值,则请求方法可处理任意 HTTP 方法。

此外,如果用 @RequestMapping 注解一个控制器类,那么,所有的方法都将映射为『相对于』类级别的请求。

3. 编写请求方法

每个请求处理方法的参数和返回值『既灵活又严格』。

最为常见的参数类型有:

  • HttpServletRequest、HttpServletResponse、HttpSession

  • Map、Model、ModelMap

  • 表单对象(次常用

  • 带指定注解的参数(最常用

最为常见的返回值类型有:

  • ModelAndView(最常用

  • Model、View

  • String(次常用

  • 被当作 View 的模型对象的任意类型


对于初学者而言,如果你觉得『参数类型和返回值类型过于灵活多样,以至于你无法确定你使用哪个种更合适』,那么你就使用 HttpServletRequestHttpServletResponseModelAndView ,这是 100% 不会有问题的百搭组合。当然,使用过程中代码会略显罗嗦。

@RequestMapping("...")
public ModelAndView demo(HttpServletRequest request, HttpServletResponse response) {...
}

4. 请求参数和路径变量

Spring MVC 提供了一个更简单的方法来获取 Get 请求参数:通过使用 @RequestParam 注解。

@RequestMapping("/hehe/{id}")
public ModelAndView printGoodbye(@PathVariable int id) {System.out.println(id);ModelAndView mav = new ModelAndView();mav.setViewName("hello");return mav;
}

此处需要注意的是,拦截规则是拦截所有请求,还是拦截特定后缀(无法拦截并触发该方法的执行)?!

http://www.lryc.cn/news/326670.html

相关文章:

  • spark 参数
  • java调用jacob进行文件转换ppt转pdf或者png
  • 鸿蒙HarmonyOS应用开发之使用DevEco Studio模板构建NDK工程
  • uniapp流浪动物救助小程序Java宠物领养小程序springboot
  • 工程企业的未来选择:Java版工程项目管理系统平台与数字化管理的融合
  • Vue使用el-statistic和el-card显示大屏中的统计数据
  • 12.2024
  • 【学习心得】Jupyter常用操作与魔法方法
  • Linux命令别名
  • Docker和 Containerd 的区别
  • Qt实现TFTP Server和 TFTP Client(二)
  • 【b站李炎恢】Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢
  • AI大语言模型工程师学习路线
  • 基于树莓派实现 --- 智能家居
  • 基于Arduino IDE 野火ESP8266模块 一键配网 的开发
  • 左手医生:医疗 AI 企业的云原生提效降本之路
  • ceph集群部署
  • C#WPF控件Label宽度绑定到父控件的宽度
  • HMI的学习
  • 工业无线网关在汽车制造企业的应用效果和价值-天拓四方
  • 校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!
  • Machine Learning机器学习之K近邻算法(K-Nearest Neighbors,KNN)
  • 四、在数据库里建库
  • 蓝桥杯-网络安全比赛(2)基础学习-正则表达式匹配电话号码、HTTP网址、IP地址、密码校验
  • 如何创建azure pipeline
  • 缓存菜品、套餐、购物车相关功能
  • 微信小程序的页面交互1
  • win10 docker zookeeper和kafka搭建
  • 【Redis】快速入门 数据类型 常用指令 在Java中操作Redis
  • 【tingsboard开源平台】下载数据库,IDEA编译,项目登录