张志宇 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="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_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="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_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




目录
相关文章
|
12月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
242 0
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
113 1
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
232 0
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
127 0
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
262 12
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
268 10