目录
一、什么是Servlet?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet是接口和实现类,Servlet有五个抽象方法,也是规范
1-void init(ServletConfig config)初始化配置
2-ServletConfig getServletConfig()获得配置信息
3-String getServletInfo()获取Servlet文本化信息
4-void service(ServletRquest request,ServletResponse response) 负责处理请求,给出响应(核心方法)
5-void destroy()回收资源
除此之外,servlet的类和接口关系还可以用下图来表示
servlet的编程接口则可以用此图来表示
二、Servlet又是怎么工作的呢?
每一个servlet只会创建一个实例对象,对应每一次浏览器的请求,服务器就会产生一个线程,调用service方法,重新创建新的对应的request和response对象。
对于servlet的单线程和多线程来处理请求,我们可以用下面这张图来理解一下
服务器对容器发出请求,容器解析以后,就会开始创建对象,初始化,调用service方法,然后返回响应信息,服务器得到响应以后,容器又会调用销毁方法销毁服务。
三、servlet的生命周期
servlet服务有一个完整的生命周期,就像人从受精到死亡,servlet从装载服务到销毁服务则是一次完整的生命周期,接下来给大家看两张图可以便于更好的理解。
四、自己写一个简单的servlet服务
明白了原理以后,我们应当来尝试一个自己写一个简单的servlet服务,代码使用的是注解来搭建服务,没有选择配置。那么让我们来看看怎么写一个简单的servlet服务吧。
1.首先我们要创建一个servlet项目,这里使用的sts作为环境,在file->new->other->web->Dynamic Web Project,然后填写相关信息即可,最后不要忘记要生成xml文件。
2.在创建好了项目之后,我们在项目下面的Java Resources文件下的src文件下创建一个包,然后再包中生成一个class,如图
3.然后我们要注解一个web服务@WebServlet("/demo")
4.写一个继承HttpServlet的web服务
5.通过HttpServlet的两个核心方法,doGet(HttpServletRequest request, HttpServletResponse response)和doPost(HttpServletRequest request, HttpServletResponse response)来完成输出。
6.接下来启动服务即可
那么下面给出源码给大家借鉴
package majie;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demo")
public class demo extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//System.out.println("haha");
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html;charset=UTF-8");//控制格式输出
PrintWriter out=response.getWriter();
out.println("你好,外星人-网页");
System.out.println("你好,外星人-控制台");
}
}
下面是运行的结果,分别是在控制台和终端的输出。
当然,如果你的网页输出显示的是乱码,那要调整一下网页编译信息的格式和服务器传输信息到网页的格式,都使用utf-8的格式,上述代码中
response.setContentType("text/html;charset=UTF-8");//控制格式输出
就是控制输出格式的作用。
好了,这次大概就是这么多的内容,下次接着来,学习路上,诸君共勉。