概述:
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
但是使Servlet能夠處理以上請求的前提條件是Servlet對象要被佈置在Servlet容器當中,Tomcat服務器就是一種Servlet容器。Servlet的使用和JSP不同,它需要web.xml文件的配置。當一個客戶端發出HTTP請求時,服務器會根據配置文件中的配置信息將該請求的信息發送給相對應的Servlet進行處理。
Servlet就是一段由java編寫的程序,由服務器來維護。爲了方便服務器的處理,Servlet需要遵循一定的結構規範。通常我們所說的Servlet就是一個實現了HttpServlet抽象類的類的實例。
下面寫個建單的servlet試一下:
servlet運行環境:servlet服務器tomcat9,jdk8,編輯器。
servlet程序在web服務器中運行需要指定的目錄結構(要遵循一定的規範):
在tomcat的webapps目錄下新建目錄結構SimpleServlet/WEB-INF/classes,展開如下:
SimpleServlet
|-WEB-INF
| |-classes
| | |-ServTest.class
| |-web.xml
|-index.jsp
|-ServTest.java
index.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<html>
<head>
<title>Servlet</title>
</head>
<body>
<center>
<form action="MyServlet" name="form" method="post">
Your Name:<input type="text" name="USERNAME"><br>
<input type="submit" value="SUBMIT"></form>
</center>
</body>
</html>
ServTest
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class ServTest extends HttpServlet {
//handle post request
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
String name = request.getParameter("USERNAME");
out.println("<html lang='en'>");
out.println("");
out.println("<head>");
out.println("<meta charset='UTF-8' />");
out.println("<title>Servlet</title>");
out.println("<title><%=request.getServletContext().getServerInfo() %></title>");
out.println("<link href='/SimpleServlet/favicon.png' rel='shortcut icon' type='image/x-icon' />");
out.println("</head>");
out.println("<body>");
out.println("Your Name : <b><font color='red'>" + name + "</font></b>");
out.println("</body>");
out.println("<html>");
}
//destroy
public void destroy() {}
}
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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>ServletHandle</servlet-name>
<servlet-class>ServTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletHandle</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
在web容器中java源文件是沒有用的,需要變異成class文件
命令:javac -classpath D:\工具軟件\apache-tomcat-9.0.8\lib\servlet-api.jar -d WEB-INF/classes ServTest.java
-classpath:指明編譯需要的庫(就是jar)
-d:指明編譯後生成的class文件存放的地址
最後是需要編譯的java源文件。
這樣就可以tomcat啓動起來,體驗一下servlet。
參考文件:https://blog.csdn.net/a153375250/article/details/50916428
https://blog.csdn.net/tiger925/article/details/8615406