Servlet是运行在java服务器中的小型Java程序。
作用:接收用户请求,并对请求作出处理,将处理结果相应给客户端。
Servlet是JavaWeb三大组件(Servlet、过滤器,监听器 )之一,它属于动态资源。Servlet的作用是处理请求,服务器(Tomcat等)会把接收到的请求交给Servlet来处理,在Servlet中通常要完成以下三步:接收请求、处理请求、完成响应。
举个栗子:客户端发出登陆请求,服务器通过请求路径映射到对应的Servlet,将请求交由Servlet来处理,Servlet需要由我们自己编写,实现一个Servlet接口可以继承 javax.servlet.http.HttpServlet类。

先看一个简单的Servlet样例
- public class HelloServlet extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter writer = resp.getWriter();
- writer.println("hello world!");
- }
-
- @Override
- public void init() throws ServletException {
- super.init();
- }
-
- @Override
- public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
- super.service(req, res);
- }
-
- @Override
- public void destroy() {
- super.destroy();
- }
- }
Servlet是单例的,对于具体的一个Servlet来说,无论多少个请求过来,都是同一个Servlet对象在处理,所以是存在线程安全问题的,所以我们不应该在Servlet类中随便创建成员变量,因为可能存在一个线程对这个变量进行写操作。
默认情况下,Servlet是在第一次请求的时候创建,可以在web.xml文件中配置load-on-startup参数,使Servlet在服务启动时创建,如:
- <servlet>
- <servlet-name>helloservlet-name>
- <servlet-class>com.llg.servlet.HelloServletservlet-class>
- <load-on-startup>0load-on-startup>
- servlet>