Tomcat默认不支持restful风格的put与delete请求

方法一

tomcat
默认就是不允许PUT和DELETE的
如何配置Tomcat支持HTTP Delete和Put 方法
在tomcat web.xml文件中配置org.apache.catalina.servlets.DefaultServlet的

readonly
false
readonly参数默认是true,即不允许delete和put操作,所以通过XMLHttpRequest对象的put或者delete方法访问就会报告http 403错误。为REST服务起见,应该设置该属性为false。

方法二

HiddenHttpMethodFilter

在浏览器端的 Form 表单中只支持 GET、POST 请求,不支持 PUT、DELETE 请求。Spring 3.0增加了一个过滤器可以将 POST 请求转化为 PUT、DELETE 请求。

在 web.xnl 文件中配置 HiddenHttpMethodFilter 过滤器。

<filter>

<filter-name>HiddenHttpMethodFilter</filter-name>

<filter-class>

org.springframework.web.filter.HiddenHttpMethodFilterorg.springframework.web.filter.HiddenHttpMethodFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>HiddenHttpMethodFilter</filter-name>

<url-pattern>/*</url-pattern

</filter-mapping>

因为需要将 POST 请求转化为 PUT 和 DELETE 请求,所以在测试界面需要创建一个 form 表单,且提交方法设为 post 。因为 HiddenHttpMethodFilter 过滤器的原理是获取一个 name 为 _method 的属性,获取其值,根据其值决定转化为 PUT 还是 DELETE 请求,所以需要在表单中设置一个 name 值为 _method 的隐藏域元素。如下:

在Controller 类中添加一个方法,用户响应 PUT 隐射,方法设置为

要使Tomcat适配HTTPS并发送PUT请求,您可以按照以下步骤操作: 1. 生成SSL证书:首先,您需要生成一个SSL证书并配置在Tomcat上。您可以使用工具如OpenSSL来生成自签名证书或购买证书。 2. 配置Tomcat服务器:在Tomcat的配置文件中,找到并编辑`server.xml`文件。在该文件中找到 `<Connector>` 元素,并进行以下配置: ```xml <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="path/to/your/keystore/file" keystorePass="your_keystore_password" /> ``` 在上述配置中,您需要将 `keystoreFile` 的值设置为您生成的SSL证书的路径,将 `keystorePass` 的值设置为您在生成证书时设置的密码。 3. 配置应用程序:如果您只想为特定应用程序启用HTTPS,可以在应用程序的配置文件中进行配置。找到并编辑应用程序的 `web.xml` 文件,并添加以下安全约束: ```xml <security-constraint> <web-resource-collection> <web-resource-name>Secure Resources</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ``` 上述配置将确保所有URL模式都通过HTTPS进行访问。 4. 发送PUT请求:要发送PUT请求,您可以使用Java的HttpClient库。下面是一个示例代码: ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpHeaders; import java.net.http.HttpMethod; import java.nio.file.Files; import java.nio.file.Path; public class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://your-domain.com/your-endpoint")) .header("Content-Type", "application/json") .method("PUT", HttpRequest.BodyPublishers.ofFile(Path.of("path/to/your/file"))) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } } ``` 请确保将 `https://your-domain.com/your-endpoint` 替换为目标URL,并将 `path/to/your/file` 替换为要发送的文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值