您的位置:首页 > 其它

J2EE搭建之九 写第一个servlet

2013-01-07 11:26 309 查看
按理来说,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方法请求。
【转载自:http://www.itzhai.com/servlet-get-and-post-methods-in-the-http-protocol-to-achieve-the-distinction.html

当然,更加具体的Servlet的写法,可以参阅

http://caterpillar.onlyfun.net/Gossip/ServletJSP/FirstServlet.html

其中,值得注意的是,关于容器对servlet的加载方法或者说策略方面的知识:

摘自文章:


當你的應用程式啟動後,事實上並沒有載入所有的Servlet。容器會在你請求時,才將對應的Servlet類別載入、實例化、進行初始動作,然後再處理 你的請求。這意謂著第一次請求該Servlet的客戶端,必須等待Servlet類別載入、實例化、進行初始動作所必須花費的時間,才真正得到請求的處 理。

如果你希望應用程式啟動時,就先將Servlet類別載入、實例化並作好初始化動作,則可以使用loadOnStartup設定。設定大於0的值(預設值-1),表示在啟動應用程式後就要初始化Servlet(而不是實例化幾個Servlet)。數字代表了Servlet的初始順序,容器必須保證有較小數字的Servlet先初始化,如果有多個Servlet在設定loadOnStartup時使用了相同的數字,則容器實作廠商可以自行決定要如何載入哪個Servlet。



<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>cc.openhome.HelloWorld</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld.view</url-pattern>
</servlet-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Servlet J2EE start-on-load