创建RESTEasy helloworld工程

官网上的工程都是通过maven建立的,本文没有使用maven,所以搭建helloworld工程分如下4步:

1)建立web工程,导入RESTEasy依赖jar

这步比较简单,就不阐述了

2)配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <!-- 自动检索WEB-INF/lib下的jar以及@Provider标记的类和JAX-RS资源类(@Path,  @GET,  @POST等等),并注册 -->
	<context-param>
		<param-name>resteasy.scan</param-name>
		<param-value>true</param-value>
	</context-param>
	<!-- 不加监听器就会造成Tomcat无法解析html -->
	<listener>
      <listener-class>
         org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
      </listener-class>
   </listener>
	
	<servlet>
		<servlet-name>resteasy-servlet</servlet-name>
		<servlet-class>
			org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
		</servlet-class>
	</servlet>
 
	<servlet-mapping>
		<servlet-name>resteasy-servlet</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
	
	<context-param>
		<param-name>resteasy.servlet.mapping.prefix</param-name>
		<param-value>/rest</param-value>
	
	</context-param>
	
</web-app>

注意:如果不加监听器,Tomcat在解析HTML时会报404错误,这个问题折磨了我好长时间。

关于resteasy.servlet.mapping.prefix,官方文档上说如果servlet-mapping的url-pattern不为"/*"就必须指明,就像我上面给出的配置一样。其实,不配置前缀也是可以的,但是服务类的路径必须以"/rest"开头,如下面的@Path("/hello")应改写成@Path("/rest/hello")。当然还是建议大家在配置文件中指明前缀。

3)编写服务类(姑且称为服务类)

import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class Hello {

	@POST
	@GET
	@PUT
	@Path("/world")
	@Produces(MediaType.TEXT_PLAIN)
	public String test(@FormParam("a") String[] a, @QueryParam("a") String[] a2) {
		/**
		 * POST请求方式传递的参数被@FormParam 捕获到
		 * GET PUT DELETE(尽管没有添加注解)传递的参数则全部被@QueryParam 捕获到
		 */
		return print(a) + "----" + print(a2);
	}

	private String print(String[] a) {
		if (a == null)
			return "";
		else {
			StringBuffer sb = new StringBuffer();
			for (String b : a) {
				sb.append(b + " ");
			}
			return sb.toString();
		}
	}
}
这里我在一个test()方法上面加了多种请求方式@GET,@PUT,@POST,仅仅是为了好玩,真正在用的时候还是不建议这样使用。

4)编写client调用服务

<form action="./rest/hello/world" method="DELETE">
		<input type="hidden" name="a" value='{b:"hello wolrd"}' />
		<input type="hidden" name="a" value='{b:"hello pig"}' />
		<input type="submit" value="OK" />
	</form>
action的路径我使用的是相对路径,这样是可以访问到的,使用full path:http://localhost:8080/projectName/rest/hello/world当然也可以

5)效果图

运行结果图如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值