java开发之ServLet注解、自定义容器方式详解

目录

一、为什么使用注解方式和自定义容器方式

二、注解方式步骤

1、创建javaEE8版本的web项目

2、创建一个类MyServlet继承HTTPServlet类并重写doGet()和doPost()方法

3、在MyServlet类头上添加@WebServlet()注解

4、在@WebServlet()注解中配置Servlet相关属性

5、通过Tomcat发布项目

6、通过浏览器查看

三、@WebServlet()注解配置

1、参数说明

 2、参数配置方法

四、自定义容器方式 

1、定义一个类(servlet类),继承HttpServlet类,并重写doGet和doPost方法

2、定义一个类(容器实现类),实现ServletContainerInitializer接口

3、在src下创建一个META-INF的包并在该包下创建services包

4、在services包下创建javax.servlet.ServletContainerInitializer文件,文件内容为容器实现类的全类名

5、重写容器实现类中的onStartup方法来对servlet进行配置

6、将项目部署到Tomcat并启动


一、为什么使用注解方式和自定义容器方式

在javaEE8版本后创建的web项目基本都没有web.xml文件,所以缺少了servLet的配置文件该如何来进行servLet的声明配置呢?其实在Servlet3.0版本后除了配置web.xml文件的方式外,常用的ServLet配置方法还有注解方式和自定义容器的方式,注解方式是javaEE8以后常用的servLet配置方式,需要和配置文件方式一样重点掌握,而自定义容器方式了解即可,但相对来说自定义容器方式是最灵活的方式。

二、注解方式步骤

1、创建javaEE8版本的web项目

java开发之ServLet注解、自定义容器方式详解_第1张图片

web目录下无web.xml文件,(若想使用配置文件方式进行ServLet的配置,可手动创建web.xml文件进行配置)

2、创建一个类MyServlet继承HTTPServlet类并重写doGet()和doPost()方法

3、在MyServlet类头上添加@WebServlet()注解

4、在@WebServlet()注解中配置Servlet相关属性

package com.wangyang;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/serv02")
public class MyServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    {
        System.out.println("myServlet02成功启动!!!");
    }

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
    {
      doGet(req,resp);
    }
}

5、通过Tomcat发布项目

java开发之ServLet注解、自定义容器方式详解_第2张图片

 

6、通过浏览器查看

 成功访问!!!

 

三、@WebServlet()注解配置

1、参数说明

java开发之ServLet注解、自定义容器方式详解_第3张图片

 2、参数配置方法


@WebServlet(name = "MyServlet",  //Servlet名
	urlPatterns = "/serv02",   //Servlet访问的url
	loadOnStartup = 1,      //Servlet创建的时机
	initParams = {         //ServletConfig的相关配置
			@WebInitParam(name="name", value="YWANG"), 
			@WebInitParam(name="pwd", value="123456")
	}
)

四、自定义容器方式 

1、定义一个类(servlet类),继承HttpServlet类,并重写doGet和doPost方法

package com.wangyang;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    {
        System.out.println("myServlet02成功启动!!!");
    }

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
    {
      doGet(req,resp);
    }
}

2、定义一个类(容器实现类),实现ServletContainerInitializer接口

3、在src下创建一个META-INF的包并在该包下创建services包

java开发之ServLet注解、自定义容器方式详解_第4张图片

 

4、在services包下创建javax.servlet.ServletContainerInitializer文件,文件内容为容器实现类的全类名

com.wangyang.MyRegister

5、重写容器实现类中的onStartup方法来对servlet进行配置

(1)创建一个Servlet对象

(2)调用ServletContext对象的addServlet方法将创建好的Servlet对象进行添加并返回该Servlet对象的动态配置对象

(3)通过调用动态配置对象的相关方法进行Servlet的相关配置

package com.wangyang;

import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import java.util.Set;

//实现 ServletContainerInitializer接口
public class MyRegister implements ServletContainerInitializer {
    //重写onStartup方法
    @Override
    public void onStartup(Set> set, ServletContext servletContext) throws ServletException {
        //1、创建一个servlet对象
         MyServlet ms =new MyServlet();
        //2、将servlet对象添加到servletContext对象中去获取Servlet的动态配置对象
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("MyServlet",ms);
        //3、通过Servlet的动态配置对象的相关方法进行Servlet的相关配置
        dynamic.addMapping("/serv02");  //设置访问接口相当于配置url-patten
        dynamic.setLoadOnStartup(1);   //设置创建时机
    }
}

6、将项目部署到Tomcat并启动

java开发之ServLet注解、自定义容器方式详解_第5张图片 成功启动!!! 

你可能感兴趣的:(servlet,java)