導航:首頁 > 文件教程 > servlet30教程

servlet30教程

發布時間:2023-04-29 05:01:29

java中的Servlet的定義,Servlet的具體用途

Servlet是一個實現了Servlet介面的類,一個與訪問協議和平台無關的、運行在Servlet容器中的Java程序

針對Servlet實現技術,SUN公司提供了一套標準的Java Servlet API以便於更快速、規范地開發Servlet程序。這套Servlet API中,最重要的兩個軟體包是:javax.servlet、javax.servlet.http。

javax.servlet是一個與通信協議無關的通用軟體包;javax.servlet.http是一個支持HTTP訪問協議的軟體包,這兩個軟體包的同時存在,使得Servlet API能支持任何協議的請求/響應。

在javax.servle中,包含著一套常用介面,負責承擔指定的任務。下表中列出了常用的類和介面:


javax.servlet軟體包:

javax.servlet包中定義了與通信協議無關的介面和類。

常用介面:

RequestDispatcher、Servlet、ServletConfig、ServletContext、ServletRequest、ServletResponse。

常用類:

GenericServlet、ServletInputStream、ServletOutputStream。

1、RequestDispatcher介面

public interface RequestDispatcher;

資源調度器介面,用於定義一個在伺服器內部直接實現資源轉發的對象。

RequestDispatcher對象由Servlet容器創建,用於封裝並調度由一個特定的URL定義的伺服器資源。

(1)請求傳遞方法

public void forward(ServletRequest request,

ServletReponse response) throws ServletException,IOException

從一個Servlet向伺服器上的另一個資源傳遞請求。

將請求轉發給其他資源時,將由被調用的資源負責對請求作出響應,而原先Servlet的執行則終止。

public void include(ServletRequest request,

ServletResponse response) throws ServletException,IOException

從一個Servlet向伺服器上的另一個資源傳遞請求。

將請求轉發給其他資源時,被調用的Servlet對該請求作出的響應將並入原先的響應對象中,原先的Servlet還可以繼續輸出響應消息。

2、Servlet介面

public interface Servlet;

開發一個Servlet需要實現的基礎介面。

介面中定義了5個方法:

init():Servlet初始化方法,通過init()方法可以獲得容器創建的ServletConfig對象

service():請求處理方法

destroy():Servlet實例銷毀方法

getServletConfig():獲取ServletConfig配置對象方法

getServletInfo():獲取Servlet相關信息方法

(1)初始化方法

public void init(ServletConfig config) throws ServletException

Servlet容器會在Servlet實例化之後,調用init方法對Servlet對象進行初始化,該方法由Servlet容器順序調用,無需Servlet自身考慮何時執行。

(2)服務方法

public void service(ServletRequest request,

ServletResponse response) throws ServletException,IOException

當Servlet容器接收到客戶請求時,調用service方法響應客戶請求,service方法在Servlet實例化、初始化之後被調用,並且可以被多次調用。

(3)銷毀方法

public void destroy()

當Servlet實例從伺服器中移除或服務停止時,Servlet容器調用destroy方法銷毀Servlet實例。

(4)獲取Servlet配置對象方法

public ServletConfig getServletConfig()

獲取一個由Servlet容器創建的ServletConfig配置對象,這個對象常常用在Servlet初始化方法中,將初始化參數封裝在ServletConfig對象中,然後傳遞給Servlet。

(5)獲取Servlet相關信息方法

public String getServletInfo()

獲取關於Servlet的一些相關信息,返回的字元串是純文本格式而不帶有任何標記(例如:HTML、XML等)。

3、ServletConfig介面

public interface ServletConfig;

Servlet配置信息介面,在Servlet初始化時,Servlet容器將Servlet初始化參數封裝在ServletConfig對象中,並傳遞給Servlet,一個Servlet實例只有一個ServletConfig對象。

介面中,只定義了4個方法:

getInitParameter():獲取Servlet指定初始化參數的值

getInitParameterNames():獲取Servlet所有初始化參數名稱

getServletContext():獲取Servlet容器為WEB應用創建的Servlet上下文環境對象ServletContext

