我把编译好的一个servlet的字节码文件放在tomcat的ROOT文件夹的WEB-INF下的classes文件夹下,web.xml的servlet配置中加入<loadon-startup>1</loadon-startup>,该servlet已经重写了init方法,在启动tomcat的时候初始化一次,为什么在第一次访问该servlet的时候,又初始化一次?求解。这样不是相当于
<loadon-startup>1</loadon-startup>没有起到作用了吗?
代码:
package com.zdj.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstSimpleServlet extends HttpServlet{ protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{ // response.setContentType("text/html"); PrintWriter out = response.getWriter(); // out.println("<HTML><TITLE>First servlet</TITLE><BODY>"); // out.println("<H2>This is your first servlet</H2>"); // out.println("</BODY></HTML>"); out.println("123wo shi zhangdengjie"); } @Override public void init() throws ServletException{ System.out.println("初始化"); } }
xml配置:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>FirstSimpleServlet</servlet-name> <servlet-class>com.zdj.servlet.FirstSimpleServlet</servlet-class> <loadon-startup>1</loadon-startup> </servlet> <servlet-mapping> <servlet-name>FirstSimpleServlet</servlet-name> <url-pattern>/servlet/FirstSimpleServlet</url-pattern> </servlet-mapping> </web-app>
<loadon-startup>1</loadon-startup>是说加载顺序 ,是不是启动之后就加载。你说加载两次,是指init调用了两次吗?
######放在tomcat的ROOT文件夹的WEB-INF下的classes文件夹。 你单独发布好不好######回复 @一只小桃子 : 初始化的时候没看到有销毁,在myeclipse中的servlet初始化只有一次,不知道为啥######你把distroy也重写就知道了######对,是init方法调用了两次,tomcat启动一次,首次访问该servlet一次,之后再访问就没有调用了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。