使内嵌式jetty服务器支持jsp
1.jetty是什么
jetty是一个轻量级的web服务器,类似tomcat,但用起来比tomcat灵活,尤其是支持内嵌式使用。所谓内嵌式即以java语句的形式启动jetty,这样我们可以无需部署和启动web容器就能达到同样的效果。这对于简单的基于http协议的应用以及调试程序就方便的多了。
2.一个简单的jetty服务器
简单到仅需类似以下几条语句:
public class JettySample {public static void main(String[] args)throws Exception{Server server=new Server(8087);Context context=new Context(server,"/");ResourceHandler resource_handler=new ResourceHandler();resource_handler.setWelcomeFiles(new String[]{"index.html"});resource_handler.setResourceBase(".");context.setHandler(resource_handler);server.setStopAtShutdown(true);server.start();}
}
当选择Run As Java Application来运行时,即启动了一个端口号为8087的web服务器。
当然上面的例子只能解析html文件,如需解析servlet和jsp还需要其他一些工作。servlet还好说,调试jsp费了点劲,下面是记录过程。
3.试了好多种方法,看了不少的帖子,最终我发现解析jsp和解析servlet方法是不同的,不能仅通过增加几条语句(如context.addServlet(new ServletHolder(new HelloServlet()), "/hello");)就能完成,而必须要建立一个所谓的web应用,所以格式上就和上面的代码略有差别。
public static void main(String[] args) throws Exception{Server server = new Server();Connector connector = new SelectChannelConnector();connector.setPort(8080);server.setConnectors(new Connector[] { connector }); WebAppContext webAppContext = new WebAppContext("WebContent","/");webAppContext.setDescriptor("WebContent/WEB-INF/web.xml");webAppContext.setResourceBase("WebContent");webAppContext.setDisplayName("jetty");webAppContext.setClassLoader(Thread.currentThread().getContextClassLoader());webAppContext.setConfigurationDiscovered(true);webAppContext.setParentLoaderPriority(true);server.setHandler(webAppContext);try{server.start();}catch(Exception e){}}
这里我们按照web应用的标准规范建立文件夹WebContent、WEB-INF、以及web.xml,web.xml也要按规定格式写,哪怕最简单只写一个段落
<welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.jsp</welcome-file> </welcome-file-list>
启动后在浏览器执行jsp页面,发现仍然报错:JSP support not configured
查了很久原因,发现是这样,我引入jetty包的时候是用eclipse里的plugins目录下的几个jetty jar文件,这是不够的。只得下了一个完整的jetty,解压后引入其中lib/jsp目录下的所有jar文件。再执行,还是报错,不过这次变了:A full JDK(not just JRE) is required。原因是jsp需要编译成隐含的servlet才能执行,所有需要完整jdk。这个解决办法就比较简单了——Run Configuration,选择JRE,Alternate JRE、Installed JREs,然后Add一个新JRE,并指向一个jdk目录就可以了。
经过一番折腾,终于使得内嵌的jetty可以解析jsp文件了。
转载于:https://blog.51cto.com/6738767/1614226
使内嵌式jetty服务器支持jsp相关推荐
- python字典导入mongodb_Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb...
本文主要向大家介绍了Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 从mongo查 ...
- javascript将内嵌式广告隐藏
一些免费主页空间的提供商开始将弹出式广告条改为内嵌式广告条了,笔者对这种内嵌式广告条进行分析,写出一段javascript代码,通过这段代码可以将内嵌式广告隐藏起来: CODE: [Copy to c ...
- 内嵌式js微信扫码登录及自定义样式
关于微信扫码登录网站的功能介绍,请阅读官方文档[网站应用微信登录开发指南] 根据官方文档我们知道微信扫码登录有两种方式 一种是跳转到一个大黑屏二维码界面进行扫码登录: (参见博客:PHP实现跳转式微信 ...
- html5内嵌式格式,如何使用内嵌式引入css样式表
引入方法:将CSS代码集中写在HTML文档的" "头部标签中,并且用"". 本教程操作环境:windows7系统.CSS3&&HTML5版.De ...
- 13 ,CSS 入门基础,行内排版内嵌式排版和外部排版样式
1.认识 CSS 2.传统 HTML 设计网页版面的缺点 3.CSS 的特点 4.CSS 的排版样式 13.1 认识CSS CSS的英文全名是 Cascading Style Sheets,中文可翻译 ...
- php算html语言吗,为何说PHP 是一种 HTML 内嵌式的语言
原标题:为何说PHP 是一种 HTML 内嵌式的语言 PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写. PHP 是一种 HTML 内 ...
- html内嵌式的语言,为何说PHP是一种HTML内嵌式的语言
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写. PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚 ...
- CSS的三种使用方法。 行内样式: 内嵌式: 外部式:
三中的使用方法的简单实例如下: 行内样式: <!doctype html> <html> <head><meta charset="UTF-8&qu ...
- 内置式永磁电机maxwell2d_内嵌式永磁同步电机ANSOFT设计
内容介绍 原文档由会员 大雨倾盆 发布 内嵌式永磁同步电机ANSOFT设计 2万字 47页 原创作品,已通过查重系统 摘要 由于永磁同步电机利用永磁体进行励磁,与电励磁同步电机相比,它具有很多优点,主 ...
最新文章
- idea+tomcat+struts2 搭建一个web实例
- 7-1 数组元素循环右移问题 (20 分)
- 释放锁的逻辑-InterProcessMutex.release
- 太原理工大学计算机宿舍,2019太原理工大学宿舍怎么样 环境好不好
- php 日期时间 取日期,从PHP中的文本中提取日期,时间和日期范围
- VB编程语言基础知识点总结(转)
- python数据库模糊查询_python中的mysql数据库like模糊查询
- c语言编程绝对质数,c语言求绝对素数
- smartupload java_java组件smartupload实现上传文件功能
- 小程序中如何引用阿里图标
- VS2022 Setup Project 打包
- 7.20-7.26 字节推荐算法(DATA-EDU)5道面试题分享
- java:窗体里的标签(设置标签;字体;颜色)
- vant vant-list碰到的坑
- Java工程师 Java基础面试题集合类(Day06)
- 神经网络预测值差很多,神经网络预测的局限性
- 一位女程序员的奋斗路程
- tk跨境电商好做吗?有什么技巧吗?
- 普乐蛙7D动感影院|6d动感电影院|7d动感影院设备
- python+appium判断元素存在_python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装...
热门文章
- reverse函数实现vector变量的翻转
- java 算法_JAVA经典算法40题
- shell获取git最近一次提交信息_Git修改commit提交信息
- java.io.tem_从屌丝到架构师的飞越(IO流篇)-转换流
- oracle数据库恢复aul_RMAN备份与恢复 —— 完全恢复与不完全恢复
- php语言培训费用,PHP语言编程的优势在哪里
- PowerBI随笔(1)-类似vlookup的合并查询
- 日常必备的16条Linux命令
- 【小白学习PyTorch教程】十、基于大型电影评论数据集训练第一个LSTM模型
- 重磅推荐:2020年人工智能最精彩的25篇论文(附下载)