区块链技术主页 > 区块链技术 >
Jetty使用教程
新闻来源:918Õ 添加时间:2018-10-25

Jetty使用教程

jetty作为一款小型的web容器用处很大,因为其小巧强大,经常作为嵌入式的组件处理http交互。

Jetty 作为凯发K8独立的 Servlet 引擎可以独立提供 Web 服务,但是它也可以与其他 Web 应用服务器集成,所以它可以提供基于两种协议工作,凯发K8是 HTTP,凯发K8是 AJP 协议,本文介绍jetty处理http请求的应用。 实际上 Jetty 的工作方式非常简单,当 Jetty 接受到凯发K8请求时,Jetty 就把这个请求交给在 Server 中注册的代理 Handler 去执行,如何执行你注册的 Handler,同样由你去规定,Jetty 要做的就是调用你注册的第凯发K8 Handler 的 handle

下面自己对jetty的使用。

动起来:

1.下载jetty:http://www.eclipse.org/jetty/documentation/current/quick-start-getting-started.html#jetty-downloading

2.在项目中引入包,如图:

3.写凯发K8Servlet处理类。

public class LoginServlet extends HttpServlet {

      public void doGet(HttpServletRequest request,

            HttpServletResponse response) throws IOException  {

            String username= request.getParameter( "username");

            String password= request.getParameter( "password");

           

              response.setContentType( "text/html;charset=utf-8");

       

              //返回html 页面

              response.getWriter().println( "<html>");

              response.getWriter().println( "<head>");   

              response.getWriter().println( "<title>登录信息</title>" );   

              response.getWriter().println( "</head>"); 

              response.getWriter().println( "<body>");   

              response.getWriter().println( "欢迎【" + username + "】用户登录成功!!!" ); 

              response.getWriter().println( "</body>"); 

              response.getWriter().println( "</html>");                 

           

      }

     

      public void doPost(HttpServletRequest request,

                  HttpServletResponse response) throws IOException  {

            //doGet(request,response);

            response.sendRedirect( "/web-inf/jsp/default.jsp");

      }

}

4.设置jetty启动项

public class JettyServer {

      public static void main(String[] args) throws Exception {

            Server server= new Server(8080);

           

            ServletContextHandler context= new ServletContextHandler(ServletContextHandler.SESSIONS );

            context.setContextPath( "/");

           

            server.setHandler( context);

           

            context.addServlet( new ServletHolder( new LoginServlet()),"/here");

           

            server.start();

            server.join();

      }

}

5.启动并输入地址:

http://localhost:8080/here

至此,jetty简单运行成功。

在springMVC中使用jetty

1.引入pom文件:


<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/maven-v4_0_0.xsd">

  < modelVersion>4.0.0</modelVersion >

  < groupId> com.lango.test</ groupId>

  < artifactId> springMvcJetty</ artifactId>

  < packaging> war</ packaging>

  < version> 0.0.1-SNAPSHOT</ version>

  < name> springMvcJetty Maven Webapp</ name>

  < url> http://maven.apache.org</ url>

  < dependencies>

    <dependency >

      <groupId >junit</groupId>

      <artifactId >junit</artifactId>

      <version >3.8.1 </version >

      <scope >test </scope >

    </dependency >

      <dependency >

                  <groupId >org.eclipse.jetty </groupId >

                  <artifactId >jetty-io</artifactId >

                  <version >8.1.8.v20121106 </version >

            </dependency >

            <dependency >

                  <groupId >org.eclipse.jetty </groupId >

                  <artifactId >jetty-io</artifactId >

                  <version >8.1.8.v20121106 </version >

            </dependency >

            <dependency >

                  <groupId >org.eclipse.jetty </groupId >

                  <artifactId >jetty-webapp</artifactId >

                  <version >8.1.8.v20121106 </version >

            </dependency >

            <dependency >

                  <groupId >org.eclipse.jetty </groupId >

                  <artifactId >jetty-server</ artifactId>

                  <version >8.1.8.v20121106 </version >

            </dependency >

            <dependency >

                  <groupId >org.eclipse.jetty </groupId >

                  <artifactId >jetty-servlet</artifactId >

                  <version >8.1.8.v20121106 </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring-context </artifactId >

                  <version >4.1.4.RELEASE </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring- jms</ artifactId>

                  <version >4.1.6.RELEASE </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring-test </artifactId >

                  <version >4.1.4.RELEASE </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring-web </artifactId >

                  <version >4.1.4.RELEASE </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring- webmvc</ artifactId>

                  <version >4.1.4.RELEASE </version >

            </dependency >

            <dependency >

                  <groupId >org.springframework </groupId >

                  <artifactId >spring-context-support </artifactId >

                  <version >4.1.4.RELEASE </version >

            </dependency >

  </ dependencies>

  < build>

    <finalName >springMvcJetty </finalName >

  </ build>

