文章目录
1、什么是Servlet2、Servlet快速入门3、Servlet生命周期4、Servlet体系结构5、urlPatern配置6、XML编写Servlet
1、什么是Servlet
Servlet是Java提供的一门动态web资源开发技术Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet接口,并由web服务器运行Servlet
2、Servlet快速入门
创建web项目,导入Servlet依赖坐标
创建:定义一个类,实现Servlet接口,并重写接口中的所有方法,并在service方法中输入一句话
public class Demo01 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");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
配置:在类上实用@WebServlet注解,配置该Servlet的访问路径
@WebServlet("/demo01")
访问:启动Tomcat,浏览器输入URL 访问该Servlet
3、Servlet生命周期
Servlet生命周期就是Servlet从创建到销毁的过程
测试
@WebServlet("/demo01")
public class Demo01 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化方法");
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello");
}
@Override
public void destroy() {
System.out.println("销毁方法");
}
分别在init方法、service方法、destroy方法输出语句,运行时发现init方法调用一次,之后通过不断刷新,会重复调用service方法,直至关掉服务器调用destroy方法
这样我们发现,只有访问网页,Servlet才会进行初始化,那如何在服务器启动的时候就加载Servlet
解决方法:为注解添加参数
@WebServlet(value = "/demo01",loadOnStartup = 1)
负整数:第一次访问时创建Servlet对象0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高
4、Servlet体系结构
大部分开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet
@WebServlet("/demo03")
public class Demo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是demo3,doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo3 doPost");
}
}
要想发送一个GET请求,请求该Servlet,只需要通过浏览器发送http://localhost:8080/web-demo/demo4,就能看到doGet方法被执行了要想发送一个POST请求,请求该Servlet,单单通过浏览器是无法实现的,这个时候就需要编写一个form表单来发送请求,在webapp下创建一个a.html页面,内容如下:
GET
启动测试,即可看到doPost方法被执行了。
5、urlPatern配置
Servlet类编写好后,要想被访问到,就需要配置其访问路径(urlPattern)
其实就是前面的value,两个属于等价关系,但是不能同时存在
@WebServlet(value = "/demo01",loadOnStartup = 1)
一个Servlet,可以配置多个urlPattern
urlPattern配置规则:
1、精确匹配
/**
配置路径
*/
@WebServlet(value = "/order/demo04")
访问路径:localhost:9999/Tomcat_war_exploded/order/demo04
2、目录匹配
/**
配置路径
*/
@WebServlet(value = "/order/*")
访问路径:localhost:9999/Tomcat_war_exploded/order/任意
表示order目录下的所有路径都能够访问
3、扩展名匹配
/**
配置路径
*/
@WebServlet(value = "*.do")
访问路径:localhost:9999/Tomcat_war_exploded/order/任意.do
4、任意匹配
/**
配置路径
*/
@WebServlet(value = "/*")
访问路径:localhost:9999/Tomcat_war_exploded/任意
访问优先级问题
前缀匹配高于后缀匹配匹配原则:最佳匹配原则,哪个接近就访问哪个优先级顺序:精确匹配>目录匹配>任意匹配>后缀匹配
6、XML编写Servlet
Servlet从3.0版本后开始支持使用注解配置,3.0版本前只支持XML配置文件的配置方法
步骤:
编写Servlet类在web.xml中配置该Servlet
演示
编写Servlet类
public class demo5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是demo5,doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是demo5, doPost");
}
}
在web.xml中配置该Servlet
这种配置方式和注解比起来,确认麻烦很多,所以建议大家使用注解来开发。但是大家要认识上面这种配置方式,因为并不是所有的项目都是基于注解开发的。
精彩文章
发表评论