getServletName():獲取Servlet名稱

(1)獲取初始化參數方法

public String getInitParameter(String name)

根據初始化參數名稱,獲取Servlet指定初始化參數的值,如果指定的參數不存在,返回空值null。

public Enumeration getInitParameterNames()

獲取Servlet所有初始化參數名稱,如果Servlet沒有初始化參數,返回一個空列表。

(2)獲取Servlet上下文環境方法

public ServletContext getServletContext()

獲取Servlet容器為WEB應用創建的Servlet上下文環境對象ServletContext,WEB伺服器啟動的時候,在載入WEB應用時,為每個載入的WEB應用創建一個代表WEB應用Servlet上下文環境對象。

(3)獲取Servlet名稱方法

public String getServletName()

獲取正在訪問的這個Servlet的名稱。

以上就是Servlet相關問題的解答,更多關於Java Web方面的問題可以看下這個詳細的視頻教程網頁鏈接,希望我的回答能幫到你。

② 怎麼在MyEclipse中創建servlet3.0

1、啟動MyEclipse
2、點擊上圖「File」工具
3、將滑鼠移到「New Alt+Shift+N」,然後再選中並點擊紅框框絕仿鄭定的大槐「Web Project」選項
4、對上圖進行如下操作:
a、"Project Name"(藍框框定處)輸入創建的項目名;此處輸入test;
b、選中「Java EE 6.0」,注意:有些MyEclipse沒有這個選項,這是其版本低的原因造成的(我這里使用的是MyEclipse 10);
c、完成上面兩步操作後直接點擊「Finish」按鈕即可;
5、通過上圖三處被紅框框定文字可以發現該工程已經是servlet3.0版本的了。選中新建工程中src,滑鼠右鍵——>滑鼠移至「New」
6、選中並點擊上圖中被紅框框定並頌的「Servlet」選項
7、對上圖進行如下操作:

a、"Package"(紅框框定處)輸入所創建servlet的包名;此處輸入com.ghj.packageofservlet;
b、"Name"(藍框框定處)輸入所創建servlet的名;此處輸入TestServlet;
c、完成上面兩步操作後直接點擊「Next」按鈕即可;
8、對上圖進行如下操作:如果要使用Servlet3.0新特性——採用注釋的方式該servlet接受的請求路徑,則取消上圖被紅框框定的復選框(取消後web.xml文件中將不會含有創建的Servlet的一些配置信息,此處取消該復選選中項);否則直接點擊「Finish」按鈕即可。至此3.0版的Servlet創建成功。將該Servlet修改為如下代碼

package com.ghj.packageofservlet;

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(urlPatterns = "/TestServlet")//標明本servlet只接收TestServlet請求
public class TestServlet extends HttpServlet {

private static final long serialVersionUID = -4016775927444534220L;

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!doctype html public \"-//w3c//dtd html 4.01 transitional//en\">");
out.println("<html>");
out.println("<head><title>超鏈接請求顯示結果</title></head>");
out.println("<body>");
out.print("<center style=\"margin-top:20%;\"><font style=\"font-weight:bold;font-size:30pt;color:red;\">恭喜你,請求成功!本響應來自於Servlet。</font></center>");
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
}

9、將創建工程時已創建的index.jsp作如下修改:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試首頁</title>
</head>

<body>
<a href="<%=basePath%>TestServlet">測試</a>
</body>
</html>

10、啟動Tomcat,發布該項目;在瀏覽器中輸入http://127.0.0.1:8080/test/,點擊回車鍵(Enter鍵)
11、點擊上面「測試」(紅框框定處)超鏈接,

③ html與servlet間參數傳遞問題

首先保知舉證所有文件編碼一致

如果還有就寫個過濾器氏搏吧,一勞永逸

三、字元編碼的過濾器

import javax.servlet.*;
import java.io.IOException;

/**
* 用於設置 HTTP 請求字元編碼的過濾器搭核碧,通過過濾器參數encoding指明使用何種字元編碼,用於處理Html Form請求參數的中文問題
*/
public class CharacterEncodingFilter
implements Filter
{
protected FilterConfig filterConfig = null;
protected String encoding = "";

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
if(encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}

public void destroy()
{
filterConfig = null;
encoding = null;
}

public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");

}
}

