SpringMVC跨服务器上传文件出现returned a response status of 400 OR 405 OR 404 OR 409

本文提供了针对HTTP错误400、405、404和409的解决方法。当遇到400错误时,尝试将文件名改为英文。对于405错误,需在Tomcat的web.xml中设置servlet的readonly参数为false。解决404错误,需在IDEA中配置文件存储路径,并更新控制器代码以指向正确路径。而409错误通常由于路径不正确,需要在目标目录下创建与上传路径匹配的文件夹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误400解决方法

排除url和参数错误,这里只说在你确认代码无误的情况下报错的情况:
不管上传的是什么类型的文件,文件名改成英文名。

错误405解决方法

tomcat服务器默认是不可写操作,只允许读,所以在Tomcat 的配置文件conf\web.xml文件中的servlet标签内加入readonly:false
在这里插入图片描述

	  <init-param>
          <param-name>readonly</param-name>
          <param-value>false</param-value>
      </init-param>

错误404解决方法

使用idea集成工具进行配置
在这里插入图片描述
选择要将图片保存的本地位置
在这里插入图片描述
在这里插入图片描述
然后将控制器的代码改成下面这样:

		// 定义上传文件服务器路径
        String path = "http://localhost:9090/uploads";
        //....
        // 和图片服务器进行连接
        WebResource webResource = client.resource(path+"/"+filename);

错误409解决方法

409路径错误,即当前访问的路径下没有相关文件。
解决办法:在文件存储服务器中的target/项目名的路径下,新建一个和你上传服务器路径一致的文件,我这里是uploads文件
在这里插入图片描述

在这里插入图片描述

### SpringMVC 中 JSP 页面跳转的实现方式 在 SpringMVC 框架中,可以通过多种方式实现 JSP 页面之间的跳转。以下是几种常见的实现方式及其对应的代码示例。 #### 方法一:使用 `ModelAndView` 对象 通过返回一个 `ModelAndView` 对象来指定要跳转的目标视图名称以及传递的数据[^1]。 ```java @Controller public class ExampleController { @RequestMapping("/example1") public ModelAndView exampleMethod() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "This is a message from the controller."); modelAndView.setViewName("targetPage"); // targetPage 是目标 JSP 文件的名字(不带 .jsp 后缀) return modelAndView; } } ``` --- #### 方法二:返回字符串形式的视图名称 可以直接返回一个表示视图名称的字符串,SpringMVC 会自动将其交给视图解析器处理[^5]。 ```java @Controller public class ExampleController { @RequestMapping("/example2") public String exampleMethod(Model model) { model.addAttribute("message", "This is another message from the controller."); return "targetPage"; // 返回值为目标 JSP 的名字(不带 .jsp 后缀),由视图解析器完成最终定位 } } ``` --- #### 方法三:请求转发 如果希望在同一服务器内部进行页面跳转而不改变 URL 地址,则可以使用请求转发的方式[^3]。 ```java @Controller public class ForwardController { @RequestMapping("/forwardExample") public void forwardExample(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("message", "Forwarded message"); request.getRequestDispatcher("/WEB-INF/views/targetPage.jsp").forward(request, response); } } ``` > **注意**:这里 `/WEB-INF/views/targetPage.jsp` 表示具体的物理路径,通常位于项目的 Web 应用目录下。 --- #### 方法四:重定向到另一个 URL 或页面 当需要客户端重新发起一次新的 HTTP 请求时,可以选择重定向的方式[^4]。 ```java @Controller public class RedirectController { @RequestMapping("/redirectExample") public String redirectExample() { return "redirect:/anotherPage.jsp"; // 将用户重定向至 /anotherPage.jsp 页面 } @RequestMapping("/redirectExternal") public String redirectToExternalSite() { return "redirect:http://www.example.com"; // 可以重定向到外部站点 } } ``` --- #### 方法五:返回 JSON 数据而非页面跳转 某些情况下可能不需要直接跳转到某个页面,而是向前端发送 JSON 格式的响应数据。 ```java @RestController public class JsonController { @RequestMapping(value = "/jsonExample", produces = "application/json;charset=UTF-8") public Map<String, Object> jsonExample() { Map<String, Object> resultMap = new HashMap<>(); resultMap.put("status", "success"); resultMap.put("data", "Some data to be returned as JSON."); return resultMap; // 自动转换为 JSON 并返回给前端 } } ``` --- ### 总结 以上介绍了五种不同的页面跳转或数据返回机制,在实际开发过程中可以根据具体需求选择合适的方式来实现功能逻辑。无论是基于 `ModelAndView`、字符串返回值还是其他高级特性,都需要确保配置好视图解析器并合理设计控制器层接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值