jersey+spring+mybatis,使用jetty容器,druid连接池,构建restful风格项目

Jersey——搭建Jersey + Jetty开发环境 一、引入所对应的包 <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> <version>2.27</ve... 阅读详情

最近在学校做一个网络项目,要实现消息群发和事件提醒。可选择的工具很多,可以使用c++写socket,也可以用php做网站,想了想,最后还是采用java做后台,构建一个restful风格的后台项目,适用于移动端、pc端和web端。使用maven管理项目依赖关系,控制器选用jersey,web服务器用jetty,用spring管理对象关系,采用mysql数据库,mybatis持久层框架以及druid连接池。

首先去jersey的官网查看文档,得知使用maven创建一个web项目十分简单,jersey提供了一个非常小但是结构清晰完整的例程。在希望创建项目的目录执行以下命令即可(前提是已装好maven):

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp \
                -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false\
                -DgroupId=com.example -DartifactId=simple-service-webapp -Dpackage=com.example \
                -DarchetypeVersion=2.23.2

执行完毕后会在当前目录下生成一个simple-service文件夹,即jersey官方提供的样本,这是一个标准的java项目,没有webapp等web项目需要的文件,后面笔者自己新建了webapp、web.xml等文件。


接着引入jetty作为发布项目的服务器,到jetty官网一查,需要在pom.xml文件中添加以下配置(pom.xml文件的意义请读者自行查阅):

 
  <dependency> <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  </dependency>
  <!-- dependencies for native jetty websocket -->
  <dependency>
  <groupId>org.eclipse.jetty.websocket</groupId>
  <artifactId>websocket-server</artifactId>
  <version>${jetty.version}</version>
  </dependency>
  <dependency>
  <groupId>org.eclipse.jetty.websocket</groupId>
  <artifactId>websocket-servlet</artifactId>
  <version>${jetty.version}</version>
  </dependency>
  <!-- dependencies for javax.websocket (JSR-356) websocket -->
  <dependency>
  <groupId>org.eclipse.jetty.websocket</groupId>
  <artifactId>javax-websocket-server-impl</artifactId>
  <version>${jetty.version}</version>
  </dependency>
  </dependencies>
  <build>
  <plugins>
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
  <source>1.8</source>
  <target>1.8</target>
  </configuration>
  </plugin>
  </plugins>
  </build>

此举是加入jetty核心包及其所需要的包。


然后便是定义有关jersey的配置,既然我们希望发布成为一个web项目,那么便需要新建web.xml文件定义wen项目的各种属性,以下是笔者的web.xml文件(在webapp/WEB-INF文件夹下):

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
   
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>


    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>cn.edu.stu.dongdong</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/dongdong/*</url-pattern>
    </servlet-mapping>


</web-app>


此文件定义了spring配置文件路径,以及定义了捕获请求的Jersey Web Application服务,并且说明了包名以cn.edu.stu.dongdong开头的包下面的类会被jersey解析,如果有javax所定义的注解(如path、get、post等),jersey便可正确的解析并加载它。


马上就到spring了。spring在这里有两个功能,一个是管理对象关系,一个是托管数据源。首先添加spring依赖:

<dependency>
       <groupId>org.glassfish.jersey.ext</groupId>
       <artifactId>jersey-spring3</artifactId>
       <version>2.23.2</version>
</dependency>

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-jdbc</artifactId>
   <version>4.2.5.RELEASE</version>
</dependency>

此项配置spring和jersey以及数据库的依赖,如果要使用spring的大部分注解,还需要添加spring的其他依赖,读者可去spring官网查找并酌情自行添加


接下来是持久层的mybatis框架,持久层的框架很多,比较流行的算是hibernate,但是笔者这里没有用是因为另外一个项目正在使用hibernate,这里笔者想尝试一下另一个,也有一部分原因是mybatis框架比较简单,其代码生成器生成的代码更加符合面向对象而不是数据库的编程习惯。在pom.xml文件中添加以下依赖:

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.2.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator -->
<dependency>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator</artifactId>
   <version>1.3.2</version>
   <type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-maven-plugin -->
<dependency>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.2</version>
</dependency>


<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.0.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>6.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
   <version>1.2.2</version>
</dependency>


此部分说明了mybatis的核心包、generator代码生成器的核心包和插件以及和spring的依赖包,并且还说明了mysql数据库以及阿里巴巴的连接池druid。接下来是重头戏,也就是有关spring扫描构件以及托管数据源的配置了,根据前文web.xml文件的说明,配置文件名称应该命名为applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mybatis="http://www.mybatis.org/schema/mybatis"
xsi:schemaLocation="http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans.xsd  
     http://www.springframework.org/schema/context  
     http://www.springframework.org/schema/context/spring-context.xsd  
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop.xsd">



<!-- 数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://10.21.34.14:3306/dongdong" />
<property name="username" value="root" />
<property name="password" value="publiczyl" />
</bean>

<!-- 扫描dao层,spring会自动扫描以base-package包名字为前缀的包下面的类的注解,将它们纳入spring容器管理 -->
    <context:component-scan base-package="cn.edu.stu.dongdong" />


     <!-- 扫描mapper配置文件的地址,mapper配置文件是mybatis的核心,它定义了java类和数据库表之间的映射(即OR映射)-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">                          
        <property name="basePackage" value="cn.edu.stu.dongdong.mapper" />  
    </bean>  
    

    <!-- 使用连接池创建数据库连接配置
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  

    <!--事务配置-->
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
</beans>


此文件的配置比较清晰简单,注释也都有说明,如还是不明白,请读者自行查阅每一部分的含义。

至此,web项目的所有配置和构件都已经齐全,以后再想加什么相当于高屋建瓴,笔者也要投入紧张的开发中了(怎么使用jersey框架以及设计web项目的架构笔者也是皮毛都不懂,请读者自行寻找大神)


注:附上简单的java类,以及运行效果:

package cn.edu.stu.dongdong.test;


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


/**
 * Root resource (exposed at "myresource" path)
 */
