JavaWeb(一)——JavaWeb介绍、Tomcat服务器、HTTP协议
JavaWeb(二)——Maven的使用
Servlet简介
-
Servlet是sun公司提供的一门用于开发动态web资源的技术。
-
Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端,作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
开发一个Servlet程序需要完成两个步骤:
- 编写一个类,实现Serlet接口
- 把开发好java类部署到web服务器中
Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
①Web服务器根据请求的URL判断请求的是哪一个Servlet。找到对应的Servlert后,检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
Servlet接口实现类
-
Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。
-
HttpServlet能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。如果想要获取HTTP请求的参数,就必须将它强转为HttpServlet。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
-
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。
第一个Servlet程序
第一步:创建我们的Servlet类,继承HttpServlet,重写doGet()和doPost()方法
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应正文的类型
resp.setContentType("text/html");
//获取响应的输出流
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>HelloServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("HelloServlet!");
out.println("</body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//一般post方法的请求和响应都交给get方法处理
doGet(req, resp);
}
}
第二步:在web.xml中注册我们的Servlet程序,以及将我们的Servlet程序映射为一个对外可访问的路径
<!-- 注册Servlet -->
<servlet>
<!-- Servlet注册的名称 --><