JavaWeb篇_08——Servlet技術(shù)以及第一個(gè)Servlet案例
Servlet技術(shù)
Web開發(fā)歷史回顧
CGI
公共網(wǎng)關(guān)接口(Common Gateway Interface,CGI)是Web 服務(wù)器運(yùn)行時(shí)外部程序的規(guī)范。
CGI缺點(diǎn)
- 以進(jìn)程方式運(yùn)行,對每一個(gè)客戶端的請求都要啟動一個(gè)進(jìn)程來運(yùn)行程序,導(dǎo)致用戶數(shù)目增加時(shí),服務(wù)器端資源被大量占用。
- 由于對操作系統(tǒng)和進(jìn)程的不深刻理解,使得開發(fā)人員開發(fā)的CGI程序經(jīng)常遇到莫名其妙的錯(cuò)誤。
- 不同的CGI之間不能共享資源
FastCGI
FastCGI是對CGI模式的一個(gè)改進(jìn),采用了Pooling技術(shù),一定程度上改善了性能,但是由于仍然是基于進(jìn)程運(yùn)行的所以并沒有從根本上解決問題。
Servlet簡介
Servlet是Server Applet的簡稱,稱為服務(wù)端小程序,是JavaEE平臺下的技術(shù)標(biāo)準(zhǔn),基于Java語言編寫的服務(wù)端程序。 Web 容器或應(yīng)用服務(wù)器實(shí)現(xiàn)了Servlet標(biāo)準(zhǔn)所以Servlet需要運(yùn)行在Web容器或應(yīng)用服務(wù)器中。Servlet主要功能在于能夠在服務(wù)器中執(zhí)行并生成數(shù)據(jù)。
Servlet技術(shù)特點(diǎn)
Servlet在應(yīng)用程序中的位置
創(chuàng)建第一個(gè)Servlet案例
Servlet版本:Servlet4.0
創(chuàng)建Servlet
package com.itbaizhan.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
PrintWriter pw = response.getWriter();
pw.println("<!DOCTYPE html>");
pw.println("<html lang=en>");
pw.println("<head>");
pw.println("<meta charset=UTF-8>");
pw.println("<title>Document</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<font color=blue>HelloWorld</font>");
pw.println("</body>");
pw.println("</html>");
pw.flush();
pw.close();
}
}
編譯Servlet
D:\>javac -classpath "D:\apache-tomcat-9.0.55\lib\servlet-api.jar" HelloWorld.java
創(chuàng)建web.xml
什么是web.xml
Web項(xiàng)目的部署描述文件,是JavaWeb工程的配置文件,通過web.xml文件可以配置servlet、filter等技術(shù)。Tomcat啟動時(shí)會先解析該配置文件獲取項(xiàng)目的配置信息。
web.xml文件中的頭信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
在web.xml文件中配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.itbaizhan.servlet.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloworld.do</url-pattern>
</servlet-mapping>
</web-app>
浙公網(wǎng)安備 33010602011771號