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

原创 2016年09月03日 17:27:37

最近在学校做一个网络项目,要实现消息群发和事件提醒。可选择的工具很多,可以使用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!

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SSM框架(Spring+SpringMVC+MyBatis)—环境eclipse+maven+jetty

SSM框架(Spring+SpringMVC+MyBatis)—环境eclipse+maven+jetty

Spring+Jetty+Jersey+Mybatis整合教程 无web.xml 、webapp版

原文链接 http://blog.csdn.net/whzhaochao/article/details/50152833项目总体目录结构项目结构说明com.zhaochao.action 主要放处...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署

有些项目中,可能WEB功能并不是这个系统的核心功能,但是为了部署这个web服务,往往我们都是将工程打成WAR包,丢给WEB容器去启动,这样就有点偏离主题了,不太友好,机器上还得装上个WEB容器,配置一...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

jetty服务器数据源配置JNDI-Oracle,MySQL,SQLServer,DB2等

1、下载jetty服务器(8.1.0.RC2),解压到任意目录下   http://dist.codehaus.org/jetty/jetty-hightide-8.1.0/jetty-highti...

Jetty安装学习并展示

Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有...
  • mchdba
  • mchdba
  • 2014年05月20日 00:16
  • 4067

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

选择Jersey+jetty原因 之前做的项目大部分是PC的项目,没有做的完全的前后端分离,后端使用的是MVC框架 像SpringMVC、Sturts2。最近开发移动webapp项目,因为对Spri...

jersey + spring + mybatis + redis项目搭建

最近在公司做项目,想采用最近比较热的restful来做,思前想后采用了jersey + spring + mybatis + redis来搭建项目,此处留下详细的配置,方便以后查阅,jersey采用2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jersey+spring+mybatis,使用jetty容器,druid连接池,构建restful风格项目
举报原因:
原因补充:

(最多只允许输入30个字)