tomcat——work目录

问题现象:

jsp报错JspException:Unable to find a value for “xxx” in object of class “xxx” using operator “.” (null)

很明显是因为jsp中引用的属性值,无法获取,所以报错。但是我打开jsp文件,在jsp文件却搜索不到这个属性。很奇怪,不是吗?

问题原理

tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译(从 work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp页面会被编译成应该是servlet文件,下次再来 访问时,就直接运行servlet类就可以向客户端反应响应页面了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户),**编译后的文件都会存储在work目录下。**而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。所以当清空了work目录后,该过程将会从新来过。
 tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,我建议在修改jsp页面后立即清除work目录里的文件
在这里插入图片描述

临时解决方法:

**有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。**

终极解决方法

一、

在安装的tomcat路径下创建独立配置文件。
创建一文件:Tomcat\conf\Catalina\localhost\testapp.xml
内容为:


重启Tomcat

二、

直接在tomcat 的配置文件conf/server.xml中添加内容如下:


注意是在标签下添加;
重启Tomcat

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值