@Path("test")
public class MyResource {


    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
@Path("test")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

启动命令:mvn jetty:run

访问地址:localhost:8080/dongdogn/test/test

结果:

Got it!

树莓派4B部署轻量级LLM实战:从模型量化到本地API服务 模型量化是深度学习模型部署中的关键技术,通过将高精度权重转换为低精度格式(如INT4、INT8),能大幅降低模型的内存占用和计算开销,使其能在资源受限的边缘设备上运行。其原理在于减少数据表示的比特数,在可接受的精度损失下换取更高的存储效率和推理速度。这项技术的核心价值在于实现了AI模型的轻量化与本地化部署,为隐私保护、低成本和低功耗应用场景提供了可能。在边缘计算和物联网领域,量化后的模型可以部署在树莓派这类微型计算机上,实现完全离线的智能对话、文本生成等任务。本文以树莓派4B为硬件平台,详细演示了如何利用l 阅读详情

相关推荐

构建RESTful服务:JettyJerseySample项目实战

简介:JettyJerseySample是一个使用轻量级Jetty服务器和Jersey框架构建RESTful API的示例项目。它演示了如何进行基本的CRUD操作,并展示了REST架构风格、HTTP方法与资源的对应关系。该案例详细介绍了项目的关键技术,包括Jetty服务器的使用、Jersey框架的功能、RESTful设计原则、Java编程实践、数据存储、测试和文档编写以及安全性考虑和部署扩展策略。它是Java开发者学习RESTful服务构建的宝贵资源。

weixin_32661831的博客 744

Spring Websocket 使用笔记

spring websocket框架使用笔记

PseudoScience 2万+

spring-mybatis-jetty:基于Spring+Mybatis+Jetty实现简单的用户信息接口

基于spring+mybatis+jetty实现API服务 Spring版本是4.1.2.RELEASE。 项目使用 在执行项目之前,需要添加integration数据库用户,或者修改项目中的用户。 执行命令 mvn sql:execute 注:执行完以后,更新项目(Update Project)即可以看到数据库。 或者使用`mvn clean package`执行可执行sql语句。 mvn clean package [-Dmaven.test.skip=true] 接口说明 POST: User DELETE GET 开发人员 WeChat: wgybzb QQ: 1010437118 E-mail:

jetty websocket实现聊天+心跳保持连接

效果图 1.配置maven需要的jar包-pom.xml <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-server</artifactId> <version&...

辰小白 1598

jersey+spring+mybatis框架初使用

实现简单的crud 适用于初学者

jersey restful spring mybatis alibaba.druid连接池 json mysql oracle

1、采用jersey restful spring mybatis alibaba.druid连接池 json 技术搭建的一套rpc通信架构; 2、支持 mysql 、oracle 数据库

jetty服务器使用jersey作为Restful框架

使用Maven的简单JavaSE应用程序,从一个现有项目学习尝试搭建一个新的项目。2.打开POM,编辑POM.XML,添加jetty,jersey。4.修改MyJerseyConfig.java。首先完成最基础的GETPOST请求的功能。1.新建项目Maven-Java应用程序。3.编辑Main.java。5.rest包添加服务类。...............

ar__ha的博客 3148

jersey和jetty的restful服务程序

基于jersey的restful请求的demo代码,可执行

Jersey+jetty 搭建高并RestFull 接口服务

选择Jersey+jetty原因 之前做的项目大部分是PC的项目,没有做的完全的前后端分离,后端使用的是MVC框架 像SpringMVC、Sturts2。最近开发移动webapp项目,因为对SpringMVC框架比较熟悉所以就选择了用SpringMVC框架为前端提供接口,后来发现了一些新的RestFull框架如Jersey、RestEeasy等RestFull框架。对比后觉得使用Spring

赶路人儿 5538

jersey+spring+mybatis整合

jersey加spring加mybatis整合,支持json转换和事物管理

用Cursor+Node.js零代码搭建健康数据仪表盘:从数据录入到可视化全流程

本文详细介绍了如何利用Cursor AI编程助手和Node.js,无需手动编写代码,即可构建个人健康数据仪表盘的全流程。通过自然语言指令,实现从数据录入、存储到动态图表可视化的完整系统,展示了AI驱动开发在降低技术门槛、提升开发效率方面的强大能力。

gitlab7runner的博客 698

java rs jetty_java轻量RESTful api服务搭建(jersey+jetty)

前言由于开始要搭建一个java + python的服务,java端提供数据库增删改查逻辑供python端调用,第一时间想到了用REST(Representational State Transfer)进行交互最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了。REST的六个特性:Client-Server:服务器端与客户端分...

weixin_35756373的博客 636

KEPServer EX6的Modbus、MQTT和REST Server一站式配置整理说明

KEPServer EX6的Modbus、MQTT和REST Server一站式配置整理说明

syqenter的专栏 8960

Java开发从入门到精通:环境配置与核心概念解析

Java作为面向对象的编程语言,其'一次编写,到处运行'的特性使其成为企业级开发的首选。理解Java运行原理需要从JVM虚拟机机制入手,掌握环境变量配置、基础语法和面向对象特性是开发者的基本功。在实际工程中,合理使用集合框架和并发编程能显著提升系统性能,而Java 8引入的Lambda和Stream API则大大简化了数据处理。对于初学者而言,正确配置JAVA_HOME环境变量和掌握数据类型转换是快速入门的关键,这些基础技能也为后续学习Spring等框架打下坚实基础。

weixin_30587927的博客 380

开题报告该怎么写

考研即将来临,而一般很多大学都会选择在考研结束之后开始安排选题和开题报考(考研之前一般都不谈,老师也很人性化的,不愿意耽误你的复习) 但无论怎么推迟,我们最终都需要去面对并完成这些任务。 现在我就要教大家该如何写一个完整的开题报告! 准备模板。不同的学校有不同的格式,一般情况你的导师会给你们一个学校的标准格式,这个不用太费心。有了模板我们就可以按照模板的“线索”一步一步填充完成即可! 一般大致格式可谓: 研究背景/论文的目的、背景和意义 我们需要写明选择该题目的...

wuyueweifeng的博客 1094

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)解决办法

