目录
一、为什么使用注解方式和自定义容器方式
二、注解方式步骤
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配置方式,需要和配置文件方式一样重点掌握,而自定义容器方式了解即可,但相对来说自定义容器方式是最灵活的方式。
web目录下无web.xml文件,(若想使用配置文件方式进行ServLet的配置,可手动创建web.xml文件进行配置)
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);
}
}
@WebServlet(name = "MyServlet", //Servlet名
urlPatterns = "/serv02", //Servlet访问的url
loadOnStartup = 1, //Servlet创建的时机
initParams = { //ServletConfig的相关配置
@WebInitParam(name="name", value="YWANG"),
@WebInitParam(name="pwd", value="123456")
}
)
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);
}
}
com.wangyang.MyRegister
(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); //设置创建时机
}
}