JavaWeb三大组件之Servlet学习
平时直接用springmvc较多,都没怎么接触底层的Servlet,导致对一些基本的知识点了解都不够,所以今天专门的抽出时间来学习一下
带着问题出发,看下可以怎么玩
如何自定义一个Servlet
自定义的Serlvet如何工作
servlet的优先顺序怎么判定
servlet匹配是怎样的 (url-mapping…)
如何获取参数(get请求参数,post请求参数,上传文件)
如何返回数据(返回页面,返回文件,返回二进制)
请求头和返回头的设置
I. 基本知识点
1. 什么是Servlet
Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
接受请求
处理请求
完成响应
2. 怎么玩Servlet
一般来讲,创建一个自定义的Servlet有两个步骤,在web.xml中配置serverlt的声明;实现Servlet接口,实现自定义的Servlet逻辑
一个简单的case如下
web.xml中,添加配置
doc-servlet
com.yihui.study.DocServlet
0
doc-servlet
/study/*
实现自定义Servlet
public class DocServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
writer.append("这是一个自定义servlet")
.append("emoj==").flush();
System.out.println("hereher!!!!");
}
}
上面这个Servlet,实现了拦截 /study 下的所有请求, 然后返回一段文本,上面作为演示,具体的展开下面说明
3. Servlet接口说明
上面是直接继承了HttpServlet,可能没法完全的暴露一个Servlet的具体接口有哪些,以及它的生命周期是怎样的,接下来则直接针对源头进行说明
public interface Servlet {
// 初始化
public void init(ServletConfig config) throws ServletException;
// 获取配置信息
public ServletConfig getServletConfig();
// 处理请求
public void service(ServletRequest req, ServletResponse res)
throws ServletException, I