java servlet not supported_java类继承HttpServlet类实现Servlet程序出现405错误:HTTP method POST is not supported b...

eed9d90096f1f92a42db2f99cb401c34.png

1adc46226f99b810df0257a083bd57f1.png

一、Servlet运行原理

比如,在浏览器地址栏输入http://ip:port/web01/hello,整个通信流程如下图所示:

1620

分步解释:

(1)浏览器依据ip,port建立与servlet容器(容器同时也是一个简单的web服务器)之间的连接。

(2)浏览器将请求数据打包(按照http协议,该数据包也称为请求数据包)。

(3)浏览器发送请求数据包给容器。

(4)容器收到请求数据包之后,解析该数据包

(5)将4中解析之后得到的数据封装到request对象上,同时,容器还要创建response对象。

(6)容器要依据请求资源路径("/web01/hello")找到servlet的配置,然后创建servlet对象。

(7)容器调用servlet对象的service方法。容器会将事先创建好的request,response作为参数传递给service方法。

( 8-10)在service方法里面,可以通过request对象获得请求参数,并进行相应的处理,处理结果会放到response对象里面。

(11-13)容器从response对象中取出处理结果,然后打包(按照http协议,该数据包称之为响应数据包)。再将响应数据包发送给浏览器。

(14-15)浏览器收到响应数据包之后,解析处理结果,然后生成相应的页面。

其实Java Web开发人员需要手动编写代码的部分主要在8-10,因为其他部分工作已被web服务器和开发工具完成。

二、常见异常及处理办法

(1)404

服务器依据请求资源路径找不到对应的资源。

<1>错误原因:

a. 请求地址写错了

b.不一致

<2>解决方式:

a. 依据http://ip:port/appname/servlet-url检查请求地址。

b. 检查web.xml文件。

(2)500

运行时出错。

<1>错误原因:

a. 配置文件类名写错了。

b. 没有继承HttpServlet。

c. 程序代码写错。

<2>解决方式:

a. 检查web.xml文件。servlet-class中有没有把类名写错(必须是完整类名)

b. 检查程序代码。

(3)405

方法异常。

<1>错误原因:

service方法不正确

<2>解决方式:

检查service方法(方法名、返回类型、参数类型、异常类型)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,你遇到的问题是HttpRequestMethodNotSupportedException: Request method 'POST' is not supported。这个错误通常发生在后端代码中,当前端以POST方法提交表单时,后端不支持该请求方法。要解决这个问题,你可以尝试以下几种方法: 1. 确保后端代码中的请求映射方法与前端提交的请求方法一致。在你提供的引用中,后端代码使用了@PostMapping注解来处理POST请求,因此你需要确保前端的请求方法也是POST。 2. 检查后端代码中的请求映射路径是否正确。在你提供的引用中,后端代码使用了@PostMapping("/add")来处理POST请求,你需要确保前端的请求路径与后端代码中的路径一致。 3. 检查后端代码中是否正确处理了POST请求。在你提供的引用中,后端代码的add方法接收一个Dishes对象,并返回一个boolean值。你需要确保该方法正确处理了前端提交的表单数据,并返回了正确的结果。 4. 检查后端代码中是否正确配置了请求方法支持。在你提供的引用中,后端代码使用了@PostMapping注解来处理POST请求。你需要确保后端代码中正确配置了对POST请求的支持。 以下是一个示例代码,演示了如何正确处理POST请求: ```java import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class DishesController { @PostMapping("/add") public boolean add(@RequestBody Dishes dishes) { // 处理表单数据 // 返回处理结果 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值