servlet 包含html文件,Servlet 3.0笔记之包含在JAR文件中可直接访问的资源文件特性(资源绑定)...

而jarhome.jsp文件路径则位于 ${jar}/META-INF/resources/jarpage/jarhome.jsp

当然jarhome.jsp文件则没有什么特别之处:

pageEncoding="UTF-8"%>

Welcome to jar home

j2ee

now date :

jarhome.jsp文件所引用css/style.css和img/j2ee.png等文件分别位于 ${jar}/META-INF/resources/css/style.css和${jar}/META-INF/resources/img/j2ee.png目录下。

把生成的jar文件存放在 WEB-INF/lib/ 中,下面为一个运行示范图:

%5BUNSET%5D.png?imgmax=800

样式和图片等都可以正常访问。

有时候可能需要使用路径信息等,再看一个示范吧:/**

* 演示jarDemo

*

* @author yongboy

* @date 2011-1-16

* @version 1.0

*/

@WebServlet("/jarDemo")

public class DemoWebINFPagesServlet extends HttpServlet {

private static final long serialVersionUID = -1040850432869481349L;

private static final Log log = LogFactory

.getLog(DemoWebINFPagesServlet.class);

@SuppressWarnings("deprecation")

@Override

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

log.info("the /jarDemo is accessed now!");

log.info("getRealPath : " + request.getRealPath("/"));

log.info("ServletContext : getRealPath : "

+ getServletContext().getRealPath("/"));

log.info("getPathTranslated : " + request.getPathTranslated());

log.info("get jar's resource:");

InputStream is = getServletContext().getResourceAsStream(

"/jarfile/demo.txt");

log.info("the JAR/META-INF/resources/jarfile/demo.txt's content is :\n"

+ IOUtils.toString(is));

request.getRequestDispatcher("/WEB-INF/pages/notaccess.jsp");

}

}

输入命令行信息为:

[framework] 2011-01-03 11:45:16,664 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798292 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - the /jarDemo is accessed now!

[framework] 2011-01-03 11:45:16,664 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798292 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - getRealPath : /home/yongboy/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/d/

[framework] 2011-01-03 11:45:16,664 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798292 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - ServletContext : getRealPath : /home/yongboy/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/d/

[framework] 2011-01-03 11:45:16,665 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798293 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - getPathTranslated : null

[framework] 2011-01-03 11:45:16,665 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798293 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - get jar's resource:

[framework] 2011-01-03 11:45:16,665 - com.learn.servlet3.jardync.DemoWebINFPagesServlet -798293 [http-8080-exec-6] INFO  com.learn.servlet3.jardync.DemoWebINFPagesServlet  - the ${JAR}/META-INF/resources/jarfile/demo.txt's content is :

haha,the demo.s's content!

haha,haha,haha!

可以看到getRealPath("/")得到的是项目的根路径(可以参照JAR解压后的路径)。而request.getPathTranslated则因为是包含在jar文件中(规范中说包含在远程主机、数据库、JAR存档文件中,getPathTranslated都会返回null),则返回null。

包含在jar中的资源文件,一样可以使用getResourceAsStream获取到。

再来看看jar文件META-INF/resources目录下文件结构:css/style.css

img/j2ee.png

jarfile/demo.txt

jarpage/jarhome.jsp

jsp/h.jsp

jsp/helloWorld.jsp

很显然,就是一个小型站点目录结构。

每一个模块,建立一个WEB站点应用,使用ANT脚本自动打包成jar文件,拷贝到真正站点WEB-INF/lib下。

假设一个JAR文件包含一个具体的模块,那么模块的部署与装载将是十分方便的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值