惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
小众软件
小众软件
博客园_首页
博客园 - 聂微东
罗磊的独立博客
Recent Announcements
Recent Announcements
U
Unit 42
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
D
DataBreaches.Net
Last Week in AI
Last Week in AI

克洛洛日记

一年回本计划 | 克洛洛日记 股票期权的Theta | 克洛洛日记 股票期权的Gamma | 克洛洛日记 股票期权的Delta | 克洛洛日记 KDJ指标 | 克洛洛日记 布林线 | 克洛洛日记 MACD指标 | 克洛洛日记 RSI指标 | 克洛洛日记 时间协议 | 克洛洛日记 聊聊Spring的stereotype注解 | 克洛洛日记 免费申请 JetBrains 全产品 License | 克洛洛日记 Aloha 一个Hexo主题 | 克洛洛日记 泰国之旅 [三] | 克洛洛日记 泰国之旅 [二] | 克洛洛日记 泰国之旅 [一] | 克洛洛日记 Nginx使用SSL证书配置https | 克洛洛日记 i18next | 克洛洛日记 错误排查:非ROOT用户使用密钥进行ssh登录提示输入密码 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[三] | 克洛洛日记 使用EditorConfig | 克洛洛日记 JavaScript执行window.print()打印内容为空白 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[二] | 克洛洛日记 寓食记 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[一] | 克洛洛日记 书单 | 克洛洛日记 WebJars介绍 | 克洛洛日记 Maven打jar包内容出错 | 克洛洛日记 数据分布式模型 | 克洛洛日记 Wicket的HelloWorld | 克洛洛日记 Java运行时内存结构 | 克洛洛日记
WebJars使用示例 | 克洛洛日记
海拉鲁球果 <hyrul · 2016-04-07 · via 克洛洛日记

· webjars / java / javascript / css

说明

这里只介绍Servlet3如何使用WebJars(Classic风格),文章中示例源码地址在https://github.com/henryhuang/webjars-example

代码编写

Servlet类

首先配置一个Servlet:


public class ServletSample extends HttpServlet {
	
	private static final long serialVersionUID = -5041101055869552308L;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		try(PrintWriter printWriter = resp.getWriter()) {
			printHTML(printWriter, "<script type='javascript' src='webjars/jquery/3.0.0-alpha1/jquery.js'></script>", "OK");
			printWriter.flush();
		}

	}
	
	private void printHTML(PrintWriter printWriter, String headContent, String bodyContent) {
		printWriter.print("<html>");
		printWriter.print("<head>");
		printWriter.print(headContent);
		printWriter.print("</head>");
		printWriter.print("<body>");
		printWriter.print(bodyContent);
		printWriter.print("</body>");
		printWriter.print("</html>");
	}
	
}

注意 cnhalo.ServletSample#doPost:


printHTML(printWriter, "<script type='javascript' src='webjars/jquery/3.0.0-alpha1/jquery.js'></script>", "OK");

“webjars/jquery/3.0.0-alpha1/jquery.js” 是根据jquery的WebJars包里META-INF/resources下的路径写的:

文件结构

web.xml

web.xml 里的内容为:

  <servlet>
  	<servlet-name>webjars</servlet-name>
  	<servlet-class>cnhalo.ServletSample</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>webjars</servlet-name>
  	<url-pattern>/webjars</url-pattern>
  </servlet-mapping>

运行

自己打包

示例项目使用Gradle进行构建,需要配置Gradle的环境,然后依次执行:

git clone http://https://github.com/henryhuang/webjars-example
cd webjars-example
gradle war // 生成war包

gradle会打出war包,进入项目的 build/libs/ 下面,看到 webjars-1.0.war 即是,将war包放入tomcat下运行即可。

注意,代码使用了jdk8。

使用发布包

如果不想使用gradle打包,可以使用我已经打好的包webjars-1.0.war

验证

启动tomcat,访问 **http://localhost:8080/webjars-1.0/webjars**,界面显示 OK,查看页面源码(使用FireFox,鼠标右键,查看页面源代码,其它浏览器类似):

<html>
<head>
    <script type='javascript' src='webjars/jquery/3.0.0-alpha1/jquery.js'></script>
</head>
<body>
    OK
</body>
</html>

点击 webjars/jquery/3.0.0-alpha1/jquery.js ,可显示 jquery的源码信息,则使用成功!