2、通過繼承GenericServlet開發Servlet
說明:通過繼承GenericServlet開發Servlet,只需要重寫service方法,相對實現Servlet介面開發servlet需要重寫5個方法來說比較簡單。
HelloGeneric 繼承自GenericServlet,要開發這樣的servlet需要重寫service方法,位於classes檔案夾下
package test;
import javax.servlet.GenericServlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
public class HelloGeneric extends GenericServlet{
//重寫service方法
public void service(ServletRequest req,ServletResponse res){
try{
PrintWriter pw = res.getWriter();
pw.println("hello,world!generic");
}
catch (IOException e){
e.printStackTrace();
}
}
}
編譯通過後產生test檔案夾裡面含有HelloGeneric.class檔案
web.xml檔案代碼如下
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellogeneric</servlet-name>
<!--指明Servlet的路徑,(包名+類名)-->
<servlet-class>test.HelloGeneric</servlet-class>
</servlet>
<!-- Define the Manager Servlet Mapping -->
<servlet-mapping>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellogeneric</servlet-name>
<!--在瀏覽器中輸入訪問Servlet的url,此處的名字是任意的-->
<url-pattern>/hellogeneric</url-pattern>
</servlet-mapping>
</web-app>
啟動tomcat伺服器,在瀏覽器地址欄中輸入http://localhost:8989/myWebSite/hellogeneric
在瀏覽器中就會出現hello,world!generic
3.通過繼承HttpServlet去開發servlet
需要重寫doGet(),doPost()方法這是目前開發servlet用的最多的一種
表單提交資料有兩種方式:get和post方式
兩種資料提交方式的區別:
①、從安全性看get<post,get提交的資料會在瀏覽器的地址欄裡顯示
②、get提交的資料從提交的內容來看,get提交的資料不能大於2k,post不受限制
但實際編程中建議不要大於64k
③、從響應速度來看:get>post,get要求伺服器立即處理請求,而post請求可能形成
一個隊列請求
下面是一個例子web.xml代碼如下,
需要說明的是多個不同的servlet在web.xml檔案中做映射配置時servlet-name應該有所不同,以示區別否則會出現無法訪問的錯誤
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellogeneric</servlet-name>
<!--指明Servlet的路徑,(包名+類名)-->
<servlet-class>test.HelloGeneric</servlet-class>
</servlet>
<!-- Define the Manager Servlet Mapping -->
<servlet-mapping>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellogeneric</servlet-name>
<!--在瀏覽器中輸入訪問Servlet的url,此處的名字是任意的-->
<url-pattern>/hellogeneric</url-pattern>
</servlet-mapping>
<servlet>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellohttp</servlet-name>
<!--指明Servlet的路徑,(包名+類名)-->
<servlet-class>test.HelloHttp</servlet-class>
</servlet>
<!-- Define the Manager Servlet Mapping -->
<servlet-mapping>
<!--給你的Servlet取名字,此處的名字是任意的-->
<servlet-name>hellohttp</servlet-name>
<!--在瀏覽器中輸入訪問Servlet的url,此處的名字是任意的-->
<url-pattern>/hellohttp</url-pattern>
</servlet-mapping>
</web-app>
HelloHttp.java代碼如下
package test;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
public class HelloHttp extends HttpServlet{
//處理get請求
//req-->代表用戶端請求資訊
//res-->代表格服務器端向用戶端返回的資訊
public void doGet(HttpServletRequest req,HttpServletResponse res){
//商務邏輯
try{
PrintWriter pw = res.getWriter();
pw.println("Hello,HttpServlet");
}catch (IOException e){
e.printStackTrace();
}
}
//處理post請求
//req-->代表用戶端請求資訊
//res-->代表格服務器端向用戶端返回的資訊
public void doPost(HttpServletRequest req,HttpServletResponse res){
doGet(req,res);
}
}
編譯後,啟動tomca伺服器在地址欄中輸入http://localhost:8080/myWebSite/hellohttp
會顯示Hello,HttpServlet
</web-app>