servlet的三种创建

servlet有三种手动创建的方式:

第一种:实现Servlet接口

了解一下Servlet生命周期

A、在容器中创建一个Servlet对象 (放到容器中,如果容器中存在,不创建)

B、初使化Servlet(调用init方法)

C、调用service方法,服务用户的请求;

D、调用destroyed方法,销毁对象;

package cn.lanqiao.servlet;

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

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

public class Servlet6 implements Servlet {

	private ServletConfig config;

	// 1.创建servlet对象
	public Servlet6() {
		System.out.println("1 servlet对象创建。。。");
	}

	// 2.初始化servlet
	@Override
	public void init(ServletConfig conf) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("2,servlet初始化 了。。。。。。");
		this.config = conf;
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// System.out.println(res);
		// res.getWriter().write("调用service方法。。。");
		res.getOutputStream().write("hello".getBytes());
		System.out.println("3 service方法被调用,响应用户请求");
		// 通过servletconfig拿初始化参数
		// String name = config.getInitParameter("uname");
		// String upassword = config.getInitParameter("upassword");
		// System.out.println(name);
		// System.out.println(upassword);
		Enumeration<String> names = config.getInitParameterNames();
		while (names.hasMoreElements()) {
			String str = (String) names.nextElement();
			System.out.println(str + "---" + config.getInitParameter(str));

		}
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("4 销毁对象。。。。。");
	}

}

第二种:继承GenericServlet,实现里面的Service方法

package cn.lanqiao.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class Servlet2 extends GenericServlet {

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter pw = res.getWriter();
		pw.write("hello,servlet2,,,,,,,");
	}

}

第三种:继承HttpServlet,实现里面的doGet方法和doPost方法,一般我们都是用这个创建Servlet对象

package cn.lanqiao.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet5 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.getWriter().write("hello,servlet5...");
	}
}

以上三种手动创建Servlet对象的方法在发布的时候需要去配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>servletproject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>cn.lanqiao.servlet.Servlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
  </servlet-mapping>
  
  
</web-app>

但是我们使用直接创建一个Servlet的时候,会自动帮我们在web.xml中配置,对于新手还是使用第三种手动创建对象的方法好,这种直接创建的方法在以后的工作中使用可以提高效率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值