Servlet的继承关系及几种实现方法

Dynamic web module version版本:2.5

Servlet的继承关系:

Servlet的继承关系及几种实现方法_第1张图片
Servlet的继承关系及几种实现方法_第2张图片

实现方法:

方式一:
  • 1、新建普通java类
  • 2、继承HttpServlet类
  • 3、重写service()方法
  • 4、配置web.xml配置项(WebContent/WEB-INF目录下的web.xml)
public class Servlet01 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("Servlet01...");
	}
	
	/**
	 * 该方法在web.xml配置项中有初始化参数是需要重写. 
	 * 可以接收web.xml配置项
	 * 中的初始化参数
	 */
	@Override
	public void init(ServletConfig config) throws ServletException {
		// 得到初始化参数
		String encode = config.getInitParameter("encode");
		System.out.println("编码:" + encode);
	}
	
}

web.xml配置项写法

 


   
  servlet01
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
  
  
  
  	servlet01 
  	com.shsxt.servlet.Servlet01 
  	
  	
  	
  		encode
  		UTF-8
  	
  	
  	2
  	
  
  
  
  
  	servlet01 
  	/ser01 
  	
  	
  	
  	*.html
  	
  	/test/*
  	
  	/*
  	
  

web.xml配置可能出现的错误:
1.The markup in the document following the root element must be well-formed.
解决方法:
web.xml中的标签要写在中间。

2.严重: Allocate exception for servlet servlet01
java.lang.ClassNotFoundException: com.shsxt.servlet.Servlet01
修改servlet-class对应的项目路径及名称
在这里插入图片描述
3.xml文件eclipse没有提示:
文件打开格式不对, 右键–>open with -->XML Editor 打开;
左下角换成Source就是xml格式打开,有提示功能.
Servlet的继承关系及几种实现方法_第3张图片

方式二:
  • 1、新建普通java类
  • 2、继承GenericServlet类
  • 3、实现service()方法
  • 4、配置web.xml配置项(WebContent/WEB-INF目录下的web.xml>>web.xml文件如同方式一)
public class Servlet02 extends GenericServlet {
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		System.out.println("Servlet02...");
	}
}
方式三:
  • 1、新建普通java类
  • 2、实现Servlet接口
  • 3、实现接口中方法
  • 4、配置web.xml配置项(WebContent/WEB-INF目录下的web.xml>>web.xml文件如同方式一)
public class Servlet03 implements Servlet {
	/**
	 * 系统方法,由系统调用,初始化方法,当servlet被实例化时调用,只会执行一次
	 */
	@Override
	public void init(ServletConfig config) throws ServletException {
		System.out.println("Servlet03 出生了...");
	}

	@Override
	public ServletConfig getServletConfig() {
		return null;
	}

	/**
	 * 系统方法,由系统调用,服务方法,当servlet被访问时调用,可以被执行多次
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		System.out.println("Servlet03...");
	}

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

	/**
	 * 系统方法,由系统调用,销毁方法,当servlet被销毁时调用,只执行一次(服务器正常关闭才会执行)
	 */
	@Override
	public void destroy() {
		System.out.println("Servlet03 go die了...");
	}
}
方式四:
  • 1、新建普通java类
  • 2、继承HttpServlet类
  • 3、重写doGet()和doPost()方法
  • 4、配置web.xml配置项(WebContent/WEB-INF目录下的web.xml)
public class Servlet04 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Servlet04... GET...");
		doPost(req, resp);//调用doPost方法,这样不用重复写代码
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Servlet04... POST...");
		
		// 代码全写在post中
	}
}

你可能感兴趣的:(Servlet)