閱讀841 返回首頁    go 阿裏雲 go 技術社區[雲棲]


張誌宇 SERVELET JSP學習講義-07_SERVLET為什麼有2個init方法

package com.zzk.cn;
import java.io.IOException;
import java.io.PrintWriter;

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 TestInitServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=GBK");     
		PrintWriter out = resp.getWriter();
		
		out.println(this.getServletConfig().getServletName());

		// out.println(this.getServletConfig().getInitParameter("name"));

//		java.util.Enumeration params = this.getServletConfig()
//				.getInitParameterNames();   
//		for (; params.hasMoreElements();) {
//			String name = params.nextElement().toString();
//			String value = this.getServletConfig().getInitParameter(name);
//			value = new String(value.getBytes("iso8859-1"),"GBK");
//			out.println(value);
//		}
		out.close();  
	}
}

然後web.xml這麼配置:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="https://java.sun.com/xml/ns/javaee"
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
                      https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">  


    <servlet>
      <servlet-name>Myfirstservlet</servlet-name>
      <servlet-class>com.zzk.cn.HelloWorldServlet</servlet-class>
    </servlet>
    

    <servlet-mapping>
        <servlet-name>Myfirstservlet</servlet-name>
        <url-pattern>/HelloWorldServlet</url-pattern>
    </servlet-mapping>
    
	
	    <servlet>
      <servlet-name>TestLifeCycleServlet</servlet-name>
      <servlet-class>com.zzk.cn.TestLifeCycleServlet</servlet-class>
    </servlet>
    

    <servlet-mapping>
        <servlet-name>TestLifeCycleServlet</servlet-name>
        <url-pattern>/TestLifeCycleServlet</url-pattern>
    </servlet-mapping>
	
	
		    <servlet>
      <servlet-name>TestInitServlet</servlet-name>
      <servlet-class>com.zzk.cn.TestInitServlet</servlet-class>
    </servlet>
    

    <servlet-mapping>
        <servlet-name>TestInitServlet</servlet-name>
        <url-pattern>/TestInitServlet</url-pattern>
    </servlet-mapping>

</web-app>


運行tomcat,在tomcat頁麵中顯示的是

TestInitServlet 

這裏輸出的是
      <servlet-name>TestInitServlet</servlet-name>



繼續編輯

package com.zzk.cn;
import java.io.IOException;
import java.io.PrintWriter;

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 TestInitServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=GBK");     
		PrintWriter out = resp.getWriter();
		
		out.println(this.getServletConfig().getServletName());

		out.println(this.getServletConfig().getInitParameter("name"));
		out.println(this.getServletConfig().getInitParameter("gender"));

//		java.util.Enumeration params = this.getServletConfig()
//				.getInitParameterNames();   
//		for (; params.hasMoreElements();) {
//			String name = params.nextElement().toString();
//			String value = this.getServletConfig().getInitParameter(name);
//			value = new String(value.getBytes("iso8859-1"),"GBK");
//			out.println(value);
//		}
		out.close();  
	}
}

web.xml修改為英文(中文有亂碼問題)

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="https://java.sun.com/xml/ns/javaee"
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
                      https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">  


    <servlet>
      <servlet-name>Myfirstservlet</servlet-name>
      <servlet-class>com.zzk.cn.HelloWorldServlet</servlet-class>
    </servlet>
    

    <servlet-mapping>
        <servlet-name>Myfirstservlet</servlet-name>
        <url-pattern>/HelloWorldServlet</url-pattern>
    </servlet-mapping>
    
	
	    <servlet>
      <servlet-name>TestLifeCycleServlet</servlet-name>
      <servlet-class>com.zzk.cn.TestLifeCycleServlet</servlet-class>
    </servlet>
    

    <servlet-mapping>
        <servlet-name>TestLifeCycleServlet</servlet-name>
        <url-pattern>/TestLifeCycleServlet</url-pattern>
    </servlet-mapping>
	
	
		    <servlet>
      <servlet-name>TestInitServlet</servlet-name>
      <servlet-class>com.zzk.cn.TestInitServlet</servlet-class>
      <init-param>
	      <param-name>name</param-name>
		  <param-value>Tom</param-value>
	  </init-param>
	  
	       <init-param>
	      <param-name>gender</param-name>
		  <param-value>man</param-value>
	  </init-param>
	</servlet>
    

    <servlet-mapping>
        <servlet-name>TestInitServlet</servlet-name>
        <url-pattern>/TestInitServlet</url-pattern>
    </servlet-mapping>

</web-app>

輸出:

TestInitServlet Tom man 


繼續修改:循環輸出:

package com.zzk.cn;
import java.io.IOException;
import java.io.PrintWriter;

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 TestInitServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=GBK");     
		PrintWriter out = resp.getWriter();
		
		out.println(this.getServletConfig().getServletName());

		out.println(this.getServletConfig().getInitParameter("name"));
		out.println(this.getServletConfig().getInitParameter("gender"));

		java.util.Enumeration params = this.getServletConfig()
				.getInitParameterNames();   
		for (; params.hasMoreElements();) {
			String name = params.nextElement().toString();
			String value = this.getServletConfig().getInitParameter(name);
			value = new String(value.getBytes("iso8859-1"),"GBK");
			out.println(value);
		}
		out.close();  
	}
}

輸出結果:

TestInitServlet Tom man Tom man 


為什麼擁有兩個init()

³init(servletconfig config)
²this.config = config
²init();
²重寫必須得super.init(config)
±不然不能使用this.getServletConfig
±當然也就不能用getInitParameter();
³我們隻需要重寫init();


防止程序員調用第一個,而忘記使用super




最後更新:2017-04-02 22:16:10

  上一篇:go ASP.NET的Request對象
  下一篇:go asp.net主題文件(css+.skin)的使用