一、Servlet快速入门
1.创建web项目,导入Servlet依赖坐标(scope范围为provided因为上传后tomcat也有这个,可能会冲突)pom.xml
javax.servlet
javax.servlet-api
3.1.0
provided
2.创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话(在java文件下创建com.itheima.web.ServletDemo1)
3.配置:在类上面使用@WebServlet注解配置该Servlet的访问路径 (只演示了service方法)
package com.itheima.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet hello world~");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
4.右键:Run Maven/tomcat7:run运行项目,访问路径:http://localhost:8080/web-demo/demo1
二、Servlet的执行流程
1.Servlet由谁创建?Servlet方法由谁调用?
答:Servlet由web服务器创建,Servlet方法由web服务器调用。
2.服务器怎么知道Servlet中一定有servlet方法》
答:因为我们自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法
三、Servlet生命周期
@WebServlet(urlPatterns=”/demo”, loadOnStartup = 1) 负整数:第一次被访问时创建Servlet对象。0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次。
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4.服务终止:当容器需要释放内存或者容器关闭时调用destory()方法完成资源的释放,该实例会被垃圾回收。
方法:getServletInfo返回提示信息,作者没什么用一般返回null或者空字符串
方法:getServiceconfig()方法暂时用不到,后面用到了说,就是要用config
package com.itheima.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
public class ServletDemo2 implements Servlet {
/*初始化方法
* 1. 调用时机:默认情况下,Servlet被第一次访问,调用
* 2. 调用次数:1次
* */
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("哈哈哈");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello world");
}
@Override
public String getServletInfo() {
return null;
}
// 销毁方法:内存释放,被调用一次
@Override
public void destroy() {
}
}
四、Servlet体系结构
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get....");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post...");
}
}
五、Servlet urlPattern配置
1.Servlet 要想被访问,必须配置其访问路径(urlPattern)
2.一个Servlet,可以配置多个 urlPattern
@WebServlet(urlPattern = {“/demo1″,”/demo2”})
3.urlPattern 配置规则
(1)精准匹配 (2)目录匹配 (3)扩展名匹配 (4)任意匹配
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* urlPattern:一个Servlet可以配置多个访问路径
*/
@WebServlet(urlPatterns = {"/demo3","/demo4"})
public class ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo3 get...");
}
}
六、XML配置方式编写 Servlet
1.Servlet从3.0之后开始支持注解配置,3.0版本之前只支持xml配置文件的配置方式 了解
步骤:
(1)编写Servlet类
(2)在web.xml中配置该Servlet
ServletDemo4.java
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ServletDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo4 .. get");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
web.xml
Archetype Created Web Application
demo4
com.itheima.servlet.ServletDemo4
demo4
/demo4
Original: https://blog.csdn.net/m0_61927991/article/details/127802617
Author: 代码界小菜鸟
Title: 5.Servlet
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660733/
转载文章受原作者版权保护。转载请注明原作者出处!