具體介紹和使用方法教程看這里

④ servlet request請求對象常用方法總結

1. request請求對象常用方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset = utf-8");
this.response = response;
out = this.response.getWriter();
println("<ol>");
//1. 獲取請求方式、處理亂碼問題
String method = request.getMethod();

//servletRequest中的方法
request.setCharacterEncoding("utf-8");
//1. 獲取請求體的編碼方式
String characterEncoding = request.getCharacterEncoding();
println("getCharacterEncoding = " + characterEncoding);

//2. get body length
int contentLength = request.getContentLength();
println("getContentLength = " + contentLength);

//3. MIME type
String mimeType = request.getContentType();
println("getContentType = " + mimeType);

//4. 接收請求的介面的 Internet Protocol (IP) 地址
String ip = request.getLocalAddr();
println("getLocalAddr = "緩閉晌 + ip);

//5. 基於 Accept-Language 頭,返回客戶端將用來接受內容的首選態裂 Locale 客戶端語言環境
Locale locale = request.getLocale();
println("getLocale = " + locale);

//6. 所有的語言環境擾鋒
Enumeration<Locale> locales = request.getLocales();
while(locales.hasMoreElements()){
Locale temp = locales.nextElement();
println("\n Locales = " + temp);
}

//7. 接收請求的 Internet Protocol (IP) 介面的主機名
String localName = request.getLocalName();
println("localName = " + localName);

//8. 接收請求的介面的 Internet Protocol (IP) 埠號
int localPort = request.getLocalPort();
println("localPort = " + localPort);

//9. 返回請求使用的協議的名稱和版本
String protocol = request.getProtocol();
println("protocol = " + protocol);

//10. 讀取請求正文信息
BufferedReader reader = request.getReader();
println("getReader = " + reader.toString());

//11. 發送請求的客戶端
String remoteAddr = request.getRemoteAddr();
println("RemoteAddr = " + remoteAddr);

//12. 發送請求的客戶主機
String remoteHost = request.getRemoteHost();
println("RemoteHost = " + remoteHost);

//13. 發送請求的客戶主機埠
int remotePort = request.getRemotePort();
println("RemotePort = " + remotePort);

//14. 返回用於發出此請求的方案名稱,例如:http 、 https 、 ftp
String scheme = request.getScheme();
println("Scheme = " + scheme);

//15. 返回請求被發送到的伺服器的主機名。它是Host頭值":"(如果有)之前的那部分的值。 或者解析伺服器名稱或伺服器的IP地址
String serverName = request.getServerName();
println("ServerName = " + serverName);

//16. 返回請求被發送到的埠。他是"Host"頭值":" (如果有)之後的那部分的值,或者接受客戶端連接的伺服器埠。
int serverPort = request.getServerPort();
println("ServerPort = " + serverPort);

//17. 返回一個boolean值,指示此請求是否是使用安全通道(比如HTTPS) 發出的。
boolean secure = request.isSecure();
println("isSecure = " + secure);

//以上方法為 ServletRequest 介面提供的

//以下方法為 HttpServletRequest 介面提供的

/*
* 18. 返回用於保護servlet的驗證方法名稱。 所有的servlet容器都支持
* basic、 form和client certificate驗證, 並且可能還支持digest驗證
*/
String authType = request.getAuthType();
println("authType = " + authType);

//19. getDateHeader ??
request.getDateHeader("");

//20. 返回請求頭包含的所有頭名稱的枚舉。
Enumeration<String> headerNames = request.getHeaderNames();
println("<hr/>");
while(headerNames.hasMoreElements()){
String name = headerNames.nextElement();
println(" headerNmea = " + name + ";getHeader = " + request.getHeader(name));
}

println("<hr/>");
//21. 以int的形式返回指定請求頭的值。 ???
request.getIntHeader("123");

//22. 返回與客戶端發出此請求時發送的URL相關聯的額外路徑信息。
String pathInfo = request.getPathInfo();
println("PathInfo = " + pathInfo);

