WEBAPP开发之maven依赖
白羽 2019-01-23 来源 :网络 阅读 1342 评论 0

摘要:本文将带你了解WEBAPP开发之maven依赖,希望本文对大家学WEBAPP有所帮助。

 本文将带你了解WEBAPP开发之maven依赖,希望本文对大家学WEBAPP有所帮助。


               

               

                   


进入正题:

一、maven依赖:

以下所列的依赖并非最小集。

    <dependencies><dependency>    <groupId>org.eclipse.jetty</groupId>    <artifactId>jetty-server</artifactId>    <version>8.1.19.v20160209</version></dependency><dependency>    <groupId>org.eclipse.jetty</groupId>    <artifactId>jetty-security</artifactId>    <version>8.1.19.v20160209</version></dependency><dependency>    <groupId>org.eclipse.jetty</groupId>    <artifactId>jetty-servlet</artifactId>    <version>8.1.19.v20160209</version></dependency><dependency>    <groupId>org.eclipse.jetty</groupId>    <artifactId>jetty-webapp</artifactId>    <version>8.1.19.v20160209</version></dependency>    <dependency>        <groupId>javax.servlet</groupId>          <artifactId>javax.servlet-api</artifactId>          <version>3.1.0</version>          <scope>provided</scope>      </dependency><dependency>  <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-core-asl</artifactId>    <version>1.9.9</version></dependency><dependency>    <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-jaxrs</artifactId>    <version>1.9.9</version></dependency><dependency>    <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-xc</artifactId>    <version>1.9.9</version></dependency><dependency>    <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-mapper-asl</artifactId>    <version>1.9.13</version></dependency>    <dependency>        <groupId>org.glassfish.jersey.containers</groupId>          <artifactId>jersey-container-servlet</artifactId>        <version>2.19</version>    </dependency>    <dependency>      <groupId>org.glassfish.jersey.core</groupId>      <artifactId>jersey-client</artifactId>      <version>2.19</version></dependency><dependency>      <groupId>org.glassfish.jersey.containers</groupId>      <artifactId>jersey-container-jetty-servlet</artifactId>      <version>2.19</version></dependency>    <dependency>        <groupId>com.squarespace.jersey2-guice</groupId>          <artifactId>jersey2-guice</artifactId>        <version>0.10</version>      </dependency><dependency>    <groupId>com.google.inject.extensions</groupId>    <artifactId>guice-servlet</artifactId>    <version>4.0</version></dependency><dependency>    <groupId>com.google.inject</groupId>    <artifactId>guice</artifactId>  <version>4.0</version></dependency><dependency>    <groupId>com.google.inject.extensions</groupId>  <artifactId>guice-assistedinject</artifactId>    <version>4.0</version></dependency><dependency>  <groupId>com.google.inject.extensions</groupId>    <artifactId>guice-persist</artifactId>  <version>4.0</version></dependency>  <dependency>    <groupId>com.alibaba</groupId>  <artifactId>fastjson</artifactId>    <version>1.2.21</version>    </dependency><dependency>      <groupId>commons-logging</groupId>      <artifactId>commons-logging</artifactId>      <version>1.2</version></dependency>        <dependency>          <groupId>org.slf4j</groupId>          <artifactId>slf4j-api</artifactId>          <version>1.7.2</version>      </dependency>      <dependency>          <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>          <version>1.7.2</version>      </dependency>    </dependencies>

二、内嵌jetty容器及配置

