Servlet3.0(一)--使用註解標註Servlet @WebServlet
http://www.cnblogs.com/xdp-gacl/p/4222902.html
一、Servlet3.0介紹
Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案中進行Servlet的部署描述,簡化開發流程。
二、開發Servlet3.0程式的所需要的環境
開發Servlet3.0的程式需要一定的環境支援。MyEclipse10和Tomcat7都提供了對Java EE6規範的支援。Tomcat需要Tomcat7才支援Java EE6,Tomcat7需要使用JDK1.6以上的版本。
所以開發Servlet3.0的程式
- IDE:MyEclipse 10+
- JDK:JDK 1.6+
- tomcat:tomcat 7+
如果使用的 MyEclipse的版本較低,例如MyEclipse8.5,沒有提供Java EE6的支援,可以到Oracle官方網站下載JavaEE6的SDK進行安裝,或者從Tomcat7的解壓目錄下的lib資料夾中的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】這幾個jar檔案引用到我們的專案路徑下。(例如:先建一個Java
EE5的web專案,然後把Tomcat7的解壓目錄下的lib資料夾中的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】
三、使用MyEclipse8.5+Tomcat7+JDK1.7開發Servlet3.0程式
3.1、建立WebProject
1、使用MyEclipse8.5新建一個Web Project,選擇最高版本的Java EE5.0,如下圖所示:
建立好的專案如下所示:
專案的web.xml檔案內容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20.7999992370605px;">建立好的專案如下圖所示:</span>
注意web.xml檔案中的version資訊,version="2.5"和http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd。這裡就表示當前使用的是Servlet2.5的版本。
3.2、將Web專案的開發環境改造成支援Servlet3.0
1、開啟Tomcat7的解壓目錄下的lib資料夾中,如下圖所示:
找到我們需要的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】這幾個jar檔案,然後加入到我們的Web專案的lib資料夾下,如下圖所示:
2、刪除Java
EE5的庫引用
經過上面的兩步操作,Web應用裡面的jar包引用工作就算是完成了,如下圖所示:
3、修改專案中的web.xml檔案的宣告部分
找到Tomcat7的解壓目錄下的conf資料夾下的web.xml,如下圖所示:
使用文字編輯器開啟web.xml檔案,如下圖所示:
改造好的Web.xml檔案如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意web.xml檔案中的version資訊,version="3.0"和http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 這就是表示當前使用的是Servlet3.0的版本。經過這樣改造之後,我們的Web應用的開發環境就支援Servlet3.0的程式開發了。
3.3、開發Servlet3.0程式
3.3.1、建立Servlet
新建一個Servlet,寫上Servlet的Name,然後Next,如下所示:
取消【Generate/Map
web.xml file】複選框的選中狀態,直接點選【Finish】按鈕完成Servlet的建立工作,我們要使用Servlet3.0提供的註解來配置Servlet,因此不需要MyEclipse幫我們在web.xml檔案中生成Servlet的配置資訊,如下圖所示:
這樣建好一個Servlet後,在web.xml檔案中沒有任何關於這個Servlet的描述資訊,如下圖所示:
3.3.1、使用註解描述Servlet
前面介紹過,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案中進行Servlet的部署描述,下面我們就來使用一下Servlet3.0提供的註解來描述Servlet3Demo這個Servlet,程式碼如下:
package me.gacl.web.controller;
import java.io.IOException;
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用來描述一個Servlet
* 屬性name描述Servlet的名字,可選
* 屬性urlPatterns定義訪問的URL,或者使用屬性value定義訪問的URL.(定義訪問的URL是必選屬性)
*/
@WebServlet(name="Servlet3Demo",urlPatterns="/Servlet3Demo")
public class Servlet3Demo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().write("Hello Servlet3.0");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
/*
* 完成了一個使用註解描述的Servlet程式開發。
使用@WebServlet將一個繼承於javax.servlet.http.HttpServlet的類定義為Servlet元件。
@WebServlet有很多的屬性:
1、asyncSupported: 宣告Servlet是否支援非同步操作模式。
2、description: Servlet的描述。
3、displayName: Servlet的顯示名稱。
4、initParams: Servlet的init引數。
5、name: Servlet的名稱。
6、urlPatterns: Servlet的訪問URL。
7、value: Servlet的訪問URL。
Servlet的訪問URL是Servlet的必選屬性,可以選擇使用urlPatterns或者value定義。
像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
也定義多個URL訪問:
如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})
*
*/
在Servlet3.0中,可以使用@WebServlet註解將一個繼承於javax.servlet.http.HttpServlet的類標註為可以處理使用者請求的Servlet。
@WebServlet註解的相關屬性 | ||
NO. | 屬性名 | 描述 |
1 | asyncSupported | 宣告Servlet是否支援非同步操作模式 |
2 | description | Servlet的描述資訊 |
3 | displayName | Servlet的顯示名稱 |
3 | initParams | Servlet的初始化引數 |
5 | name | Servlet的名稱 |
6 | urlPatterns | Servlet的訪問URL |
7 | value | Servlet的訪問URL |
Servlet的訪問URL是Servlet的必選屬性,可以選擇使用urlPatterns或者value定義。
像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
也定義多個URL訪問:
如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})
3.4、部署Web應用到Tomcat7
由於我們使用的是MyEclipse8.5的版本、而MyEclipse8.5只支援tomcat6.x的版本,因為我們開發的是基於Servlet3.0的程式,因此將Web應用部署到Tomcat6.x版本的伺服器是無法正常執行的,必須要使用tomcat7以上的伺服器,所以首先我們要在MyEclipse8.5中配置tomcat7.x,如下圖所示:
要想在MyEclipse8.5中正常使用Tomcat7.x,除了配置這個地方之外,還需要配置一下Paths,如下圖所示:
如果不這樣做,那麼將專案部署好後,啟動tomcat時就會報錯,java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory,之前就是因為這個莫名其妙的錯誤折騰了好久,直到看到網上這一篇文章http://xuejiangtao.iteye.com/blog/882585才解決啟動報錯的問題的。
可以看到,我們已經成功訪問到了Servlet3Demo,我們在MyEclipse8.5中開發的第一個Servlet3.0程式成功了。
四、使用MyEclipse10+Tomcat7+JDK1.7開發Servlet3.0程式
在上面,我們使用MyEclipse8.5來開發了一個Servlet3.0的程式,但由於MyEclipse8.5本身不支援Servlet3.0,所以還得搭建Servlet3.0的開發環境,極其麻煩,但使用MyEclipse10以上的版本就不一樣了,MyEclipse10支援Servlet3.0的開發,因此還是推薦使用MyEclipse10+Tomcat7.x+JDK1.6+的組合來開發Servlet3.0的程式。
4.1、建立WebProject
1、使用MyEclipse10新建一個Web Project,選擇Java EE6.0,如下圖所示:
建立好的專案如下圖所示:
JavaEE6的jar檔案如下圖所示:
專案的web.xml檔案內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意web.xml檔案中的version資訊,version="3.0"和http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 這就是表示當前使用的是Servlet3.0的版本。
4.2、開發Servlet3.0程式
4.2.1、建立Servlet
新建一個Servlet,寫上Servlet的Name,然後Next,如下所示:
這樣建好一個Servlet後,在web.xml檔案中沒有任何關於這個Servlet的描述資訊。
4.2.2、使用註解描述Servlet
程式碼如下:package me.gacl.web.controller;
import java.io.IOException;
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(name="Servlet3FirstDemo",value="/Servlet3FirstDemo")
public class Servlet3FirstDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().write("Hello Servlet3.0");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
4.3、部署Web應用到Tomcat7
把專案釋出到Tomcat7,啟動Tomcat7,如下圖所示:
可以看到,使用MyEclipse10開發一個Servlet3.0的程式是非常方便和快捷的。Servlet3.0提供了註解之後對於Servlet的開發就方便多了,省去了在web.xml檔案中配置。
相關推薦
Servlet3.0(一)--使用註解標註Servlet @WebServlet
http://www.cnblogs.com/xdp-gacl/p/4222902.html 一、Servlet3.0介紹 Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案
Servlet3.0學習總結(一)——使用註解標註Servlet
一、Servlet3.0介紹 Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案中進行Servlet的部署描述,簡化開發流程。 二、開發Servlet3.0程式的所需要的環境 開
Servlet 3.0 規範(一)註解規範
Servlet 3.0 規範(一)註解規範 一、基本使用 在 Servlet 3.0 時支援註解啟動,不再需要 web.xml 配製檔案。 1.1 Servlet 3.0 註解 Servlet 3.0 常用註解: @WebServlet @WebFilter @WebInitParam @WebLis
Spring3 MVC 註解(一)---註解基本配置及@controller和 @RequestMapping 常用解釋(轉)
nal context pac 配置 註解 com inf 如何 文件中 一:配置web.xml 1)問題:spring項目中有多個配置文件mvc.xml dao.xml 2)解決:在web.xml中 <init-par
JavaWeb(一)之細說Servlet
troy 文件名 ngs 很多 generics 頁面 虛擬 ats att 前言 其實javaWeb的知識早就學過了,可是因為現在在搞大數據開發,所以web的知識都忘記了。準備開始慢慢的把Web的知識一點一點的回憶起來,多學一點沒有關系,就怕到時候要用的話,什麽都不
Servlet(一):Hello Servlet
dex onf alt+ CA maven項目 演示 創作 xmlns prot 今天介紹的專題是servlet和jsp,屬於web開發中的基礎,先來實際操作一下servlet,創建你的第一個web小項目。 1、新建一個maven項目。 鼠標右鍵單擊eclipse左邊項目欄
零基礎快速入門SpringBoot2.0 (一)
acc href 項目文件 apache tro maven打包 相關 utf tps 零基礎快速入門SpringBoot2.0 (一) 一、SpringBoot2.x依賴環境和版本新特性說明 簡介:講解新版本依賴環境和springboot2新特性概述
OpenID Connect Core 1.0(一)介紹
pairwise color 類型 客戶端 itu-t endpoint nta 框架 方式 IdentityServer4是基於OpenID Connect and OAuth 2.0框架,OpenID Connect Core 1.0是IdentityServer4最重
spring(一)註解使用(@Configuration 、@Bean、@ComponentScan、@TypeFilter)
1、spring的框架: spring的核心是控制反轉(IOC)和橫向切面(AOP) 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要元件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制
SpringCloud 2.0(一)——註冊中心Eureka搭建
前言:學習和使用SpringCloud是從2017年底開始的,當時專案選擇框架的時候定的就是springboot的全家桶,到現在已經整整一年時間了,期間也遇到了很多問題,每次都是看官方文件或者學習優秀的部落格來解決,但是總感覺只是都是零碎的點,沒有連成線,結成網,所以計劃有空的時候就把相關的內容
SpringBoot 2.1.0 (一):HelloWorld
簡介 本系列基於Spring Boot 2.1.0 的官方文件,除去了文件中一些冗餘的東西,加上了一些自己的理解,意圖是在於幫助更多初識Spring Boot的人來進行一次探險。 本系列建議具有Java基礎和Spring使用經驗的同學學習。 什麼是Spring Boot
Spring Boot筆記(一)——註解
[email protected] 用於定義控制器類,在spring 專案中由控制器負責將使用者發來的URL請求轉發到對應的服務介面(service層)。 [email protected] 註解等價於@[email protected]
微服務 SpringBoot 2.0(一):簡單入門構建
我做好了從入門到放棄的準備,你卻告訴我炒雞簡單 —— Java面試必修 引言 SpringBoot是由Pivotal團隊提供的全新框架,從最根本上來講,Spring Boot就是簡化開發人員從0構建專案的繁瑣步驟,巧妙的封裝了很多外掛模組,讓開發人員不再擔心
INDEMIND帶你玩轉OpenCV4.0(一):DIS光流演算法解析
文章目錄 一.OpencCV 4.0 新特性介紹 首先是OpenCV完全支援了C++ 11 DNN(深度神經網路)模組是目前OpenCV更新最重要的模組 G-API 為演算法的硬體優化
玩轉OpenCV 4.0(一):呼叫Dis光流演算法示例
玩轉OpenCV 4.0(一):呼叫Dis光流演算法示例 呼叫DIS光流的原始碼如下: 對應CMakelists如下: 呼叫DIS光流的原始碼如下: #include "opencv2/core/utility.hpp"
spring複習(一)註解使用(@Configuration 、@Bean、@ComponentScan、@TypeFilter)
1、spring的框架: spring的核心是控制反轉(IOC)和橫向切面(AOP) 2、spring註解開發 spring從3.0開始支援註解開發,通過註解方式代替xml定義bean檔案,例: (1)xml定義bean檔案: <
Java Web基礎(一)(HTML、Servlet/JSP)
要成為牛逼的JavaWeb程式設計師, Java Web的基礎非常重要,現在有各種成熟的設計框架例如JQuery、Spring、Struts、Mybatis,將Java Web基礎的複雜
Android Retrofit 2.0(一)初次見面請多多關照
前言 Retrofit 是SQUARE美國一家移動支付公司最近新發布的在Android平臺上 Http 訪問的開源專案。官方標語:“A type-safe HTTP client for Android and Java”語意很明顯是一款Android安全型別的http
C#winform 經典小遊戲貪吃蛇V1.0(一)
關於V1.0 為什麼我給這個版本定義為V1.0嘞,因為在這個版本中僅僅實現了蛇的自動行進,按鍵對蛇的行進方向的操作和吃掉食物蛇身的增長等操作。 但是任何事情都必須一步一步來,當我們完成這個乞丐版的貪吃蛇,就為我們版本的更新打下了基礎。 思路 首先我們
通俗易懂的 OpenGL ES 3.0(一)入門必備知識!!
前言 opengl的入門是個難點,因為在繪製出圖形之前,你必須要學習一大堆的概念,以及部分圖形知識。以至於在程式碼中不迷路-v-!!.接下來就通俗的講解下部分概念知識。希望大家取其精華去其糟粕 頂點(Vertex) opengl物體圖形都由點、線