在eclipse里创建的jsp和html不能在tomcat中手动启动问题,以及tomcat的三种部署方法

之前尝试过手动在tomcat下部署简单的只含有HelloServlet的动态web项目。配置有三种方法:
1.整个项目放在tomcat的webapps下。

2.修改sever.xml,添加 <Context docBase="绝对路径" path="/" reloadable="true">
path:浏览器访问时的路径名,设成/可以直接访问
http://localhost:8080/hello

3.在Catalina文件夹中创建aaa.xml,添加 <Context docBase="绝对路径" reloadable="true" > context的内容一定要注意注意再注意,后面有例子。
在配置了项目的web.xml文件和tomcat的Catalina文件夹中aaa.xml后。
可以实现通过访问http://localhost:8080/aaa/hello而运行HelloServlet,并输出Html页面。
访问http://localhost:8080/aaa/addHero.html可以访问project下,与WEB-INF平级的html和jsp。不要把html和jsp放在WEB-INF里,因为这个文件夹是受保护的,无法直接访问。

继续学习,在eclipse里创建动态web项目,通过eclipse里配置的tomcat,运行jsp和html都能成功。但是手动运行tomcat,并试图访问eclipse动态项目WEB-INF下的hello.html和hello.jsp都失败了,只有通过xml运行的HelloServlet能成功。但是把项目移动到tomcat的webapps又都能正常访问,这是为什么呢?

总结原因:其实tomcat没那么复杂,能在eclipse和webapps里运行说明文件本身没问题,就是路径错了。两个低级错误:
1.文件绝对路径错误,检查你的docbase,不要访问不存在文件的路径。如我的文件路径是/Users/yuqian/Eclipse-EE/d/web/addHero.html,绝对路径应为/Users/yuqian/Eclipse-EE/d/web/,但我写成了/Users/yuqian/Eclipse-ee/d/web/,访问了根本不存在的路径。自然http://localhost:8080/aaa/addHero.html 访问会失败。根本就不存在嘛。

2.检查context的拼写,由于我之前尝试的时候复制了tomcat里server的context,而server的context是这样的<Context docBase="j2ee" path="/j2ee" reloadable="true" source="org.eclipse.jst.jee.server:j2ee"/> 当我把context的docbase改为绝对路径,path删除。之后 由于source还没删除,导致不能访问。并且最后的>前面的/也一定要删除掉。否则访问失败。

虽然花费了很多时间,但是钻研tomcat源码也让我受益良多。无论是win还是os,放在websapp下或者使用xml,方法总是相通的,没有能访问servlet却无法访问html的,能在eclipse里手动tomcat却无法启动的道理。出现问题先自己找原因,多半就是自己拼写错了。

问题定位也很重要,早想通是context的问题,就会省出很多到处撒网排错的时间。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值