servlet常驻内存
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/
public class HelloWorldExample extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("LOVE,LIUSIJING!");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
doGet(request,response);
}
}
问题:我重新编译了一个servlet源文件,其他配置都正确,因为在编译前,能正确显示, 我改动了源代码:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/
public class HelloWorldExample extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("LOVE,LIUSIJING very very !!!!!!!!"); //改动的地方,但是重编译后,去访问不显示这个结果,显示以
//前的LOVE,LIUSIJING!
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
doGet(request,response);
}
}
编译成功后再访问这个servlet,会发现结果依然和上次的结果一样LOVE,LIUSIJING!
,而不是想要得到的编译后的LOVE,LIUSIJING very very !!!!!!!!"
这是因为:servlet是在tomcat启动的时候加载的(注:这是书上说的,我也不知道是在启动的时候还是在第一调用它就常驻在内存里),并且常驻在内存,除非主动调用destroy()或者tomacat关闭时在释放,所以我们新编译的文件不会加载,运行的是第一次加载进内存的的那个servlet,
解决办法:重启tomcat,其他办法,望各位留言,