//23. 返回包含在請求RUL中路徑後面的查詢字元串。如果沒有查詢字元串返回null
String remoteUser = request.getRemoteUser();
println("RemoteUser = " + remoteUser);

//24. 返回客戶端制定的回話ID
String requestedSessionId = request.getRequestedSessionId();
println("requestSessionId = " + requestedSessionId);

//25. 返回請求調用servlet的URL部分
String servletPath = request.getServletPath();
println("servletPath = " + servletPath);

//26. 返回與此請求關聯的當前HttpSession,如果沒有當前會話並且參數為true,則返回一個新會話。
HttpSession session = request.getSession(true);
println("getSession(true) = " + session);

//27. 返回包含當前已經過驗證的用戶的名稱的java.security.Principal對象。如果用戶沒有經過驗證,則該方法返回null
Principal userPrincipal = request.getUserPrincipal();
println("userPrincipal = " + userPrincipal);

//28. 檢查會話的id是否作為Cook進入的
boolean sessionIdFromCookie = request.();
println("sessionIdFromCookie = " + sessionIdFromCookie);

//29. 檢查請求的會話ID是否作為請求的URL的一部分進入的
boolean sessionIdFromURL = request.isRequestedSessionIdFromURL();
println("sessionIdFormURL = " + sessionIdFromURL);

//30.

println("</ol>");
out.flush();
out.close();

}

public void println(Object obj){
this.response.setContentType("text/html;charset=utf-8");
try {

out.println("<li>");
out.println(obj);
out.println("</li>\n");
} catch (Exception e) {
e.printStackTrace();
}
}

2. 運行結果

getCharacterEncoding = utf-8
getContentLength = -1
getContentType = null
getLocalAddr = 127.0.0.1
getLocale = zh_CN
Locales = zh_CN
Locales = zh
Locales = en_US
Locales = en
localName = lm.licenses.adobe.com
localPort = 8080
protocol = HTTP/1.1
getReader = org.apache.catalina.connector.CoyoteReader@17b8d3d
RemoteAddr = 127.0.0.1
RemoteHost = 127.0.0.1
RemotePort = 57814
Scheme = http
ServerName = localhost
ServerPort = 8080
isSecure = false
authType = null
headerNmea = host;getHeader = localhost:8080
headerNmea = user-agent;getHeader = Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0
headerNmea = accept;getHeader = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
headerNmea = accept-language;getHeader = zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
headerNmea = accept-encoding;getHeader = gzip, deflate
headerNmea = cookie;getHeader = JSESSIONID=
headerNmea = connection;getHeader = keep-alive
PathInfo = null
RemoteUser = null
requestSessionId =
servletPath = /req
getSession(true) = org.apache.catalina.session.StandardSessionFacade@1fcf1ba
userPrincipal = null
sessionIdFromCookie = true
sessionIdFormURL = false

⑤ JavaWeb中Servlet必須要在web.xml中配置嗎

Java 的Web標准就是jsp+Servlet,而Structs,Spring MVC的哦是基於攔截器的。。姿液
如果要讓Servlet工跡緩物作,這必須要多Sevelet進行哪塌配置。Servlet 常規都是在web.xml配置的。

⑥ 大神 求馬士兵的servlet的視頻教程 找了好久沒找到

馬士兵的好多視頻現在網上下不到了,只有j2se基礎和script等 servlet可以換個人的啊 李興華,韓順平 都講得還可以

⑦ 實現servlet功能需要哪些組件

1、Servlet是Java EE應用中另一種常用的組件,是繼JDBC後,Java EE技術的第二個重要發明。

2、JSP與Servlet的區別:

JSP是嵌入Java代碼的HTML頁面,JSP頁面是轉換為Servlet來執行的。

Servlet是嵌入了判櫻HTML的Java類。

3、Servlet執行請求和響應的處理。

4、在Web應用程序中,<servlet>元素是用於描述Servlet的基本元素。<servlet>可以有下面的子元素:

[html]view plain

·<icon>

·<servlet-name>:定義一個用戶友好的名稱,用於表示所用到的資源。

