Servlet3.0-使用注解定義Servlet


  我使用的開發環境:MyEclipse10+Tomcat7+JDK6。

  開發Servlet3的程序需要一定的環境支持。Servlet3是Java EE6規范的一部分,MyEclipse10和Tomcat7都提供了對Java EE6規范的支持。

  Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK6。

  如果使用的MyEclipse的版本較低,沒有提供Java EE6的支持,可以到Oracle官方網站下載JavaEE6的SDK進行安裝,或者從Tomcat7的解壓目錄下的lib文件夾中把所有jar文件引用到我們的項目路徑下。(例如:先建一個Java EE5的web項目,然后把Tomcat7的解壓目錄下的lib文件夾中的所有jar引入到項目中,再刪除Java EE5的庫引用,最后從Tomcat7的解壓目錄下的conf文件夾下把web.xml模板拷貝到項目,替換掉原來的web.xml)。

  Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中進行Servlet的部署描述,簡化開發流程。

  1、新建一個Web Project,直接選擇Java EE6.0。

  2、看一下項目包視圖。

  3、Java EE6的庫文件

  4、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">
  
</web-app>

  注意version="3.0"http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd

  5、新建一個Servlet。寫上Servlet的Name,然后Next。

  6、不需要在web.xml文件中生成Servlet的相關信息。Finish。

  7、這樣建好一個Servlet后,在web.xml文件中沒有任何關於這個Servlet的描述信息。

 

<?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">
  
</web-app>

 

 

 

  8、使用注解描述Servlet。 

 

package com.cndatacom.servlet;

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;


/**
 * 使用注解描述Servlet
 * @author Luxh
 */

/**
 * 注解WebServlet用來描述一個Servlet
 * 屬性name描述Servlet的名字,可選
 * 屬性urlPatterns定義訪問的URL,或者使用屬性value定義訪問的URL.(定義訪問的URL是必選屬性)
 */
@WebServlet(name="AnnotationServlet",urlPatterns="/AnnotationServlet")
public class AnnotationServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML>");
        out.println("<HTML>");
        out.println("      <HEAD>");
        out.println("      <TITLE>A Servlet</TITLE>");
        out.println("      <meta http-equiv=\"content-type\" " + "content=\"text/html; charset=utf-8\">");
        out.println("   </HEAD>");
        out.println("       <BODY>");
        out.println("             Hello AnnotationServlet.");
        out.println("     </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

}

 

 

 

  9、把項目發布到Tomcat7,啟動Tomcat7。在瀏覽器訪問:http://localhost:8080/Servlet3/AnnotationServlet

  完成了一個使用注解描述的Servlet程序開發。


  使用@WebServlet將一個繼承於javax.servlet.http.HttpServlet的類定義為Servlet組件。

  @WebServlet有很多的屬性:

  asyncSupported:聲明Servlet是否支持異步操作模式。

  description:    Servlet的描述。

  displayName:     Servlet的顯示名稱。

  initParams:        Servlet的init參數。

  name:        Servlet的名稱。

  urlPatterns:    Servlet的訪問URL。

  value:          Servlet的訪問URL。

  Servlet的訪問URL是Servlet的必選屬性,可以選擇使用urlPatterns或者value定義。

  像上面的AnnotationServlet可以描述成@WebServlet(name="AnnotationServlet",value="/AnnotationServlet")。

  也定義多個URL訪問:

  如@WebServlet(name="AnnotationServlet",urlPatterns={"/AnnotationServlet","/AnnotationServlet2"})

  或者@WebServlet(name="AnnotationServlet",value={"/AnnotationServlet","/AnnotationServlet2"})

 

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM