控制器Controller

  • 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。
  • 控制器负责解析用户的请求并将其转换为一个模型。
  • 在Spring MVC中一个控制器类可以包含多个方法
  • 在Spring MVC中,对于Controller的配置方式有很多种。

实现Controller接口

Controller是一个接口,该接口下只有一个方法。

//实现该接口的类获得控制器功能
public interface Controller {
//处理请求且返回一个模型与视图对象
ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;
}

测试

  1. 新建一个子项目
  2. 编写一个Controller类,ControllerTest1
//定义控制器
//注意点:不要导错包,实现Controller接口,重写方法;
public class ControllerTest1 implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//返回一个模型视图对象
ModelAndView mv = new ModelAndView();
mv.addObject("msg","Test1Controller");
mv.setViewName("test");
return mv;
}
}
  1. 在Spring配置文件中注册bean
<bean name="/t1" class="com.kuang.controller.ControllerTest1"/>
  1. 在WEB-INF/jsp目录下编写,test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>P-P</title>
</head>
<body>
${msg}
</body>
</html>

使用注解@Controller

  • @Controller注解类型用于声明Spring类的实例是一个控制器
  • Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,这需要在配置文件中声明组建扫描。
<context:component-scan base-package="com.pp.controller"/>
  • 创建一个ControllerTest2,使用注解实现
package com.pp.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
//@RequestMapping("/hello1")
public class HelloController { @RequestMapping("/h1")
public String hello(Model model){
model.addAttribute("msg","HelloSpringMVCAnnotation");
return "hello";
} @RequestMapping("/h2")
public String hello2(Model model){
model.addAttribute("msg","HelloSpringMVCAnnotation22222222222");
return "hello";
}
}

RestFul风格

RestFul就是一个资源定位及资源操作的风格。

功能:
资源:互联网所有的食物都可以被抽象为资源
资源操作:使用post、delete、put、get,使用不同方法对资源进行操作。分别对应 添加、删除、修改、查询。

学习测试:

  1. 新建一个RestFulController
  2. 在SpringMVC中可以使用@PathVariable注解,让方法参数的值对应绑定到一个URL模版变量上。
@Controller
public class RestFulController { //映射访问路径
@RequestMapping("/commit/{p1}/{p2}")
public String index(@PathVariable int p1, @PathVariable int p2, Model model){ int result = p1+p2;
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "结果:"+result);
//返回视图位置
return "test"; } }

方法级别的注解:

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

其中@GetMapping是使用最多的

SpringMVC03—RestFul和Controller的更多相关文章

  1. SpringMVC-03 RestFul和控制器

    SpringMVC-03 RestFul和控制器 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. ...

  2. Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)

    这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...

  3. 【Restful】三分钟彻底了解Restful最佳实践

    REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等 ...

  4. RestFul风格接口示例

    REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等 ...

  5. RESTful源码学习笔记之RPC和Restful深入理解

    以下资料搜集自网络 0x00 RPC RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法).通常的实现 ...

  6. Yii2 Restful API 原理分析

    Yii2 有个很重要的特性是对 Restful API的默认支持, 通过短短的几个配置就可以实现简单的对现有Model的RESTful API 参考另一篇文章: http://www.cnblogs. ...

  7. Eclipse下利用Maven创建SpringBoot的Restful风格程序

    参考文章:https://spring.io/guides/gs/rest-service/ 中文翻译:https://blog.dubby.cn/detail.html?id=9040 1.目标是什 ...

  8. 33.服务之间的调用之RPC、Restful深入理解

    33.服务之间的调用之RPC.Restful深入理解 2018年05月08日 01:52:42 郑学炜 阅读数 13577更多 分类专栏: 6.框架   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  9. RestFul 与 RPC

    原文地址:https://blog.csdn.net/u014590757/article/details/80233901 RPC.REST API深入理解 一:RPC RPC 即远程过程调用(Re ...

  10. SpringMVC-Controller&RestFul

    Controller与RestFul 目录 Controller与RestFul 1. Controller 1. 控制器Controller 2. 利用接口定义控制器 1. 实现Controller ...

随机推荐

  1. NC65单据模板公式使用

    单据模板公式使用 (一) 公式使用场景 用户使用产品时,往往对单据上的字段取值有各种不同的需求.为此单据模板提供 了模板公式功能,可以让实施顾问或者用户通过配置各种公式,并且不用修改代码,从 而满足用 ...

  2. 热闹的人工智能VS酷寒的资本寒冬,2023年AI Agent项目盘点与融资分析

    2023年国内AI Agent下项目大盘点,科技大厂与创业公司齐头并进 热闹人工智能VS酷寒资本寒冬,2023年AI Agent项目盘点与融资分析 资本寒冬下的AIGC,为什么这些AI Agent项目 ...

  3. springboot-jpa获取session

    springboot获取hibernate的session进行更精细的SQL操作,默认的jpa并不能满足一些复杂需求(可能是我把需求设计复杂了) 通过查看JpaRepository的底层实现,发现是通 ...

  4. java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

    java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现? 答案2023-06-21: java的: 这个问题,我问了一些人,部分人是回答得有问题的. ...

  5. OSG嵌入QT的简明总结2

    正文 我之前在这篇博文<OSG嵌入QT的简明总结>中论述了OSG在QT中显示的可视化问题.其中提到官方提供的osgQt项目(地址:https://github.com/opensceneg ...

  6. 跟着B站UP主小姐姐去华为坂田基地采访扫地僧

    摘要:谁说程序员就只能写代码呢!华为扫地僧的才艺是完全可以solo出道的那种. 忍不住想要和你们分享下我9月份的快乐呀!Mark下最近完成的一件超了不起的事情!我去你们口中别人家的公司-华为啦!这次采 ...

  7. 技术实操丨SoundNet迁移学习之由声音分类到语音情感识别

    摘要:声音也是识别对象的一种重要数据源.其中根据声音来识别声音所处的环境也是语音识别的研究内容之一. 一.思路 1.SoundNet模型在视频数据中先预训练,视频任务可能是场景识别,可参考这篇文章So ...

  8. 万字讲解WiFi为何物

    摘要:WiFi是一种基于IEEE802.11系列协议标准实现的无线通信技术. 本文分享自华为云社区<[云驻共创]物联网无线短距离Wi-Fi技术专题>,作者:Mr红凯. 前言 Wi-Fi通往 ...

  9. ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  10. Axure 获取验证码

    拖两个矩形框,一个用来做文档输入,一个做获取验证码的按钮 设置全局变量OnLoadVariable的初如值为60 1.用例中的条件:当OnLoadVariable的值不等于0 2.用例中的步骤 禁用& ...