</project>

2.配置jetty服务器:


public class jettyT {

      public static void main(String[] args) throws Exception {

            Server server= new Server(8080);


        ServletContextHandler context= new ServletContextHandler(ServletContextHandler.SESSIONS );

          context.setContextPath( "/");

       

          //使用spring的Servlet处理 


          DispatcherServlet servlet= new DispatcherServlet();

        servlet.setContextConfigLocation( "classpath*:springMvcJetty/spring-jetty.xml" );

        context.addServlet( new ServletHolder(servlet), "/");

       

        HandlerList handlers= new HandlerList();

        handlers.addHandler( context);

        server.setHandler( handlers);

       

            ThreadPool pool = new ExecutorThreadPool(

                        Executors. newCachedThreadPool());

        server.setThreadPool( pool);

     

        Connector connector= new SelectChannelConnector();

        connector.setPort(8080); //此处要与前面设置的 jetty端口一致。

        server.setConnectors( new Connector[]{ connector});

       

          server.start();

          server.join();

      }

}

3.其中的spring-jetty.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:tx= "http://www.springframework.org/schema/tx" xmlns:mvc= "http://www.springframework.org/schema/mvc"

      xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:p= "http://www.springframework.org/schema/p"

      xsi:schemaLocation= "http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

            " >

            <!-- 注解扫描包 -->

      <context:annotation-config />

            <context:component-scan base-package ="springMvc"

            use-default-filters= "false">

            <context:include-filter type ="annotation" expression= "org.springframework.stereotype.Controller" />

      </context:component-scan >

            <!-- 开启注解 -->

      <mvc:annotation-driven >

     

      </mvc:annotation-driven >

</beans>

4.写凯发K8controller:

@Controller

@RequestMapping("/home" )

public class Home {

     

      @RequestMapping("/index")

      @ResponseBody

      public String Index(HttpServletRequest request){

            String name= request.getParameter( "name");

           

            return name+ "你好";

      }

}

在浏览器中访问http://localhost:8080/home/index,就可以了。

扩展: Jetty 有凯发K8处理长连接的机制:凯发K8被称为 Continuations 的特性。利用 Continuation 机制,Jetty 可以使得凯发K8线程能够用来同时处理多个从客户端发送过来的异步请求。 Continuations 机制维护凯发K8队列,当请求在suspend方法之后就加入队列,等到超时或者调用  resume方法时,在交由线程处理。这使得jetty特别适合处理聊天室之类的应用。

Jetty服务器的安装配置详解

使用Jetty作为嵌入式服务器

Jetty 源码分析

Jetty安装学习并展示

Jetty在Eclipse中的安装

Linux(RedHat 5.8)下 安装Jetty 部署 使用 

Jetty 的详细介绍:请点这里
Jetty 的下载地址:请点这里

本文永久更新链接地址:

http://www.bkjia.com/Linux/1115909.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linux/1115909.htmlTechArticleJetty使用教程 jetty作为一款小型的web容器用处很大,因为其小巧强大,经常作为嵌入式的组件处理http交互。 Jetty 作为凯发K8独立的 Servlet 引擎...

本文源自: 凯发K8

区块链技术
联系方式