Servlet的一些疑问。(tomcat,JAVA)
今天视频里的老师说,Servlet在服务器在被访问的时候开始创建,创建完成之后,就一直保留在服务器内,直到服务器关闭。
而且当时,他用代码做了测试,我也发现情况确实如他所说。在开始启动tomcat的时候,他创建的那个继承自Servlet的类的init方法并没有被调用。
但是我在自己的机器上进行配置的时候,却没法观察到他的那种效果。
这是我自己的继承自HttpServlet的类,我在init方法,destory方法,构造函数中,都加入了输出语句。
但是我在启动tomcat,访问对应的服务器的时候,这些方法里面的输出语句貌似都没反应,没有任何的信息输出在控制台上。
package cn.dzr;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet2 extends HttpServlet
{
private static final long serialVersionUID = 1L;
public MyServlet2()
{
super();
}
@Override
public void destroy()
{
super.destroy();
System.out.println("服务器终止...");
}
@Override
public void init(ServletConfig config) throws ServletException
{
super.init(config);
System.out.println("服务器启动.....");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("doGet\n\n\n\n\n");
response.getOutputStream().write("Hello,Whai is it!".getBytes());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request,response);
}
}
C:/Program Files/Java/jdk1.7.0_21/bin/../jre/lib/amd64;
C:\Program Files\Java\jdk1.7.0_21\bin;
C:\Program Files\Java\jdk1.7.0_21\jre\bin;
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
D:\eclipse;;.
在Eclipse下启动tomcat的时候,开始会出来这么一大段信息,究竟是什么意思呢。这些路径有何意义呢?
还有:
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:aaaWebProject3d' did not find a matching property.
这个警告有办法解决么?
[解决办法]
你看的教程是以前的吧。WEB服务器在开始就会启动一个Servlet,之后,你新建的Servlet对象会在后台完成,然后将值穿给你Servlet,所以那些初始化信息就无法获取。程序只会对你的doGet和doPost方法里面的进行操作。
你可以试下看。
浏览器先连接web服务器,接着web服务器会根据浏览器的传递的信息去找到对应的Servlet,然后将数据返回给浏览器。