Servlet介绍
Serlet 快速入门
因为web项目运行在Tomcat时,Tomcat自带Servlet.jar 必须使用provided避免jar冲突
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId** <version>3.1.0</version>
<scope>provided</scope> // 必须使用provided </dependency>
</dependencies>
——————————————————————————-
http://localhost:8088/demo1
——————————————————————————
/
定义一个实现类重写接口中所有方法
在Servlet使用@WebServlet注解
*/
@WebServlet(“/demo1”)
public class ServletDemo implements Servlet {
**_@Override<br /> _public void service**(**ServletRequest _servletRequest_, ServletResponse _servletResponse_**) **throws ServletException, IOException **{<br /> **System.out.println**(**"hello!"**)**;<br /> **}
**_@Override<br /> _public void init**(**ServletConfig _servletConfig_**) **throws ServletException **{ }
**_@Override<br /> _public ServletConfig getServletConfig**() { **return null; **}
**_@Override<br /> _public String getServletInfo**() { **return null; **}
**_@Override<br /> _public void destroy**() { }<br />}**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12745457/1645607785164-665c782c-acdf-49d6-8b98-88802ca7ea4d.png#clientId=uc29ec63a-ed1b-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=67&id=udaea1dfe&margin=%5Bobject%20Object%5D&name=image.png&originHeight=100&originWidth=482&originalType=binary&ratio=1&rotation=0&showTitle=false&size=48056&status=done&style=none&taskId=u2ebf8cb6-febd-4d95-826d-8749dcd78af&title=&width=321.3333333333333)
Serlet 执行流程
Servlet由Tomcat创建,也由Tomcat调用service()方法
Serlet 生命周期
init()初始化方法
/
@author 李畅
定义一个实现类重写接口中所有方法
在Servlet使用@WebServlet注解
配置loadOnStartup方法 更改默认创建servlet时机
注解@target中value为一个时可以不加
如果注解有多个参数需要标明value的值
Servlet中value喝urlPatterns的值一样所以可以替代
/
@WebServlet(urlPatterns = “/demo2”,loadOnStartup = 1)
public class ServletDemo1 implements Servlet {
/
初始化方法
1.调用时机:默认情况下,Servlet第一次访问时
2.调用次数:只调用一次
/
@Override
_public void init(ServletConfig _servletConfig) throws ServletException {
System.out.println(“init….”);
}
调整创建时间更改loadOnStartup默认值-1 为1 就提前创建init
service()提供服务
/
提供服务
1.调用时机:每一次访问Servlet时 都被调用
2.调用次数:多次访问
/
_@Override
_public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println(“hello!”);
}**
destroy()销毁方法
/*
销毁方法
1.调用时机:Servlet对象因为内存释放或者服务器关闭时被调用
2.调用次数:一次
*/
@Override
public void destroy() {
System.out.println(“shutdown”);
}
Serlet 方法介绍
/
获取Servlet配置对象
/
_@Override
_public ServletConfig getServletConfig() {
return null;
}
/
获取对象信息
/_@Override
_public String getServletInfo() {
return null;
}
同类中方法调用局部变量
/
web服务器初始化Servlet需要调用init方法需要传入一个servletConfig对象
但是init方法中的对象只存在于方法中,如果想获取局部变量就要提升为全局变量
创建一个全局变量,使用this关键字赋值
/
private ServletConfig config;
@Override
_public void init(ServletConfig _servletConfig) throws ServletException {
this.config = servletConfig;
System.out.println(“init….”);
}
_@Override
_public ServletConfig getServletConfig() {
return config;
}
Serlet 体系结构
面向B/S端开发的web项目都是针对HTTP协议,使用HttpServlet
/
配置WebServlet接口
/
@WebServlet(“/httpdemo”)
public class ServletDemo2 extends HttpServlet {
/
创建一个类继承HttpServlet
覆写doGet()和doPost()方法
/
@Override
_protected void doGet(HttpServletRequest _req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(“get。。。”);
*}
**_@Override<br /> _protected void doPost**(**HttpServletRequest _req_, HttpServletResponse _resp_**) **throws ServletException, IOException **{<br /> **System.out.println**(**"post。。。"**)**;<br /> **}<br />}**<br />**默认调用get页面**<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/12745457/1645774563864-1feb4684-8ef0-4f17-b5b8-115c24f12352.png#clientId=u736b7ae4-14de-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=54&id=ub3a3e68c&margin=%5Bobject%20Object%5D&name=image.png&originHeight=81&originWidth=414&originalType=binary&ratio=1&rotation=0&showTitle=false&size=40311&status=done&style=none&taskId=u7794b572-85ec-4ab0-9d45-8c98a57ba21&title=&width=276)<br />**页面指定路径访问该页面是POST**<br /> <!--action是请求路径,访问该项目路径--><br />**<**form action="/httpdemo" method="post"**><br /> <**label**><br /> <**input name="username"**><br /> <**input type="submit"**><br /> </**label**><br /></**form**>**
HttpSerlet使用步骤
Servlet urlPattern配置
UrlPatterns
/
* urlPattern: 一个Servlet可以配置多个访问路径
/
@WebServlet(urlPatterns = {“/demo5”,”/demo6”})
public class ServletDemo4 extends HttpServlet {
@Override
_protected void doGet(HttpServletRequest _req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(“demo5 get…”);
**}
**_@Override<br /> _protected void doPost**(**HttpServletRequest _req_, HttpServletResponse _resp_**) **throws ServletException, IOException **{<br /> **super.doPost**(**_req_, _resp_**)**;<br /> **}<br />}