注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红尘若梦

生活的色彩

 
 
 

日志

 
 

Jetty嵌入式Web容器支持JSP的实现办法  

2015-10-11 15:29:48|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Jetty嵌入式Web容器默认是不支持JSP的[此处谈及的是嵌入式,独立容器支持Jsp为默认开启,如未开启,请在启动前编辑jetty.ini 文件,在 OPTIONS 中增加 jsp一项,如OPTIONS=Server,jmx,resources,websocket,ext,jsp],如果需要支持,先需要要引入相关的包,从Jetty-9.2开始,使用Apache Jasper作为默认JSP容器实现, 请引用LIB目录下apache-jsp。而在前面的版本中使用的是Glassfish Jasper9.0之前版本,则请引用jsp 。如果还需要jstl支持,还需要引入apache-jstl。软件下载地址:http://download.eclipse.org/jetty/
引入包如下图所示:
Jetty嵌入式Web容器支持JSP的实现办法 - 1976xyg - 红尘若梦
创建一个类文件com.topone.JspServer。代码如下:

package com.topone;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jetty.jsp.JettyJspServlet;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.SimpleInstanceManager;
import org.eclipse.jetty.apache.jsp.JettyJasperInitializer;
import org.eclipse.jetty.plus.annotation.ContainerInitializer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
public class JspServer
{
public static void main(String[] args) throws Exception
{
//创建服务,设置端口
Server server = new Server(8080);
//设置JSP由JavaC编译
System.setProperty("org.apache.jasper.compiler.disablejsr199","false");
//WEB根目录
String webroot=System.getProperty("user.dir")+File.separator + "resources" + File.separator + "webroot";
//生成context
WebAppContext context = new WebAppContext();
context.setContextPath("/");
//设置相关编译临时目录
context.setAttribute("javax.servlet.context.tempdir", new File(webroot+File.separator + "WEB-INF", "classes"));
context.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/.*taglibs.*\\.jar$");
//指定WEB根目录
context.setResourceBase(webroot);
//初始化JSP引擎
JettyJasperInitializer sci = new JettyJasperInitializer();
ContainerInitializer initializer = new ContainerInitializer(sci, null);
List<ContainerInitializer> initializers = new ArrayList<ContainerInitializer>();
initializers.add(initializer);
context.setAttribute("org.eclipse.jetty.containerInitializers", initializers);
context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
//创建JSP处理类Servlet
ServletHolder holderJsp = new ServletHolder("jsp", JettyJspServlet.class);
holderJsp.setInitOrder(0);
//将所有JSP指定相关Servlet处理
context.addServlet(holderJsp, "*.jsp");
server.setHandler(context);
//服务开始
server.start();
server.join();
}
}

运行即可发现,JSP已经可以编译并运行了。此外还可以相应调整web.xml,让其它的Servlet也映射上去,这下, Jetty嵌入式Web容器即支持 Servlet也可以支持Jsp了。该代码参考文档:https://github.com/jetty-project/embedded-jetty-jsp。

  评论这张
 
阅读(169)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017