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

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的,但是越复杂的项目使用SpringMVC越方便

基于Java实现MVC模型的轻量级web框架

目标:

小案例:

1.导入依赖

spring-context: 提供 Spring 框架的核心功能,如依赖注入、事件发布和其他应用上下文的功能。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
aspectjweaver: 提供 AspectJ 框架的织入支持,允许你在 Spring 应用中使用面向切面编程(AOP)
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<!--   springMVC依赖注入     -->
javax.servlet-api: 提供 Java Servlet API 的接口,用于构建 web 应用的服务器端逻辑。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
spring-webmvc: 支持 Spring MVC 框架,用于构建 web 应用程序的控制器和视图层,处理 HTTP 请求和响应。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>请告诉我这些依赖的作用

2.使用@controller定义Bean,并定义访问路径

@Controller
public class UserController {@RequestMapping("save")//定义访问路径@ResponseBody//设置当前返回值类型,将返回值当作一个整体返回public String save() {System.out.println("user save");return "{'info':'springmvc'}";}
}

3.创建springmvc的配置文件,加载controller 对应的bean

@Configuration
@ComponentScan("com.viki.controller")
public class SpringConfig {
}

4.定义一个servlet容器启动的配置类,在里面加载spring的配置

定义一个servlet容器启动的配置类,在里面加载spring的配置
public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {@Override//加载springMVC容器配置protected WebApplicationContext createServletApplicationContext() {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();ctx.register(SpringConfig.class);return (WebApplicationContext) ctx;}@Override//设置哪些请求归属springMVC处理protected String[] getServletMappings() {return new String[]{"/"};}@OverrideJ//加载spring容器配置protected WebApplicationContext createRootApplicationContext() {return null;}
}

1.请求与响应

@Controller
@RequestMapping("/hello")
@ResponseBody// 类级别的请求映射
public class HelloHandler {@RequestMapping(value = "/index")  // 方法级别的请求映射public String index(String name,int age) {System.out.println("接受请求!"+"name:"+name+"age"+age);return "HelloHandler";}@RequestMapping( "/indexdifnam")@ResponseBody// 方法级别的请求映射public String indexdifnam(@RequestParam("name") String username, int age) {System.out.println("接受请求!"+"username:"+username+"age"+age);return "HelloHandler";}@RequestMapping( "/javabeanpar")@ResponseBody// 方法级别的请求映射public String javabeanpar(User user) {System.out.println("接受请求!"+"user===>"+user);return "HelloHandler";}@RequestMapping( "/set")@ResponseBody// 方法级别的请求映射public String set(@RequestParam List<String> list) {System.out.println("接受请求!"+"集合===>"+list.toString());return "HelloHandler";}
}

json数据

重要注释:

响应JSON数据只需要在对相应方法上@RequestBody方法,return后写上对应的String串,或者对象即可

此注解可以激活spring MVC的自动类型转换

类型转换数据依赖

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.1</version></dependency>

2.REST编码风格

3.SSM整合

4.拦截器

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PostMan使用变量
  • 在mac中如何使python3作为默认版本
  • v-for循环中使用‘v-model‘ directives cannot update the iteration variable itself
  • JavaSE基础——第三章 运算符
  • 如何在webots中搭建一个履带机器人
  • 什么是外贸专用路由器?
  • 微信小程序----日期时间选择器(自定义时间精确到分秒)
  • 瑞芯微rv1126 Linux 系统,修改系统时区,包有效方法
  • 8.JMeter+Ant(基于工具的实现接口自动化,命令行方式)
  • 牛客背包问题练习 xinjun与阴阳师
  • 记录一题---位示图
  • Git的基本操作
  • phpstudy 建站使用 php8版本打开 phpMyAdmin后台出现网页提示致命错误:(phpMyAdmin这是版本问题导致的)
  • 中标喜讯!湖北产教融合教育研究院携手湖北医药学院,共筑同等学力申硕新篇章
  • GAN的损失函数和二元交叉熵损失的对应及代码
  • [case10]使用RSQL实现端到端的动态查询
  • 【个人向】《HTTP图解》阅后小结
  • classpath对获取配置文件的影响
  • echarts的各种常用效果展示
  • es6
  • Flannel解读
  • k8s如何管理Pod
  • Markdown 语法简单说明
  • PHP的Ev教程三(Periodic watcher)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Vue 重置组件到初始状态
  • vue-loader 源码解析系列之 selector
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 彻底搞懂浏览器Event-loop
  • 关于使用markdown的方法(引自CSDN教程)
  • 聚簇索引和非聚簇索引
  • 排序算法学习笔记
  • 判断客户端类型,Android,iOS,PC
  • 人脸识别最新开发经验demo
  • 深入 Nginx 之配置篇
  • 事件委托的小应用
  • ​香农与信息论三大定律
  • #{}和${}的区别?
  • #window11设置系统变量#
  • #控制台大学课堂点名问题_课堂随机点名
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (九)c52学习之旅-定时器
  • (四)鸿鹄云架构一服务注册中心
  • (算法)求1到1亿间的质数或素数
  • (一)基于IDEA的JAVA基础12
  • (转)Mysql的优化设置
  • (转)visual stdio 书签功能介绍
  • (转载)Linux网络编程入门
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .env.development、.env.production、.env.staging