按理来说,JSP和Servlet,应该把servlet排在第一位,因为它才是本质性的东西,但是无论怎样JSP,在view层的范围内,先讲也不为过。
1. 什么是servlet?
它生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。【百度百科】
2. 如何写一个servlet?
一個Servlet基本上必須繼承javax.servlet.http.HttpServlet,如果你要處理的是GET請求,則重新定義doGet()方法。当然你也可以重写doPost()。关于Get和Post的区别,和客户端是如何触发这两种不同的方法的呢?
① 浏览器地址栏显示不同
② 向服务器端请求时发送的消息格式不同
③ get请求消息格式为:
GET /HelloWorld/loginServlet?username=abc&password=abc HTTP/1.1
④ post请求消息格式为:
POST /HelloWorld/loginServlet HTTP/1.1 Connection:keep-Alive username=abc&password=abc
通过浏览器进行文件上传时,一定要使用post方法。
通过浏览器地址栏输入网址的方式访问服务器资源,使用的都是get方法请求。
当然,更加具体的Servlet的写法,可以参阅
其中,值得注意的是,关于容器对servlet的加载方法或者说策略方面的知识:
摘自文章:
當你的應用程式啟動後,事實上並沒有載入所有的Servlet。容器會在你請求時,才將對應的Servlet類別載入、實例化、進行初始動作,然後再處理 你的請求。這意謂著第一次請求該Servlet的客戶端,必須等待Servlet類別載入、實例化、進行初始動作所必須花費的時間,才真正得到請求的處 理。
如果你希望應用程式啟動時,就先將Servlet類別載入、實例化並作好初始化動作,則可以使用loadOnStartup設定。設定大於0的值(預設值-1),表示在啟動應用程式後就要初始化Servlet(而不是實例化幾個Servlet)。數字代表了Servlet的初始順序,容器必須保證有較小數字的Servlet先初始化,如果有多個Servlet在設定loadOnStartup時使用了相同的數字,則容器實作廠商可以自行決定要如何載入哪個Servlet。
helloworld
cc.openhome.HelloWorld
1
helloworld
/helloworld.view