Servlet和JSP學習總結(六)-- 部署描述符與@webservlet注解


之前我們在編寫HelloWorld項目時,在WEB-INF目錄下創建了一個web.xml文件。這個文件叫做部署描述文件,每個Servlet應用程序的部署描述文件的名稱都是web.xml。Web容器在啟動時讀取該文件,對應用程序進行配置。下面給出了部署描述文件中常用的元素

<servlet></servlet> 用來聲明一個Servlet的信息,主要有以下子元素

  • <servlet-name> 用來定義Servlet的名稱,該名稱在整個應用中必須是惟一的
  • <servlet-class> 用來指定Servlet的完全限定類名。
  • <init-param> 用來定義參數,可有多個init-param。Servlet類中通過getInitParamenter(String name)方法訪問初始化參數。
  • <load-on-startup> 指定當Web應用啟動時,裝載Servlet的次序。當值為正數或零時,Servlet容器先加載數值小的Servlet。當值為負或未定義時,Servlet容器將在Web客戶首次訪問這個Servlet時加載它。

<servlet-mapping><servlet-mapping>用來定義Servlet所對應的URL,包含兩個子元素

  • <servlet-name> 指定要映射的Servlet的名稱。
  • <url-pattern> 指定servlet所對應的URL。

使用@webservlet注解也可以實現相同的功能。下面給出了@webservlet注解的屬性以及與之對應的部署描述文件中的元素。

@webservlet的屬性 對應的部署描述文件中的元素 備注
name servlet-name 如果沒有顯示指定,則取值即為Servlet類的完全限定類名
urlPatterns url-pattern
value url-pattern 與urlPatterns不能共存
loadOnStartup load-on-startup
initParams init-param

下面我們把之前的HelloWorld項目使用注解的方式重新寫一遍

package com.mc.hello;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet(name = "helloworld", urlPatterns = { "/hello" })
public class HelloWorldServlet implements Servlet{

    private transient ServletConfig servletConfig;
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        this.servletConfig = servletConfig;
    }

    @Override
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        
        writer.print("<html><head></head><body>Hello World!" + getServletConfig().getServletName() +"</body></html>");
    }

    @Override
    public void destroy() {}

    @Override
    public ServletConfig getServletConfig() {
        return servletConfig;
    }

    @Override
    public String getServletInfo() {
        return "HelloWorld Servlet";
    }
}


免責聲明!

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



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