Servlet和JSP学习总结(六)-- 部署描述符与@webservlet注解

本文介绍了在Servlet应用程序中使用的部署描述文件web.xml的作用及其常用元素,包括<servlet>、<servlet-mapping>等,并展示了如何使用@webservlet注解替代传统配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我们在编写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的属性对应的部署描述文件中的元素备注
nameservlet-name如果没有显示指定,则取值即为Servlet类的完全限定类名
urlPatternsurl-pattern
valueurl-pattern与urlPatterns不能共存
loadOnStartupload-on-startup
initParamsinit-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";
    }
}

转载于:https://www.cnblogs.com/phofyang/p/7395260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值