第一种:实现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);
}
}