问题:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) 很久没用这台电脑的mysql了,今天需要连接数据库,启动数据库报错: ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) 解决方法: 查阅资料后知道了,应该使用已知的用户名和密码登陆 mysql -u root -p 然而密

一个超会写Bug的程序猿的博客 43万+

Guice + Jersey + Jetty 框架 - 学习笔记

Guice + Jersey + Jetty 框架学习笔记。

yuyu的博客 2247

MT9V034摄像头学习笔记(一)_mt9v034摄像头循迹代码(1)

函数名称:uint8_t SCB_RegRead(uint8_t Device,uint8_t Address,uint16_t *Data)* 函数名称:uint8_t SCB_RegWrite(uint8 Device,uint8 Address,uint16 Data)* 函数名称:uint8 SCCB_SendByte(uint8 Data)* 函数名称:uint8 SCCB_ReadByte(void)* 修改时间:2018年3月4日。* 修改时间:2018年3月4日。

2401_87555661的博客 907

idea创建maven+springmvc+mybatis+jetty项目

idea创建maven+springmvc+mybatis+jetty项目

u011493599的专栏 2872

使用 MATLAB/Simulink 构建一个分布式光伏-储能联合系统在配电网中的协同控制模型

本文介绍了使用MATLAB/Simulink构建分布式光伏-储能联合系统协同控制模型的方法。该系统包含光伏发电、储能、负荷和控制器等模块,通过协同控制实现能量优化管理。建模过程详细说明了从创建项目、搭建组件到实现控制策略的步骤,包括光伏特性模拟、储能参数设置和负荷需求建模。重点设计了协同控制器算法,实时调节电力分配,并展示了系统运行指标和经济效益分析。该方法为多能互补系统在配电网中的应用提供了技术验证,未来可进一步优化控制算法和场景适应性。

