java学习笔记-springmvc使用遇到的一些问题

2 篇文章 0 订阅
本文探讨了在使用SpringMVC时,如何处理路径问题以确保正确跳转和避免404错误。重点介绍了form action路径的处理,以及如何在已有@RequestMapping注解的控制器中进行有效的URL重定向,包括使用相对路径和绝对路径的区别。
摘要由CSDN通过智能技术生成

Springmvc使用遇到的一些问题

路径

在看课程的时候想实现一个比较好玩的功能,就是能在几个页面之间来回跳转
这需要在jsp表单提交后在代码里返回对应的视图
涉及到一些路径的问题
如果请求的时候@Controller注解下还加了@RequestMapping注解的话,在jsp里还想返回到对应的路径时,form action里的路径在开头一定不能加/
这个在视频里他说是没有影响的,其实是不对的,我试过加了和不加的情况,发现加了/的话,在经过第一次请求回来之后再点击提交就访问不到路径了
在网址上显示的路径也发现了他只显示了从/开始的路径,前面的项目的路径被吃掉了
所以不能加/,不加的话在请求的时候他就会默认你这是相对路径,在你的路径前自己帮你加上了项目的路径再去访问
所以总结就是不加/访问的时候就是访问相对路径,这个可以避免项目路径被吃掉导致在跳转页面的时候访问失败出现404
不过感觉得看项目需求,估计也没有几个页面来回跳的需求吧…

在提一嘴,有关在后台重定向的问题
这个和上面讲的一样,如果你在类的一开始就用了@RequestMapping注解的话,意味着实际上你发送过来的请求前面还有一个父级,所以如果是这个时候你直接redirect:webapp里的jsp网页的话也是无法访问成功的,去看他实际的路径你就知道他变成了相对路径,也就是在你的这个路径签名他自己加了一个你一开始写的类上的那个父级,所以如果你在类上已经加了@RequestMapping的话,在重定向的时候就要先返回到上一级才能到webapp,也即是你的return值应该是redirect:…/xxx.jsp
…/的意思就是返回上一级
如果在路径的一开始就加上/的话,可以理解成初始化了当前的路径,也即是写了/的话意味着在请求的时候默认是在项目名目录后再加上你写的路径
一时间可能难以理解,多试几次就知道了哈哈哈
挫折从学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringMVC 中,我们可以通过 ResponseBody 注解返回音频流,具体步骤如下: 1. 在 Controller 中定义一个返回类型为 ResponseEntity<byte[]> 的方法,该方法需要使用 @ResponseBody 注解标注。 2. 在方法中获取音频文件的字节数组,并将其放入 ResponseEntity 对象中返回。 3. 在 ResponseEntity 对象中设置 Content-Type、Content-Disposition 等响应头,以便浏览器正确解析音频流并进行播放。 示例代码如下: ```java @RequestMapping("/audio") @ResponseBody public ResponseEntity<byte[]> getAudio() throws IOException { // 读取音频文件字节数组 InputStream in = getClass().getResourceAsStream("/static/audio/sample.mp3"); byte[] audioBytes = IOUtils.toByteArray(in); // 设置响应头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.parseMediaType("audio/mpeg")); headers.setContentDispositionFormData("attachment", "sample.mp3"); // 返回音频流 return new ResponseEntity<>(audioBytes, headers, HttpStatus.OK); } ``` 上述代码中,我们将音频文件 sample.mp3 放在了项目的 /static/audio 目录下。在方法中,我们使用 IOUtils.toByteArray() 方法将音频文件转换为字节数组,并将其放入 ResponseEntity 对象中返回。在设置响应头时,我们使用 MediaType.parseMediaType() 方法设置 Content-Type,使用 setContentDispositionFormData() 方法设置 Content-Disposition。最后,我们通过 new ResponseEntity<>(audioBytes, headers, HttpStatus.OK) 创建 ResponseEntity 对象并返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值