Jersey基础知识学习过程记录(一)

news/2025/2/8 18:19:56

为什么80%的码农都做不了架构师?>>>   hot3.png

项目需要,做一个RESTful架构的web服务,结构为intellij+maven+jersey+tomact, 整体是混合着讲解的.

  1. 创建工程需要的资源如下:
  • IntelliJ 
  • Tomcat
  • Maven
  • JDK

 

首先在intellij新建工程,选择java Enterprise -> Web Application,如图:

20235748_H1ZE.png

自动生成的工程结构如下:

20235748_PI6i.png

让普通web服务先运行起来

  • 首先创建一个运行配置,位置如图20235748_apho.png
  • 在接下来的页面,添加一个Tomcat server,如图:20235748_QzF4.png
  • 命名你的配置,添加tomcat home,然后fix deploy问题,如图:20235748_pIt5.png
  • 修改index.jsp 在<body>中加入Hello REST字符串,然后运行
    会看到浏览器自动打开http://localhost:8080/api,并显示出你的Hello REST字符串

添加REST环境支持

  • 在工程根目录下创建pom.xml,然后加入代码如下:
  • <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"         
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    
      <modelVersion>4.0.0</modelVersion>    
      <groupId>com.waylau.rest.resources</groupId> 
      <artifactId>demo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <dependencies>
          <dependency>             
              <groupId>org.glassfish.jersey.containers</groupId>            
              <artifactId>jersey-container-servlet</artifactId>            
              <version>2.22.2</version>        
          </dependency>
      </dependencies>
    </project>
    

     

  • 右键pom.xml,在菜单中选择Add as Maven Project,然后你可以看到IntelliJ在帮我们下载依赖,完成后,工程窗口下就变成了下图的样子:20235748_UE69.png
  • 根据你上面填写的groupId来在src下创建目录om.waylau.rest.resources,并创建java类HelloResource内容如下:
  • package com.waylau.rest;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    @Path("/hello")
    public class HelloResource {
      // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String sayPlainTextHello() {
          return "Hello Jersey";
      }
      // This method is called if XML is request
      @GET
      @Produces(MediaType.TEXT_XML)
      public String sayXMLHello() {
          return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
      }
      // This method is called if HTML is request
      @GET
      @Produces(MediaType.TEXT_HTML)
      public String sayHtmlHello() {
          return "<html> " + "<title>" + "Hello Jersey" + "</title>"
                  + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
      }
    }
    

    修改web/WEB-INFO/web.xml内容如下:

  • <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
           version="3.1">
      <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.waylau.rest.resources</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>JAX-RS Servlet</servlet-name>
          <url-pattern>/api/*</url-pattern>
      </servlet-mapping>
    </web-app>
    

    注意上面的com.mylau.rest.resources应该是你最终提供RESTful服务代码所在的包名。

  • 选择菜单上File->Project Structure...,按照下图,把项目依赖的lib发布到WEB-INFO/lib下, 然后apply。
  • 20235748_U8Do.png

运行,访问http://localhost:8080/api/hello,看到Hello Jersey

 

转载于:https://my.oschina.net/112612/blog/1576384


http://www.niftyadmin.cn/n/2748049.html

相关文章

python代码存取数据,几行代码轻松搞定python的sqlite3的存取

很简单&#xff1a;存数据&#xff1a;1、加载sqlite3驱动(只需一行代码)2、用驱动执行查询语句(只需一行代码)取数据&#xff1a;1、加载sqlite3驱动(只需一行代码)2、用驱动执行查询语句(只需一行代码)乍一看&#xff0c;sqlite存取数据方式似乎都一样&#xff0c;实际上&…

Confluence 6 启用嵌套用户组

一些目录服务器能够允许你在一个组中定义另外一个组。在这种结构下的用户组称为用户组嵌套。嵌套组的配置能够让子用户组继承上级用户组的权限&#xff0c;使系统的权限配置变得简单。这个页面描述了 Confluence 是如何在一个或者多个用户服务器上如何处理嵌套用户组。你可以为…

望闻问切诊断用户问题,揭秘阿里云智能化服务全景

2018云栖大会上海峰会阿里云支持与服务专场&#xff0c;阿里云技术专家张海滨带来以“阿里云智能化服务全景揭秘”为题的演讲。本文首先就智能化服务方面提出了智能顾问、智能服务运营和智能对话分析三个方面的策略&#xff0c;然后创建了阿里云智能顾问、智能服务运营和智能对…

ubuntu php5扩展安装,ubuntu14php5.5安装mcrypt扩展

安装php5-mcryptsudo apt-get install php5-mcrypt编辑php配置文件sudo gedit /etc/php5/apache2/php.ini在extension下面加上(任何独立一行就行)extensionphp_mcrypt.so (原来的php5-mcrypt.so无效)保存&#xff0c;重启apache2sudo /etc/init.d/apache2 restart如果重启后你的…

“噩梦清单” 警惕人工智能引发“身份危机”

进入文明时代以来&#xff0c;人类就一直担心有朝一日会遭遇“灭顶之灾”&#xff0c;比如说变异的病毒、小行星撞击地球&#xff0c;以及核灾难等。随着机器人技术的不断演进&#xff0c;人类的“噩梦清单”上恐怕又多了一项&#xff1a;人工智能有可能发展出自己的思想&#…

spring data jpa 实现逻辑删除

2019独角兽企业重金招聘Python工程师标准>>> 由于最近正在做一个开源的微服务系统。采用spring cloud&#xff0c; spring boot&#xff0c; axon 等等来做。然后呢。ORM打算采用的是spring data jpa。然后再做系统的时候就考虑到了一个持久化逻辑删除的问题。那么问…

动态规划—背包问题(01背包、完全背包、多重背包)

01背包问题 有N件物品和一个容量为C的背包。第i件物品的费用是w[i]&#xff0c;价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量&#xff0c;且价值总和最大。 w[i] 表示物品i的重量 v[i] 表示物品i的价值 C 表示背包的容量 dp[i][c]表示前i件物品恰放…

.NET Compact Framework结构体的对齐问题

使用.NET Compact Framework进行P/Invoke或者需要解析异构系统的数据时&#xff0c;需要准备结构体。如下&#xff1a; [StructLayout(LayoutKind.Sequential, CharSet CharSet.Auto)]internal struct TestStruct{ [MarshalAs(UnmanagedType.R8)]public double f1; } 在.NET …