MHD0815的博客 309

看懂 SAP S/4HANA 产品主数据里的 GTIN:一串号码背后的全球商品识别与业务协同

SAP S/4HANA中的GTIN管理是企业供应链运营的关键环节。本文深入解析GTIN的业务内涵及其在SAP系统中的实现方式:1) GTIN是全球通用的商品标识码,不同于企业内部物料编码;2) SAP主数据中GTIN与计量单位强绑定,需为不同包装层级维护独立GTIN;3) 同一产品可能因渠道、供应商差异存在多个GTIN;4) GTIN贯穿零售POS、仓储管理、EDI订单等核心业务流程;5) 通过典型案例说明错误维护GTIN将导致收银异常、仓库作业低效等运营问题。文章强调GTIN管理需结合包装层级、计量单位等

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1431

嵌入式 Jetty 的 Jersey JAX-RS应用程序

在本教程中,我们使用 Jersey 和嵌入式 Jetty 创建一个简单的 Java REST 应用程序。我们还展示了如何将应用程序打包到可执行的 uber JAR 中。 Jersey 是一个开源框架,用于在 Java 中开发 RESTful Web 服务。它是 Java API for RESTful Web Services (JAX-RS) 规范的参考实现。 Jetty 是一个 Java HTTP (Web) 服务器和 Java Servlet 容器。它可以很容易地嵌入到设备、工具、框架、应用服务器

allway2的博客 501

openwrt 固件定制详解:各类默认参数修改及应用添加

本文以friendlywrt22-rk3568发行版为例, 介绍如**何定制**一款**openwrt固件**,定制特性包括网络参数、登陆密码、开机界面(banner)、代理arp、opkg源、hostname、应用默认配置参数修改、增加任意文件(不限于应用程序及其库)等, 最后给出了一个完整的实操实例。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 1541

Jetty+jersey总结

环境:JDK1.8;jetty9.2;jersey1.18   这里jersey-bundle单独下的1.19 要用到com.sun.jersey.api.core.PackagesResourceConfig这个类 在jersey2.x变动较大,暂时没搞懂; 建立java project: 目录如下: 还有一个问题:web.xml和jetty.xml的如何配置jetty。

FZZFFFFF的专栏 2937

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jersey+spring+mybatis+maven框架集成和实现简单的crud

由于近期在学习jsm框架实现webservice 网上也是找了许多例子整合了很久才成功 现在谈谈我的经验 希望对和我一样的初学者有用 可以少走一些弯路 开始:entity层(pojo类)package com.eda.entity;import Java.io.Serializable; import javax.xml.bind.annotation.XmlRootElement;@XmlR

z1760921018的博客 1113

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jersey+jetty+jdk8实现restful接口

build.gradle: import org.apache.tools.ant.filters.FixCrLfFilter; import org.apache.tools.ant.filters.ReplaceTokens; apply plugin: 'java' apply plugin: 'maven' apply plugin: 'eclipse' project.group = 'com.soft' project.archivesBaseName = 'jersey-jetty'

tower888的专栏 1247
上一篇: linux内核综述
下一篇: CentOS+Apache2+Python+MySQLdb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值