日常问题集锦
以java为例,其illegalstateexception该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向客户端(实际上是缓冲区)输出任何内容。
在一次响应commit之前,所有的内容输出都将写入servlet引擎的缓冲区(tomcat或weblogic的内容空间),而在commit之后,上一次response向缓冲区写入的内容,将清空。由于servlet在没有设置单线程的情况下(使用Single-Threaded Model,servlet实现SingleThreadModel接口,jsp使用<%@ page isThreadSafe=“false”%>),是多线程的,所以上面所说的缓冲区,都将是该response所属的线程私有的内存空间。有了这个概念,将可以分析碰到的关于servlet多线程的很多问题。如果不能确认response是否已经committed。可以调用response.isCommitted()来判断。导致这个错误最普遍的原因是,jsp有编译错误。web.xml中上次写错
<url-pattern>*do</url-pattern> 修改后
<url-pattern>*.do</url-pattern> 中间少了. 没有按正确规则书写后缀