SpringMvc

2023-11-12

简述:基于Java实现Mvc模型的轻量级web框架

配置案例过程:

导入maven:

<dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.19</version>
        </dependency>

配置SpringConfig

@Configuration
@ComponentScan("com.wlb.controller")
public class SpringMvcConfig {
}

配置:AbstractDispatcherServletInitializer

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    /*
    加载springmvc中的对象
     */
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    /**
     * 加载那些请求让spring处理
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }

执行流程:

 

记载bean的方式

 

 另一种写法:

 

请求:

参数的种类:(传递的参数的种类)

1.普通参数:http://localhost:8080/save?name=zhangsan&age=8

按照普通习惯来说,前端传来的值应该跟controller中的参数一样,例如public void add(String name,int age),但是如果特殊情况下前后端的参数不一样可以用@RequestPam,例如,从后台传来的参数是username,就要用public void add(@RequestPam(“username”)String name,int age),就是将前端的username跟controller中的name进行绑定。

2,POJO参数:http://localhost:8080/save?name=zhangsan&age=8

public void pojoParam(User user),因为上述中的zhangsan和age是User类中的实体类,传过来的参数如果跟类中的参数一样,会自动注入封装成User类

3,嵌套pojo属性:http://localhost:8080/save?name=zhangsan&age=8

如果User类中包含一个address类,那么只需要在前端传值中改变为address.**(*代表address的属性)

4,数组参数:http://localhost:8080/save?likes=game&likes=shangwang&likes=sss

public void pojoParam(String[ ] likes)

如果url中改为like,那么就不会注入likes中

5,集合参数:http://localhost:8080/save?likes=game&likes=shangwang&likes=sss

public void pojoParam(@RequestParam List<String> likes) 

因为List<String>是一个List引用类,String是他的属性,如果不加@RequestParam,则代表likes是传入的List的属性,但是List的属性是固定好的,所以需要加@RequestParam,进行绑定,相当于给String这个属性传入值为likes。

Json数据类型

1,数组对象

坐标:

***@EnableWebMvc 加载SpringMvcConfig,开启json数据转化为实体类的方法。信息是存在请求体中

[“aaa”,"bbb","ccc"]==>public void pojoParam(@RequestBody List<String> likes) 

@RequestBody是在将请求体中的json转化为body对象

 2,pojo对象

{"name":"zhangsan",

"age":13,

"address":{

       "city":"xuzhou:

}}==>public void pojoParam(@RequestBody User user) 

 3,多个pojo对象

前端传多个json的对象

{ "name":{

**:**

},

"address":{

**:""

}

}==>public void pojoParam(@RequestParam List<User> user)

日期类型参数传递:(String转Date)

http://localhost:8080/save?date1=2008/1/1 3:12:10 ==> public void Datatmps(@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss) Data data)

其中pattern中得格式必须要和url中的格式完全一致。(注意“-”“/”)

响应:

servlet模式主要是响应页面。

@RequestMapping

public String toJump("/**"){

***;

return "**.html"}

json大部分是响应数据。

@RequestMapping

@ResponseBody

public String toJump("/**"){

***;

return "**.html"} ==>返回的是字符串 **.html

返回pojo对象的json对象只需要@ResponseBody 把String改变为具体的类

@ResponseBody:设置当前控制器返回值未响应体

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

SpringMvc 的相关文章

  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • 传递自定义类型查询参数

    如何接受自定义类型查询参数 public String detail QueryParam request final MYRequest request 上面的行在启动服务器时出现错误 jersey server model ModelV
  • 用于制作代码编辑器的 JavaFX 相当于 JSyntaxPane 的什么?

    以前在 Swing 中 我使用过JSyntaxPane用于制作一个小型 Java 源代码编辑器 为了练习 我决定用 JavaFX 重做整个项目并添加对更多语言的支持 最好是尽可能多 不过好像没有什么类似的JSyntaxPane 一些研究让我
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 在 Eclipse 中删除空块之前的新行

    我更喜欢奥尔曼式 http en wikipedia org wiki Brace style Allman style大括号 例如 if foo magical prancing unicorn stuff 而不是 if foo unma
  • 生成一定长度的所有排列

    假设我们有一个字母表 abcdefghiklimnop 如何以有效的方式以五个一组的形式重复该字母表来递归生成排列 几天来我一直在为此苦苦挣扎 任何反馈都会有帮助 本质上这与 生成给定字符串的所有排列 https stackoverflow
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • 使用 JSONP 时出现“无效标签”?

    我的 JSONP 请求有问题 数据不会显示 Firebug 显示 无效标签 错误 我的 JavaScript ajax url link dataType jsonp beforeSend function xhr var base64 b
  • BigDecimal汇总统计

    我有一个 BigDecimal 列表 List
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 在 Eclipse RCP 应用程序中禁用插件贡献

    我经常遇到这个问题 但尚未找到解决方案 每当我编写一个新的基于 Eclipse RCP 的应用程序并包含来自 Eclipse 平台的插件时 我都会 继承 其中一些插件的 UI 贡献 大多数贡献 菜单项 键盘快捷键 属性页 都很有用 但有时我
  • Spring security:从 4.0 迁移到 5.0 - 错误 - 没有为 id“null” 映射的 PasswordEncoder [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 java lang IllegalArgumentException There is no PasswordEncoder ma
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • Spring 如何在运行时获取有关“强类型集合”的泛型类型信息?

    我在 Spring 3 0 文档中阅读了以下内容 强类型集合 仅限 Java 5 在 Java 5 及更高版本中 您可以使用强类型集合 使用泛型类型 也就是说 可以声明一个 Collection 类型 使其只能包含 String 元素 例如
  • 如何在不使用 -cp 开关的情况下在 Groovy 中自动加载数据库 jar?

    我想简化调用 Oracle 数据库的 Groovy 脚本的执行 如何将 ojdbc jar 添加到默认类路径以便我可以运行 groovy RunScript groovy 代替 groovy cp ojdbc5 jar RunScript
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca

随机推荐

  • 模拟退火算法 Simulated Annealing(SA)学习笔记

    1 模拟退火算法思想 所谓模拟退火就是模仿物质退火过程 物体温度高时分子运动剧烈 此时我们的算法接受新解的概率拉高 物体温度逐渐趋向平和时 此时我们算法接受新解更新的概率降低 首先物体刚开始处于非晶体状态 左图 我们将固体加温至充分高 固体
  • sync/atomic 库使用小结

    sync atomic 库提供了原子操作的支持 原子操作直接有底层CPU硬件支持 因而一般要比基于操作系统API的锁方式效率高些 本文对 sync atomic 中的基本操作进行一个简单的介绍 原子增值 用于对变量值进行原子增操作 并返回增
  • 聊天机器人和 Rasa 2.0 的新增功能

    目录 聊天机器人和 Rasa 2 0 的新增功能 文件夹和文件层次结构 配置 config yml Pipeline Policies Importers Domain domain yml Training Data Format NLU
  • 码点与代码单元

    码点与代码单元 码点 码点是指与一个编码表中的某个字符对应的代码值 在Unicode标准中 码点采用16进制书写 并加上U 例如U 0041就是拉丁字母A的码点 代码单元 UTF 16编码采用不同长度的编码表示所有Unicode码点 在基本
  • “12306”是如何支撑百万QPS的?

    12306抢票 极限并发带来的思考 每到节假日期间 一二线城市返乡 外出游玩的人们几乎都面临着一个问题 抢火车票 虽然现在大多数情况下都能订到票 但是放票瞬间即无票的场景 相信大家都深有体会 尤其是春节期间 大家不仅使用12306 还会考虑
  • Linux中的五种I/O模型

    概念说明 用户空间和内核空间 现在操作系统都是采用虚拟存储器 那么对32位操作系统而言 它的寻址空间 虚拟存储空间 为4G 2的32次方 操作系统的核心是内核 独立于普通的应用程序 可以访问受保护的内存空间 也有访问底层硬件设备的所有权限
  • OpenCV中对Mat矩阵加、减、乘、除、转置等操作的总结

    1 矩阵加 1 使用重载的 运算符 矩阵的加法是指两个矩阵对于位置的数值相加 使用OpenCv重载的 运算符 假设两个矩阵都为uchar类型 例如 Mat src1 Mat
  • 1.3 DLT645

    一 简介 目前市面的大部分的电表 通信都是遵循该协议 因为物理层使用RS 485 故为半双工通信 主站指终端设备 从站指多功能电能表 数据链路层 默认波特率2400 偶校验 8bit数据 1bit停止位 先传低位 后传高位 D0是字节最低有
  • uiautomator2学习5——一个简单的例子

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 uiautomator2学习5 一个简单的例子 写了个简单的例子 就是打开淘宝搜索钥匙扣的一个简单的代码 如下 import uiautomator2 as u2 d u2
  • Spring框架中IOC容器和Bean的配置

    一 IOC和DI的解释 1 IOC Inversion of Control 反转控制 在应用程序中的组件需要获取资源时 传统的方式是组件主动的从容器中获取所需要的资源 在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式 增加
  • Java基础——Map集合遍历方式

    1 方式一 键找值 先获取Map集合的全部键的Set集合 遍历键的Set集合 然后通过键提取对应值 涉及API 方法名称 说明 Set
  • 【导入file文件转数组】input -> type=‘file‘ -> list

    组件 admin文件 引用xlsx js import HandleImportFile from common xlsx js
  • 读书笔记_《Linux高性能服务器编程》_第 5 章:网络编程基础API

    第 5 章 Linux网络编程基础API 知识要点 socket 地址 API socket 基础 API 网络信息 API 1 socket 地址API 主机字节序和网络字节序 CPU 32位 的累加器一次至少可以装载 4 字节 即一个整
  • C# 常用复习

    Char类型 char a a char b 8 char c L char d char e l char f IsLetter 判断是否是字母 Console WriteLine 判断a是否是字母 Char IsLetter a IsD
  • getaddrinfo简单应用——取得IP地址

    转自 http biancheng dnbcw info linux 265956 html 一个域名可能对应好几个ip地址 a out www baidu com 115 239 210 27 115 239 211 112 getadd
  • 深度学习: Epoch、batchsize、iterations 是什么?

    Epoch 英文 时代 阶段 一波 一轮 一个epoch 表示 所有的数据送入网络中 完成了一次前向计算 反向传播的过程 由于一个epoch 常常太大 分成 几个小的 baches 将所有数据迭代训练一次是不够的 需要反复多次才能拟合 收敛
  • String数组中扩容与填加元素

    String deepCode1 350000 350100 350102 String split deepCode1 split System out println String数组原来的长度为 split length 追加扩容 w
  • vue高德地图的实现 根据经纬度回显地理位

    效果图 1 首先 下载vue amap 插件 2 在main js中引入 import VueAMap from vue amap Vue use VueAMap VueAMap initAMapApiLoader key 你自己的key
  • 深度探索c++对象模型之template中的名称决议方式

    我们应该能够区分以下两种意义 一个是c standard标准中的 scope of the template definition 模板定义域 另一个是c standard标准中的 scope of the template instant
  • SpringMvc

    简述 基于Java实现Mvc模型的轻量级web框架 配置案例过程 导入maven