创建Servlet的三种方式

第一种:实现Servlet接口 ,重写五个抽象方法(这种方式需要在web.xml中配置)

package com.briup.servlet;

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

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

/**
 * Servelt的第一种创建方式(这种方式,需要在web.xml中配置) 实现Servlet接口 Servlet接口:五个抽象方法()
 */
public class ServletTest1 implements Servlet {
	/**
	 * destroy():服务器关闭,重新加载
	 */
	@Override
	public void destroy() {}

	/**
	 * getServletConfig():当前Servlet的配置信息
	 */
	@Override
	public ServletConfig getServletConfig() {
		return null;
	}

	/**
	 * getServletInfo():用户可以重写,存放Servlet的自定义信息
	 */
	@Override
	public String getServletInfo() {
		return null;
	}

	/**
	 * init():Servlet被创建的时候,调用进行初始化信息
	 */
	@Override
	public void init(ServletConfig arg0) throws ServletException {}

	/**
	 * service():Servlet被调用时,调用service()
	 */
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// 获取输出流
		PrintWriter out = arg1.getWriter();
		// 指定输出文件.txt
		// arg1.setContentType("text/plain,charset=gbk");改乱码的第一种方式
		// arg1.setCharacterEncoding("UTF-8");改乱码的第二种方式
		arg1.setContentType("text/plain");
		out.println("hello ServletTest1\r\n");
		out.println("servlet实现的第一种方式,实现Servlet接口,重写五个抽象方法");
	}

}

在web.xml中的配置

 <servlet>
    <servlet-name>ServletTest1</servlet-name>
    <servlet-class>com.briup.servlet.ServletTest1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletTest1</servlet-name>
    <url-pattern>/ServletTest1</url-pattern>
  </servlet-mapping>

第二种方式:继承GenericServlet,重写service方法(这种方式需要在web.xml中配置)

package com.briup.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;

/**
 * Servlet创建第二种方式:继承 重写一个方法
 * 
 */
public class ServletTest2 extends GenericServlet {

	/**
	 * Servlet调用时执行
	 * */
	@Override
	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
		//指定文件类型
		response.setContentType("text/html");
		//获取输出流
		PrintWriter out = response.getWriter();
		//写html文件到页面
		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body>");
			out.println("<h1>hello servlet2</h1>");
			out.println("<h1>ervlet实现的第二种方式,实现Servlet接口,重写一个抽象方法</h1>");
		out.println("</body>");
		out.println("</html>");
	}

}

在web.xml中的配置

 <servlet>
	<servlet-name>ServletTest2</servlet-name>
	<servlet-class>com.briup.servlet.ServletTest2</servlet-class>
</servlet>

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

第三种方式:新建servlet类型文件,通过注解映射,不需要配置web.xml

package com.briup.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletTest3
 */
@WebServlet("/ServletTest3")
public class ServletTest3 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		//设置文件类型
		arg1.setContentType("image/png");
		//获取字节输出流
		ServletOutputStream sos = arg1.getOutputStream();
		//使用文件绝对路径访问
		File file = new File("C:\\Users\\Public\\Pictures\\数电.png");
		
		FileInputStream fis=new FileInputStream(file);
		
		byte[] b=new byte[1024];
		int len=-1;
		while((len=fis.read())!=-1) {
			sos.write(b,0,len);
		}
		sos.flush();
		sos.close();
		fis.close();
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		super.doGet(req, resp);
	}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值