·<display-name>

·<description>

·<servlet-class>:定義Servlet類的完整路徑名。

·<jsp-file>:定義JSP文件類的完整路徑名。

·<init-paran>:定義Servlet的參數

·<load-on-startup>:用一個整數表明伺服器啟動時應該調用的Servlet的相對次序:具有小值的Servlet排在具有大值的Servlet的前面,相同值得Servlet會按照任意順序調用。

·<run-as>

·<security-role-ref>

注意:必須要有的元素<servlet-name>以及< servlet -class>或者<jsp-file>之一。

5、<servlet-mapping>:用於一給定的Servlet名稱與相應請求URI之間的映射。

6、因為Servlet容器只能調用Servlet類的無參的構造函數,同時當你的Servlet類沒提過任何一個構造函數是,Java會自動提過一個無參數的構造函數,所以不必為Servlet類編寫任何構造函數。

7、Servlet的生命周期:

1)、載入和實例化:Servlet容器賭氣每個部署描述文件Web.xml文件,之後載入部署描述文件中指定的Servlet類。然後調用無參的構造函數來實例化每個Servlet類。

2)、初始化:Servlet容器調用Servlet類的init(ServletConfig)方法實現初始化。這個方法是用父類GenericServlet提供的。

·init()方法的作用:讀取Servlet的初始化參數或配置數據、初始化歲沖伍外部資源(如資料庫連接),以及執行其他一次性的動作。

·GenericServlet類的init()有一下兩種形式:

publicvoid init() throws ServletException

publicvoid init(ServletConfig) throws ServletException

·第二個方法中ServletConfig對象來自:如上第4點提到的<Servlet>的子元素<init-paran>元素定義Servlet的參數,Servlet容器從Web.xml文件讀取這些參數,然後把它們按「名/值對」保存到ServletConfig對象中。

·init(ServletConfig),首先保存ServletConfig引用,然後調用init()方法。init()方法可以訪問ServletConfig引用中的所有初始化參數。

·如果在自定義的Servlet中實現init(ServletConfig),那麼一定要調用超類的init(ServletConfig)方法。如果實現init(ServletConfig)的時候沒調用super. 實現init(ServletConfig)方法,那麼ServletConfig引用不會被保存下來,而且Servlet或其父類不能在後續生命周期中訪問ServletConfig對象。

· 如果在init()的過程中遇到問題,應當拋出乎或ServletException類或其子類UnavailableExcption。這會告訴容器在初始化過程中存在問題,並且不應該使用這個Servlet來處理請求。使用UnavailableExcption可以設定Servlet的無效時長,過了這個時長,容器將去重新調用init()。

·UnavailableExcption有以下構造函數

public UnavailableExcption(Stringmsg, int seconds)

其中int參數是一個整數:負數和零值表示不能判斷該Servlet什麼時候可以再用。正 整數值則說明伺服器應當在若干秒之後再去重新初始化這個Servlet。

3)、請求的處理:Servlet容器調用service()方法。跟init()方法方法一樣會拋出ServletException類或其子類UnavailableExcption異常,不同的是這里創建的UnavailableExcption無指定的無效時長,所以一旦拋出異常Servlet容器必須終止Servlet的生命周期。

4)、聲明周期結束:Servlet容器調用destroy()方法。但是容器必須等到仍在運行的請求處理線程結束之後或伺服器定義的超出時間結束時,才調用destroy()方法。這個方法也是GenericServlet父類實現的,如果你的Servlet實例不需要執行任何收尾工作,無需實現這個方法。在destroy()方法執行之後,容器釋放對該Servlet實例的引用。

注意:destroy()方法並不的銷毀Servlet或引發對它的垃圾收集。它只是在恰當的實際簡單地清除Servlet所使用和打開的資源。顯然,在調用這個方法之後,容器將不再給這個Servlet轉發任何請求。

8、如何使得Servlet的線程安全:

1)、用方法變數保存請求中的專有數據。

數據保存在方法變數中,即局部變數。這時,進入這個方法的每個線程都有自己的一份方法變數拷貝。因此,任何線程都不會修改其他線程的數據成員。如果要在不同的請求之間保存一份數據,那麼應該用會話(session)來存儲這類數據。

