Eclipese下Maven+Jersey+Tomcat入门案例

新建maven web项目(环境:Windows 10,eclipse Mars.2 Release (4.5.2),jdk1.8.0_131(64-Bit),apache-maven-3.5.0,apache-tomcat-8.0.36)

项目结构如图
需要先在新建的Maven工程的src/main下新建取名java的文件夹,然后在此文件夹下新建包。
注:新建包及类均是在src下进行,而不是在Java Resources下。

配置maven pom.xml

<!-- 配置jersey所需dependency -->

    <dependency>  
      <groupId>org.glassfish.jersey.containers</groupId>  
      <artifactId>jersey-container-servlet</artifactId>  
      <version>2.17</version>  
    </dependency> 

    <dependency>  
      <groupId>org.glassfish.jersey.core</groupId>  
      <artifactId>jersey-client</artifactId>  
      <version>2.17</version>  
    </dependency>  

    <dependency>  
      <groupId>org.glassfish.jersey.media</groupId>  
      <artifactId>jersey-media-json-jackson</artifactId>   
      <version>2.17</version>  
    </dependency>

配置web.xml


            <!-- 配置servlet -->
  <servlet>  
      <servlet-name>jersey-rest</servlet-name>
            <!-- servlet-class建议使用org.glassfish --> 
      <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>  
     <!--  1、load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
           2、它的值必须是一个整数,表示servlet应该被载入的顺序
           3、当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
           4、当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
           5、正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
           6、当值相同时,容器就会自己选择顺序来加载。
           所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间 -->
      <load-on-startup>1</load-on-startup> 

  </servlet>  
  <servlet-mapping>  
      <servlet-name>jersey-rest</servlet-name>  

      <!-- 基本使用/rest/*,去掉"/rest"会报错 -->
      <url-pattern>/rest/*</url-pattern>  
  </servlet-mapping> 

新建JSP页面,创建Form表单

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello Jersey</title>
</head>
<body>

<!-- 创建表单,设置action跳转的资源路径,指定表单提交为get -->

<form action="/JerseyUser/rest/demo/user" method="get">
    id:<input type="text" id="id" name="id"/><br>
    name:<input type="text" id="name" name="name"/><br>
    <input type="submit" value="submit"/>
</form>
</body>
</html>

创建User实体类

package com.test.entity;

public class User{
    /*创建User Bean并添加getter,setter方法,有无序列化都可*/
private int id;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
private String name;
}

创建rest接口,访问URL资源

package com.test.usertest;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.test.entity.User;

@Path("demo")
public class HelloJersey {

    /*返回一个简单的hello Jersey字符串*/

    /*通过指定路径,访问请求的资源*/
    @GET
    /*指定返回给浏览器的Mime类型*/
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello(){
        return "hello Jersey";
    }


    /*返回一个用JSON封装的User对象*/
    @GET

    /*Get请求的路径*/
    @Path("/user")

    /*指定接收的Mime类型*/
    @Consumes("application/x-www-form-urlencoded")

    /*指定返回给浏览器的Mime类型为JSON*/
    @Produces(MediaType.APPLICATION_JSON)
    public User toUser(

            /*获取URL参数*/
            @QueryParam("id") int id,
            @QueryParam("name") String name
            ){
        User user = new User();
        if(id==1&&name.equals("zaza")){
            user.setId(id);
            user.setName(name);
            return user;
        }else{
            user.setId(0);
            user.setName(null);
            return user;
        }
    }
}

另外,访问Form通过POST方法的资源

@POST
    @Consumes("application/x-www-form-urlencoded")
    @Produces(MediaType.APPLICATION_JSON)
    public User zaza(
            @FormParam("id") int id,
            @FormParam("name") String name){
        //具体实现这里就不给出了
    }

到这里代码部分基本上写完了,下面是本人在项目中时遇到的一些问题及解决方案

新建maven工程时,webapp下会在index.jsp中报错
解决办法:删掉默认的index.jsp,自己新建一个index.jsp

此时,可能会遇到index.jsp报错,如图:

index.jsp报错

解决办法:右键项目,Build Path–>Configure Build Path,在Libraries下单击Add Library–>Server Runtime选择对应的Tomcat,然后Apply–>OK

以上就是项目的全部内容,因为这是本人第一次写Blog,有误之处请指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值