java中rest接口不支持put方法

这几日在做项目过程中遇到一个问题,系统中调用rest接口的put方法去做更新数据库操作时前台页面提示403 Forbidden,后台日志报Request method 'GET' not supported。纠结了很久终于解决,根源在于rest默认的是不支持put,delete等方法的,所以才会报GET不支持put方法,需要修改几步:

1.修改tomcat下conf/web.xml

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
//主要是这里,默认的readonly属性是true,即不支持put方法,改为false
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
这段代码若web.xml中已经存在就修改上面readonly节点属性即可,若没有就新加。

2.修改tomcat目录下conf/tomcat-users.xml,添加用户权限,同时调用接口时也需要加上同下的权限。
<?xml version='1.0' encoding='cp1252'?>
<tomcat-users>
<user name="admin" password="admin" roles="admin" />
</tomcat-users>
3.修改工程项目下的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<security-constraint>
<web-resource-collection>
<web-resource-name>Demo App</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Demo App</realm-name>
</login-config>

<security-role>
<description>Role for restricted resources</description>
<role-name>admin</role-name>
</security-role>
</web-app>
新加以上代码。
至此即可调用put方法。
posted @ 2016-07-29 10:58  少小帅  阅读(1637)  评论(0编辑  收藏  举报