Jetty使用攻略
来源:互联网 发布:lsv软件 编辑:程序博客网 时间:2024/03/29 04:23
jetty作为一款小型的web容器用处很大,因为其小巧强大,经常作为嵌入式的组件处理http交互。
Jetty 作为一个独立的 Servlet 引擎可以独立提供 Web 服务,但是它也可以与其他 Web 应用服务器集成,所以它可以提供基于两种协议工作,一个是 HTTP,一个是 AJP 协议,本文介绍jetty处理http请求的应用。 实际上 Jetty 的工作方式非常简单,当 Jetty 接受到一个请求时,Jetty 就把这个请求交给在 Server 中注册的代理 Handler 去执行,如何执行你注册的 Handler,同样由你去规定,Jetty 要做的就是调用你注册的第一个 Handler 的 handle
下面自己对jetty的使用。
动起来:
1.下载jetty:http://www.eclipse.org/jetty/documentation/current/quick-start-getting-started.html#jetty-downloading
2.在项目中引入包
3.写一个Servlet处理类。
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.写一个controller:
@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 有一个处理长连接的机制:一个被称为 Continuations 的特性。利用 Continuation 机制,Jetty 可以使得一个线程能够用来同时处理多个从客户端发送过来的异步请求。 Continuations 机制维护一个队列,当请求在suspend方法之后就加入队列,等到超时或者调用 resume方法时,在交由线程处理。这使得jetty特别适合处理聊天室之类的应用。
参考:http://www.eclipse.org/jetty/documentation/current/
https://www.ibm.com/developerworks/cn/web/wa-lo-jetty/
- Jetty使用攻略
- Jetty嵌入式Web容器攻略
- jetty使用
- jetty使用
- jetty快速入门与嵌入使用 jetty
- jetty快速入门与嵌入使用 jetty
- jetty快速入门与嵌入使用 jetty
- Jetty学习【一】 Jetty的嵌入式使用
- jetty快速入门与嵌入使用 jetty
- 嵌入式jetty的使用
- jetty---ResourceHandler 使用
- jetty--使用servlet
- jetty使用学习
- myeclipse 中使用 jetty
- jetty使用技巧收集
- jetty 安装及使用
- jetty构建使用
- Jetty使用入门
- mybatis:一级缓存And二级缓存
- 三轴加速计数据计算倾斜角算法
- java nio与IO区别
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Leetcode 86 Partition List
- Jetty使用攻略
- #include <head.h>与#include "head.h"的区别
- HDU 5903 Square Distance
- 【JZOJ 4798】天使的分裂
- spring学习(官网)——解决版本冲突问题
- ul li datalist控件导航栏动态绑定数据库,并且显示相应的内容
- Android全屏沉浸式应用
- 观察者模式
- 玲珑杯 1009 Spoon Devil's Bucket 矩阵优化DP