@WebServlet属性

@WebServlet属性简化了web.xml的配置,更加方便开发。

一、不使用注解开发

在不使用注解的情况下,需要配置web.xml。

1、配置Tomcat

2、 创建一个类,实现Servlet接口,并实现五个方法

import javax.servlet.*;
import java.io.IOException;

public class ServiceDemo1 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello service");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

3、 配置web.xml

给该类起名demo1,配置其全类名,给demo1一个访问路径/demo1

    <!--配置servlet-->
    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>cn.qianhan.web.servlet.ServiceDemo1</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>

在访问时,会根据URL中/demo1找到url-pattern,再根据url-pattern找到servlet-name,最后根据servlet-name找到全类名servlet-class,最终访问到该类。

该方式存在的问题是:如果有很多个类需要配置,web.xml配置文件会很多内容,非常麻烦。

二、使用@WebServlet注解开发

 直接在类上加上注解即可使用

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet(urlPatterns = "/demo")
public class ServiceDemo implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet3.0来了");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

注解直接写在类名上,省去了起名、写全路径的操作,直接给访问路径。

三、@WebServlet属性

点开该注解的源码,可以看到有如下属性:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    String name() default "";

    String[] value() default {};

    String[] urlPatterns() default {};

    int loadOnStartup() default -1;

    WebInitParam[] initParams() default {};

    boolean asyncSupported() default false;

    String smallIcon() default "";

    String largeIcon() default "";

    String description() default "";

    String displayName() default "";
}
属性名属性类型属性描述
nameString等价于配置文件中的<servlet-name>。由于注解配置直接写类名上,故不用额外自己起名字,因此默认“ ”
valueString[]访问路径,等价于urlPatterns
urlPatternsString[]访问路径,等价于配置文件中的<url-pattern>。如果配置多个路径,则用{ }包起来。
loadOnStartupintServlet加载方式。负数:第一次访问时加载。正数:启动服务时加载。默认是负数(-1)。
initParamsWebInitParam[]初始化参数
asyncSupportedboolean是否支持异步操作,默认是false

以上也可以在web.xml中配置,但直接在注解中配置更加方便。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值