自定义基本的GenericServlet及总结

总结:我刚学这章时,它把service()方法用abstract抽象了,然后我突然忘了抽象是怎么用了哈,然后百度查了查,想起来它是父类去定义抽象方法,专门让子类来实现,抽象方法没有方法体。然后在service()方法里调用getServletConfig()方法去获取config对象时,它用了个this.getServletConfig();我又忘了this关键字的用法,然后回忆起来,在一个类的内部,成员方法之间的互相调用时也可以使用“this.方法名(参数)”来进行引用,只是所有这样的引用中this都可以省略,哈哈忘了这么多。最后我就基本定义了GenericServlet,并且让它实现了ServletConfig接口,以便在service()方法中可以用this关键字直接去调用ServletConfig的方法。

代码附上:

package com.bjpowernode.servlets;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

//缺省适配器设计模式
public abstract class GenericServlet implements Servlet, ServletConfig {

	private ServletConfig config;

	@Override
	public void init(ServletConfig config) throws ServletException {
		this.config = config;// 接受实参
		// System.out.println(config);
	}

	@Override
	public ServletConfig getServletConfig() {

		return config;
	}

	// 抽象方法,专门让子类来实现
	@Override
	public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

	@Override
	public String getServletInfo() {
		
		return null;
	}

	@Override
	public void destroy() {

	}

	@Override
	public String getInitParameter(String name) {
		return config.getInitParameter(name);
	}

	@Override
	public Enumeration<String> getInitParameterNames() {
		return config.getInitParameterNames();
	}

	@Override
	public ServletContext getServletContext() {

		return config.getServletContext();
	}

	@Override
	public String getServletName() {

		return config.getServletName();
	}
}

 

package com.bjpowernode.servlets;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SomeServlet extends GenericServlet {

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		System.out.println("执行SomeServlet的service()方法");
	/*	ServletConfig sc = this.getServletConfig();
		String param = sc.getInitParameter("company");
		System.out.println(param);*/
		String param = this.getInitParameter("company");
		String servletname = this.getServletName();
		System.out.println(param);
		System.out.println(servletname);
	}
}

 

posted @ 2019-07-22 12:13  小帅学java  阅读(11)  评论(0)    收藏  举报