2)、只用Servlet成員變數保存那麼不會改變的數據。

這類數據保存查詢資料庫連接名稱、其他資源的路徑、其他Web組件的路徑等等。

3)、同步訪問你那些可能請求修改的成員變數。

4)、如果Servlet訪問外部資源,那麼需要同步訪問這些資源。

例如文件訪問本身不是線程安全的,所以必須編寫同步訪問這個資源的代碼。

⑧ 如何將已生成的pdf文件通過servlet顯示到頁面

首先從獲得 servlet 的輸出流開始:ServletOutputStream out = res.getOutputStream();。

互聯網上使用 MIME (multipurpos Internet mail extension 多目的互聯網郵件擴展協議)來傳送混合格式、多媒體和二進制數據文件。如果要在 servlet 的 response 對象中打開某個文檔,就必須設置該文檔的 MIME 類型。HTTP response header中的content-disposition 允許 servlet 指定文檔表示的信息。

(8)servlet30教程擴展閱讀:

一個客戶端的請求到達 Server的過程:

1、Server 創建一個請求對象,處理客戶端請求

2、Server 創建一個響應對象,響應客戶端請求

3、Server 激活 Servlet 的 service() 方法,傳遞請求和響應對象作為參數

4、service() 方法獲得關於請求對象的信息,處理請求,訪問其他資源,獲得需要的信息

service() 方法使用響應對象的方法,將響應傳回Server,最終到達客戶端。service()方法可能激活其它方法以處理請求,如 doGet() 或 doPost() 或程序員自己開發的新的方法。

⑨ java servlet怎麼學

首先我們要了解Servlet是什麼,下面就詳細講解下Servlet特性和功能

一、Servlet是什麼

Servlet是一個類,是一個用Java語言編寫的、實現Servlet介面的類,一個與訪問協議和平台無關的,運行在Servlet容器中的Java程序。

Servlet沒有main方法,不能獨立運行;它只有實例化、初始化、運行、銷毀方法,被編譯成與平台無關的位元組碼文件後,需要載入到Servlet容器中才能執行,並且由Servlet容器管理Servlet的整個生命周期,所以,也常常稱Servlet是Servlet容器上運行的伺服器小程序。

Servlet推出初期,主要是作為支持HTTP協議的WEB伺服器上的一種動態網頁技術;隨著Servlet技術的不斷發展,Servlet可以作為支持任何協議的、實現Java API的伺服器上的服務程序。

Servlet運行在伺服器上,它可以接受來自客戶端的請求,並將處理結果返回給客戶端,於是,在許多應用中,Servlet主要用於實現動態網頁,亦或作為前端頁面與後台資料庫或者後台伺服器程序之間的中間件。

二、Servlet容器

Servlet容器作為支撐Servlet運行的平台,是一個非常重要的部件。也可以把Servlet容器看成是一個裝載著許多Servlet對象的容器,Servlet容器負責管理這些Servlet對象。

Servlet容器運行在JVM(Java虛擬機)之上,管理Servlet的實例化、初始化、實例對象的運行和銷毀,並提供最基礎的運行支撐,例如:Servlet容器負責接收請求、轉發請求、發送響應、管理會話狀態、實現數據共享等等。

Servlet容器至少支持通過HTTP協議訪問Servlet,也可以支持其他協議,例如:HTTPS、FTP、POP、SMTP等。

訪問Servlet容器中Servlet的過程如下:

(1)客戶發送訪問請求至Servlet容器

(2)Servlet容器接收請求,解析,然後將請求發送給相應的Servlet處理

(3)Servlet執行,將處理結果返回給Servlet容器

(4)Servlet容器接收處理結果,將處理結果返回給客戶

從以上訪問Servlet的過程,可以看出,Servlet容器的作用如下:

(1)接收請求:當客戶請求來到時,Servlet容器負責接收請求

(2)管理與調用Servlet:Servlet容器管理Servlet的載入、實例化、初始化、調用與垃圾回收,根據請求的Servlet地址,調用要訪問的Servlet

