Eclipse+JDK17+Tomcat10搭建Jersey RESTful或不用tomcat直接用Main启动Jersey RESTful服务,不使用maven手动导包全教程!

为何要做?

Hello!我又来了,最近公司需要我研究下用java的jerseyRestFul,并搭建一个环境用于测试。于是我打开了百度进行搜索,发现网上都是一些很旧的版本教程了,还是停留在JDK8甚至更低的版本中。那既然是研究新项目,那我就打算改头换面用一份较新的版本来做。

准备

https://jdk.java.net/archive/
下载一份较新的JDK版本,现在最新的openJDK已经发展到了22但是太新我不敢用啊,出了问题也搜不到答案不是,所以选择了主流的JDK17。

https://tomcat.p2hp.com/
下载tomcat10。
将以上工具从官网下载好之后进行安装,这些网上都有安装教程我就不做介绍了,简单的一米!

开始

在eclipse建立动态web项目,然后就要开始在lib包里注入jersey所需的依赖了,我还配置了logback作为我得日志工具,我将贴出所有依赖名单,直接看名单!!!
依赖包:
在这里插入图片描述

把我文章顶部的资源包下载再来解压无脑导入即可(除电脑端可能看不到,可以访问链接:https://download.csdn.net/download/junxkkoo/89123598?spm=1001.2101.3001.9500),或者你们根据jar自行去maven官网下载。

接下来就是第一个demo的编写啦,创建一个类:
这个post方法里面的代码随便你写,获取参数和返回内容都有好几种写法,可以在百度里面搜jersey的教程,我这里就写了测试需要的,你们自行实现自己的。
代码:

@POST
	@Path("Server")
//	是否返回json
//	@Produces(MediaType.APPLICATION_JSON)
	public Response getToken(String params) {
		String resp = "";
		try {
			if (params == null || params == "") {
				return Response.status(Response.Status.BAD_REQUEST).entity("缺少必要参数!").type(MediaType.TEXT_PLAIN)
						.build();
			} else {
				logger.info("接口到请求参数: " + params);
				String formatDate = sdf.format(new Date());
//				JSONObject jsonObject = new JSONObject(params);
//				String token = (String) jsonObject.get("token");
				resp = "{\"data\":\"{\\\"Result\\\":-1,\\\"ErrorNo\\\":0,\\\"Command\\\":\\\"BF\\\",\\\"Buffer\\\":\\\"\\\",\\\"EmployeeID\\\":\\\"1006\\\","
						+ "\\\"ServerDateTime\\\":\\\""+ formatDate + "\\\"}\",\"errcode\":\"0\",\"errmsg\":\"fail\"}";
			}
		} catch (Exception e) {
			logger.error("接口访问异常: " + e.getMessage());
		}
		logger.info("接口返回信息: " + resp);
		return Response.ok(resp).build();
	}

当然你也可以写一个很简单的get访问:

	@GET
	@Path("getHello")
	@Produces(MediaType.APPLICATION_JSON)
	public String getHello() {
//        logger.info("【getHello】接口访问成功!");
		return "成功了!";
	}

然后配置web.xml,打开往里贴!

<servlet>
		<servlet-name>JerseyServletContainer</servlet-name>
		<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
		<init-param>
			<!-- 官方扫描 -->
			<!-- <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.mds.servlet</param-value> -->
			<!-- 自定义扫描 -->
			<param-name>jakarta.ws.rs.Application</param-name>
			<param-value>com.mds.servlet.Application</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>JerseyServletContainer</servlet-name>
		<url-pattern>/mds/*</url-pattern>
	</servlet-mapping>

官方扫描就可以了,如果想跟我一样是自定义扫描(我就是为了好奇试试能不能用嘿嘿),需要再写一个类哦:

public class Application extends ResourceConfig{
	public Application() {
		//位置指定包或者指定类
		packages("com.mds.servlet");
//		register(JerseyServlet.class);
	}

}

这个类里面把之前写的接口程序所在的包注册进去。这样就能扫描到了。
接下来就是启动tomcat,打开postman进行测试:

GET访问地址:http://172.16.133.4:8080/mdsJerseyRestful/mds/rest/getHello/
在这里插入图片描述

POST访问地址:http://172.16.133.4:8080/mdsJerseyRestful/mds/rest/Server
在这里插入图片描述

怎么样?简单吗!这就实现啦,然后你们就可以自由发挥了。对了!!!还有一种启动方式哦,不需要tomcat的方式,有兴趣的继续往下看!

如果不用tomcat启动那我们想想 是不是可以写一个main来启动呢??
代码:

public class Main {
	private static Logger logger = LoggerFactory.getLogger(Main.class);
	public static void main(String[] args) {
		try {
			 Properties prop = new Properties();
			 prop.load(new FileInputStream("config.properties"));
			 String ip = prop.getProperty("IP");
			 String prot = prop.getProperty("PROT");
			 logger.info("IP: " + ip);
			 logger.info("PROT: " + prot);
			// 配置资源
			Application application = new Application();
			// 创建服务器
			HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://"+ip+":"+prot+"/"),
					application);
			// 启动服务器
			server.start();
			logger.info("服务启动成功!!!");
			// 等待输入
			// System.in.read();
			// 停止服务器
//	        server.shutdown();
		} catch (Exception e) {
			logger.error("服务启动异常:" + e.getMessage());
		}
	}
}

在这里插入图片描述

因为我的ip和端口是读取的外部文件,你们可以在这里直接写死。
然后这里启动main函数,注意现在的访问路径可不一样了,将没有项目名和web.xml的地址匹配。直接就是http://IP:端口/类地址/方法地址

GET的访问地址:http://172.16.133.4:8080/rest/getHello
在这里插入图片描述

POST的访问地址:http://172.16.133.4:8080/rest/Server
在这里插入图片描述

以上就是jersery的搭建啦,你们学会了吗?

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值