IntelliJ上创建Tomcat + Jersey 工程

来源:互联网 发布:lol怎么刷金币软件 编辑:程序博客网 时间:2024/06/06 01:52

REST以其简洁的模式被越来越多的web服务采用和实现,并出现了很多框架,Jersey是其中优秀代表。
Jersey扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,但已经是一个产品级的 RESTful service 和 client 框架。
需要做一个RESTful架构的web服务,结构为IntelliJ + Tomcat + Maven + Jersey。(注:这里的Intellij需要用 Ultimate版本)

1、新建项目

使用Intellij新建工程,选择Java Enterprise=>RESTful Web Service,下边的Libraries选择Setup Library Later,方便后边我们用Maven管理Jersey包。如图:

新建项目

2、添加框架支持

这里我们要添加web applicationMaven的支持。在项目名称上右键=》Add Frameworks Support,选中Web ApplicationMaven,前者会添加web文件夹,里边包括web-infweb.xml,后者会添加pom.xml
此时项目目录看着应该是这个样子的,在pom.xml中修改自己的groupID
添加框架支持

3、配置Tomcat服务

Run=》Run...=》Edit Configurations对Tomcat进行配置,默认应该已经有一个,没有的话自己添加。
如果没有特殊需求的话,这里只需要改一个warning,根据下方提示Fix部署的问题,可以保持默认直接apply,然后运行Tomcat就可以了。
Tomcat配置

此时打开的http://localhost:8080/页面是空的,编辑一下index.jsp,里边随便添点东西,就可以显示出来了。

3、添加REST环境支持

修改pom.xml文件,添加jersey的依赖。找了下,新版的release是2.23。可以在这里找,可以直接复制粘贴。

<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.containers/jersey-container-servlet --><dependency>    <groupId>org.glassfish.jersey.containers</groupId>    <artifactId>jersey-container-servlet</artifactId>    <version>2.23</version></dependency>

完成后会自动下载对应的依赖,如果没有开启自动导入,用View=》Tool Windows=》Maven Projects打开Maven试图,compile一下就行了。

接下来需要把项目依赖的lib发布到WEB-INFO/lib下,选择File=》Project Structure...,然后按照下图所示操作,全选包,Put into /WEB-INF/lib,然后apply即可。
这里写图片描述

4、添加测试

(1)在src/main/java下新建一个Java文件,这里放在com.test包里。

@Path("hello")public class HelloJsersy {    @GET    @Produces("text/plain")    public String getString(){        return "hello jersey";    }    @GET    @Path("{username}")    @Produces("text/plain")    public String getParam(@PathParam("username")String username){        return "hello  "+username;    }}

第一个函数getString()没有再指定@Path,直接响应hello,访问页面时将返回字符串hello jersey;第二个函数getParam()指定了@Path,响应hello/{username},其中{username}为地址传过来的参数。例如使用hello/tom访问就返回字符串hello tom

(2)修改web.xml文件
这里是添加jersey的处理,添加以下内容:

<servlet>        <servlet-name>JAX-RS Servlet</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.test</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>JAX-RS Servlet</servlet-name>        <url-pattern>/test/*</url-pattern>    </servlet-mapping>

这里的<param-value>com.test</param-value>就是我们最终提供RESTful服务代码所在的包名。

OK,现在重启一下Tomcat,访问http://localhost:8080/test/hello就可以看到hello jersey

中文乱码处理

以上虽然搭建好环境,但是用浏览器访问的时候中文显示乱码。
(1)修改Tomcat默认编码
修改Tomcat目录下conf/server.xml文件

<Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>……<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

给其中的Connector添加上utf8编码URIEncoding="UTF-8",最后类似于:

<Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="UTF-8"/>……<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="UTF-8"/>

重启Tomcat,即可正常显示页面中的中文;
(2)为Jersey指定编码
这个也很简单,在@Produces里指定就好了,类似于:

@Produces("application/json;charset=utf8")

OK!

0 0
原创粉丝点击