(3)返回響應結果:將Servlet的執行結果返回給客戶

Servlet運行在Servlet容器中,容器為Servlet提供運行時的平台支撐,於是,在Servlet中,只需要專注於業務邏輯功能實現,而無需考慮網路通訊、垃圾回收等功能,這些基本功能由Servlet容器提供。

Servlet容器主要提供了如下功能:

(1)基本通信支持:Servlet容器提供了與WEB伺服器之間的通信方法,使Servlet可以與WEB伺服器輕松對話,並藉助WEB伺服器與客戶端瀏覽器之間的通信機制,使Servlet容器無需自己建立Socket服務、監聽通信埠、創建數據流對象等;Servlet容器定義了與WEB伺服器之間的通信協議,所以,在Servlet中,無需考慮WEB伺服器(例如:Tomcat)和自己的功能代碼之間的API介面,只需要考慮如何在Servlet中實現業務邏輯功能(例如:處理一個訂單)。

(2)管理Servlet生命周期:Servlet容器管理著Servlet的整個生命周期,負責查找、載入、實例化、初始化、調用Servlet方法,以及銷毀,有了Servlet容器,就不需要考慮Servlet資源的管理。

(3)支持多線程:Servlet容器會自動為它所接收的每一個客戶請求創建一個新的Java線程,以處理該請求;對於每一個客戶請求,Servlet服務方法執行結束,則Servlet容器就會結束立即這個線程。

(4)聲明方式實現安全:按照Servlet容器要求,使用web.xml部署描述文件或註解來配置和修改安全性,而不必將其硬編碼寫到Servlet類代碼中。

(5)支持JSP動態頁面:Servlet容器負責將JSP頁面翻譯成Java Servlet代碼,按Servlet來管理JSP頁面的運行。

根據Servlet應用模式,Servlet最常用的模式是通過Servlet容器運行在WEB伺服器中,以執行請求和響應,請求與響應的典型範例是用動態網頁技術實現動態網頁,或者作為前端頁面與後台資料庫/後台伺服器程序之間的中間件,於是,Servlet容器需要與WEB伺服器或應用伺服器結合,才能為WEB應用程序的訪問提供服務。

Servlet容器可以在WEB伺服器內部實現,也可以作為WEB伺服器的附加構件提供,還可以實現在有WEB使能的應用伺服器上,為Servlet的訪問提供運行支撐。

WEB伺服器啟動時,Servlet容器也會隨之啟動。

關於WEB方面更詳細的講解可以看下這個視頻教程網頁鏈接

希望我的回答能幫到你

⑩ 初學Servlet,按照教程結果出現The requested resource is not available,求助。代碼如下

<!--class指明該Servlet在哪包寬鏈-->
<servlet-class>com.wispei.MyFirstServlet</servlet-class>銀拆
這里指的位置不對吧,鋒巧棗換成com.test.MyFirstServlet試試

閱讀全文

與servlet30教程相關的資料

熱點內容
蘋果手機小風扇圖app叫什麼 瀏覽:292
繁體中文輸入工具 瀏覽:916
pc桌面壁紙文件夾 瀏覽:473
微信怎麼添加群 瀏覽:781
40歲男人適合的微信名 瀏覽:925
編程里比例怎麼打 瀏覽:215
蘋果12兩個app如何分屏 瀏覽:592
ps下載完不是壓縮文件 瀏覽:362
電腦中的個人文件包括什麼 瀏覽:572
網路連接一般什麼密碼 瀏覽:199
java定時器quartz實例 瀏覽:259
稻殼excel文件太大怎麼弄 瀏覽:901
文件里的視頻如何保存到相冊 瀏覽:428
手機百度雲文件電腦 瀏覽:957
編程怎麼做到時鍾精準 瀏覽:912
錘子用過的壁紙在哪個文件里 瀏覽:468
qq網站安全性未知訪問不了怎麼辦 瀏覽:270
燕秀怎麼修改編程人名字 瀏覽:789
2012年天之眼導航升級 瀏覽:595
如何安裝視頻文件 瀏覽:315

友情鏈接