import   java.util.Collections;import java.util.List;import   org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.nio.SelectChannelConnector;import   org.eclipse.jetty.servlet.ServletHolder;import   org.eclipse.jetty.util.resource.Resource;import   org.eclipse.jetty.util.thread.QueuedThreadPool;import   org.eclipse.jetty.webapp.WebAppContext;import org.glassfish.jersey.servlet.ServletContainer;import   org.slf4j.Logger;import org.slf4j.LoggerFactory;import   com.google.inject.Module;import com.google.inject.servlet.GuiceFilter;import   com.newland.jerseyTest.moudle.MyModule;import com.squarespace.jersey2.guice.JerseyGuiceServletContextListener;public   class JerseyTestServer {private static Logger LOG =   LoggerFactory.getLogger(JerseyTestServer.class);private Server server =   null;public void run() throws   Exception{LOG.debug("starting......................");server = new   Server();WebAppContext app = new   WebAppContext();app.setContextPath("/");app.setBaseResource(Resource.newClassPathResource(""));JerseyGuiceServletContextListener   jgscl = new JerseyGuiceServletContextListener() {@Overrideprotected   List<? extends Module> modules() {return   Collections.singletonList(new   MyModule());}};app.addEventListener(jgscl);//配置监听器app.addFilter(GuiceFilter.class,   "/*", null);//配置过滤器ServletHolder sh = new ServletHolder(ServletContainer.class);sh.setInitParameter("jersey.config.server.provider.packages",   "com.newland.jerseyTest.controller");//resource资源包路径sh.setInitOrder(1);app.addServlet(sh,   "/my/v1/*");//配置servlet,servlet的前缀server.setHandler(app);//启用web配置server.setThreadPool(new   QueuedThreadPool(25));SelectChannelConnector conn = new   SelectChannelConnector();conn.setPort(8088);//服务端口conn.setMaxIdleTime(600000);server.addConnector(conn);server.setSendServerVersion(false);server.setStopAtShutdown(true);app.start();server.start();//服务启动}public   void stop(){try {server.stop();} catch (Exception e) {LOG.error("stop   failed.", e);}}public static void main(String[] args) {JerseyTestServer   server = null;try{server = new JerseyTestServer();if(server !=   null){server.run();}} catch(Exception e){LOG.error("Start failed.",   e);if(server !=   null)server.stop();}}}

三、自定义module
guice创建injector(guice注入工具)需要一个module参数,该module是告诉guice如何在注入时注入哪个类的实例。

import   com.google.inject.AbstractModule;import   com.google.inject.servlet.ServletModule;import   com.newland.jerseyTest.service.MyService;import   com.newland.jerseyTest.service.impl.MyServiceImpl;public class MyModule   extends AbstractModule {@Overrideprotected void configure() {install(new   ServletModule(){protected void   configureServlets(){bind(MyService.class).to(MyServiceImpl.class);//在需要注入MyService对象时,guice会据此注入MyServiceImpl实例}});}}

四、reset接口

这里可以体现reset风格的特点,参数可以在请求的uri中传递。我这里的接口只是用来接收请求和返回响应,业务处理交个service层处理,类似spring的controller或struts的action层。

import   java.util.HashMap;import java.util.Map;import javax.ws.rs.GET;import   javax.ws.rs.Path;import javax.ws.rs.PathParam;import   javax.ws.rs.Produces;import javax.ws.rs.core.Context;import   javax.ws.rs.core.HttpHeaders;import javax.ws.rs.core.MediaType;import   javax.ws.rs.core.Response;import javax.ws.rs.core.UriInfo;import   com.alibaba.fastjson.JSON;import com.google.inject.Inject;import   com.newland.jerseyTest.service.MyService;@Path("/test")public class   MyController{@Injectprivate MyService   myService;@GET@Path("{userName}")@Produces(MediaType.APPLICATION_JSON)public   Response giveAnswer(@Context HttpHeaders headers, @Context UriInfo uri,   @PathParam("userName") String userName){String ret =   myService.returnSomething(userName);Map<String, String> answer   = new HashMap<String, String>();answer.put("message",   ret);return   Response.status(200).entity(JSON.toJSONString(answer)).build();}}

五、业务处理

业务处理接口

public   interface MyService {public String returnSomething(String   userName);}

业务处理实现

import   com.newland.jerseyTest.service.MyService;public class MyServiceImpl   implements MyService {@Overridepublic String returnSomething(String userName)   {return "Hello " + userName + "   !!!";}}

六、测试

ok,一个使用jersey实现的rest服务就完成了。


                         

                     

                 

                                 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程