org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupportedWARNING: Request met

环境:tomcat8
在刚开始做spring mvc的期末项目时, 出现以下错误

org.springframework.web.servlet.PageNotFound
handleHttpRequestMethodNotSupportedWARNING: Request method ‘POST’ not supported

在前台, 我使用form的post方式, 发送form的data去后台的controller, 经过service处理后, 想要进行正确和错误分别转发到不同的URL的做法.

后台:

@RequestMapping(value = "/login", method = RequestMethod.POST)
    @Override
    public String receiveRequest(HttpServletRequest request) {
    ....
    return "URL";
    }

URL的不同对应着不同的结果:

  • page.jsp 成功 地址栏变化
  • page.html 失败
  • forward:page.html 失败
  • redirect:page.html 成功 地址栏变化
  • page.html 用get的方式 成功 地址栏不变化

    从上面的四个结果, 我猜测:

  • tomcat不支持html格式, 而且forward和redirect是tomcat内部的指令名字

  • 多视图解析的配置配错了

http://stackoverflow.com/questions/4584410/redirect-in-spring-mvc

Also note that redirect: and forward: prefixes are handled by UrlBasedViewResolver, so you need to have at least one subclass of UrlBasedViewResolver among your view resolvers, such as InternalResourceViewResolver.

大概意思是说:
InternalResourceViewResolver继承了UrlBasedViewResolver

  • UrlBasedViewResolver有处理redirect: and forward:两个功能
  • supports InternalResourceView (i.e. Servlets and JSPs) and subclasses such as JstlView.

    然而我从其他资料里查到 InternalResourceViewResolver支持HTML格式


redirect和forward区别
redirect , 重定向, 地址栏变化, html文件可以正确地获取其文件
forward 转发,不能正确获得文件

直接url和forward:的结果很相似, 然而对于/page/index.html这个地址的处理, forward是这样的”forward:/page/index.html” ,使用渲染器的是”index.html”, 猜测: 其实直接写URL的方式是通过forward的方式,转发到渲染器,渲染器再进行处理, 然后出来.

报错报的是405 error

猜测是文件不可以访问
后来我再使用get模式来测试, 发现, 是可以get是可以访问, 也就是问题处于:我用post提交password和username, forward的时候也是同样是post方式, 然而post方式在tomcat似乎不可以access 静态文件.
考虑到post被认定是修改网页的功能, 可以因此被禁止使用…

这可能是tomcat不support吧..
也可能是spring mvc设置的< resource >的配置

如果有人知道真相~ 请务必告诉我!!


番外:
https://spring.io/guides/gs/serving-web-content/官网的文档上没xml配置文件, 似乎是直接用spring boot自动操作的…T_T

### 回答1: org.springframework.web.servlet.pagenotfoundSpring框架的一个异常类,表示请求的页面或资源不存在。当用户访问一个不存在的页面或资源时,服务器会抛出这个异常。开发者可以通过捕获这个异常并进行相应的处理,例如返回一个自定义的错误页面或者重定向到其他页面。 ### 回答2: "org.springframework.web.servlet.pagenotfound"是Spring Framework的一个异常类。它代表了在请求Web应用程序时,服务器没能找到所请求的资源的错误。通常这是因为所请求的资源不存在或URL路径设置不正确而导致的。 这个异常是由Spring的DispatcherServlet抛出的,这个servlet负责将请求分派给相应的Controller处理请求。如果在处理过程,找不到所请求的资源,就会抛出该异常。 当一个客户端发送一个请求到服务器时,DispatcherServlet首先会尝试将其与映射到的URL模式进行匹配。如果没有与请求匹配的URL,则它会抛出"org.springframework.web.servlet.pagenotfound"异常。这种情况下,可以通过设置一个适当的自定义错误页面来向用户提供信息,例如:“很抱歉,您请求的页面不存在”。 要解决这个异常,可以检查请求的URL路径是否正确或资源是否存在。如果URL路径不存在,那么需要调整URL路径,并确保它可以正确地映射到相应的Controller。如果资源不存在,那么需要确认它是否已正确地部署到服务器上,并且是否具有正确的访问权限。 总之,“org.springframework.web.servlet.pagenotfound”异常通常意味着请求的资源不存在或URL路径不正确。为了避免这个问题,开发人员应该仔细检查请求的URL路径及其映射,并确保所请求的资源已正确部署到服务器上。 ### 回答3: org.springframework.web.servlet.pagenotfoundSpring MVC框架的一个异常,表示无法找到所请求的页面或资源。该异常通常出现在用户请求一个不存在的URL时,或者请求一个未授权的资源。 当该异常发生时,Spring MVC会向用户返回一个404错误页面。通常情况下,该异常是由DispatcherServlet负责处理的,该ServletSpring MVC框架的核心组件之一,负责接收用户请求并将请求分发给相应的Controller进行处理。 在处理该异常时,可以通过自定义异常处理方法来更好地控制异常信息的输出。例如,可以创建一个实现了HandlerExceptionResolver接口的异常处理器,该处理器可以捕获org.springframework.web.servlet.pagenotfound异常并向用户返回自定义的错误页面或信息。 除了可以通过自定义异常处理器来处理该异常外,还可以在web.xml文件配置错误页面来处理该异常。通过配置错误页面,当用户请求一个不存在的资源时,服务器会向用户返回预先设定的错误页面,而不是默认的404页面。 总之,org.springframework.web.servlet.pagenotfound异常是Spring MVC框架的一种常见异常,通常表示用户请求的页面或资源不存在或未授权。通过自定义异常处理器或配置错误页面,可以更好地处理该异常,使用户获得更好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值