E011Web学习笔记
E011Web学习笔记
1、概述
概念:
运行在服务器上的小程序;
实际上Servlet是一个接口,定义了Java类被浏览器访问到(或者说被Tomcat识别的)规则;
使用:
自定义一个类实现Servlet接口,复写其中方法;
2、快速入门
步骤:
第一步:创建一个JavaEE项目;
代码语言:javascript代码运行次数:0运行复制在学习Tomca的时候创建了web项目;
第二步:定义一个类,实现Servlet接口;
代码语言:javascript代码运行次数:0运行复制public class MyServlet implements Servlet{
//...
}
第三步:实现接口中的抽象方法;
代码语言:javascript代码运行次数:0运行复制可根据IDEA的提示实现;
例如:
package com.zibo.servlet;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//提供服务的方法
@Override
public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
println("Hello Servlet!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
第四步:配置Servlet
代码语言:javascript代码运行次数:0运行复制-- 在web.xml中配置:
<!--配置Servlet-->
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.zibo.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/my</url-pattern>
</servlet-mapping>
访问http://localhost:8080/web_war_exploded/my的结果是:
、执行原理
第一步:当服务器接收到浏览器客户端发出的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径;
第二步:查web.xml文件,是否存在对应的<url-pattern>标签体内容;
第三步:如果有则查到对应的<servlet-class>全类名;.
第四步:Tomcat会将字节码文件加载到内存,并创建其对象;
第五步:调用对象的方法;
1、被创建
执行init方法,执行一次;
一般用于加载资源;
Servlet被创建的时间:
代码语言:javascript代码运行次数:0运行复制Servlet被创建的时间:
默认情况下,第一次被访问时,Servlet被创建;
可以指定Servlet被创建的时间;
指定Servlet被创建的时间:
<!--配置Servlet-->
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.zibo.servlet.MyServlet</servlet-class>
<!--指定servlet被创建时间
值为负整数(默认):第一次访问时创建;
值为正整数:在服务器启动时创建;
-->
<load-on-startup>1</load-on-startup>
</servlet>
Servlet是单例的
代码语言:javascript代码运行次数:0运行复制问题:
Servlet只执行一次,说明只有一个Servlet对象,Servlet是单例的,当多个用户同时访问时,可能存在安全问题;
解决:
尽量不要在Servlet中定义成员变量。即使定义了成员变量也不要对其值进行修改操作;
2、提供服务
执行service方法,执行多次;
每次访问Servlet时,service方法都会被调用一次;
、被销毁
执行destroy方法,执行一次;
Servlet被销毁之前(服务器正常关闭时)执行,但是服务器若没有正常关闭,destroy方法是不会执行的;
一般用于释放资源;
4、方法介绍:
代码语言:javascript代码运行次数:0运行复制package com.zibo.servlet;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
//初始化方法-在Servlet被创建时执行,只会执行一次;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
println("init...");
}
//(了解)获取ServletConfig对象——Servlet的配置对象
@Override
public ServletConfig getServletConfig() {
return null;
}
//提供服务的方法,每次Servlet被访问时执行,会执行多次
@Override
public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
println("Hello Servlet!");
}
//(了解)获取Servlet的一些信息:版本、作者...
@Override
public String getServletInfo() {
return null;
}
//销毁方法,在Servlet被杀死时(之前)(服务器被正常关闭时)执行,只执行一次
@Override
public void destroy() {
println("destroy...");
}
}
1、好处
支持注解配置,可以不需要web.xml了;
2、步骤
第一步:创建JavaEE项目,选择Servlet.0以上的版本,可以不勾选 web.xml;
第二步:定义一个类,实现Servlet接口,并复写其方法;
第三步:在类上使用@WebServlet注解进行配置;
代码语言:javascript代码运行次数:0运行复制注解如:只需要配置虚拟目录(资源路径)名字
@WebServlet(urlPatterns = "/my")
或者
@WebServlet("/my")
1、IDEA会为每一个Tomcat部署的项目单独建立一份配置文件;
查看控制台的log:Using CATALIA_BASE: "C:\Users\Administrator\.IntelliJIdea2019.2\system\tomcat\Tomcat_9_0_24_web_servlet"
2、工作空间项目和Tomcat部署的项目,不是同一个,但后者会自动同步前者的所有内容(资源);
WEB-IF目录下的资源不能被浏览器直接访问;
断点调试:使用“小虫子”启动——debug启动;
1、Servlet接口的实现类
GenericServlet -- 抽象类,Servlet的实现类;
HttpServlet -- 抽象类,GenericServlet的子类;
2、GenericServlet
可以通过继承GenericServlet来实现自定义的Servlet类;
继承GenericServlet只需要复写server方法即可,如下:
代码语言:javascript代码运行次数:0运行复制package com.zibo.servlet;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRespe;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/my")
public class MyServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
println("成功通过继承GenericServlet实现……");
}
}
但是,实际开发中并不用这种方式!
、HttpServlet
是对http协议的封装,可以简化操作;
使用步骤:
第一步:自定义Servlet类继承HttpServlet;
第二步:复写doGet/doPost方法;
代码示例:
代码语言:javascript代码运行次数:0运行复制package com.zibo.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespe;
import java.io.IOException;
@WebServlet("/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
super.doGet(req, resp);
println("doGet……");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
super.doPost(req, resp);
println("doPost……");
}
}
4、Servlet相关配置
①urlpartten:Servlet访问路径:
代码语言:javascript代码运行次数:0运行复制单个访问路径示例:@WebServlet("/my")
多个访问路径示例:@WebServlet({"/my","/my1","/my2"})
②路径定义规则
代码语言:javascript代码运行次数:0运行复制三种方式:
1、/xxx
2、/xxx/xxx
/*,*表示随意写都可以访问,如/1、/sfd、/42fsf;
/*的优先级最低;
、*.do
*.do表示随意写都可以访问,任意字符加上.do,而且do也不是固定的,可以.其他;
1、将请求从一个servlet转发到另一个资源(servlet,jsp或HTML文件)
代码语言:javascript代码运行次数:0运行复制示例:
req.getRequestDispatcher("/index.jsp").forward(req,resp);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除servlet服务器接口配置学习笔记 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:E012Web学习笔记
下一篇:E010Web学习笔记
推荐阅读
留言与评论(共有 19 条评论) |
本站网友 什邡市第二人民医院 | 29分钟前 发表 |
resp); println("doPost……"); } }4 | |
本站网友 和你一样mp3 | 7分钟前 发表 |
不是同一个 | |
本站网友 侠盗一枝梅 | 4分钟前 发表 |
HttpServletRespe resp) throws ServletException | |
本站网友 利血平 | 4分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看servlet服务器接口配置学习笔记 | |
本站网友 电信联通 | 15分钟前 发表 |
获取访问的Servlet的资源路径;第二步:查web.xml文件 | |
本站网友 星战英雄 | 13分钟前 发表 |
并复写其方法;第三步:在类上使用@WebServlet注解进行配置;代码语言:javascript代码运行次数:0运行复制注解如:只需要配置虚拟目录(资源路径)名字 @WebServlet(urlPatterns = "/my") 或者 @WebServlet("/my")四 | |
本站网友 啪啪基友乐 | 1分钟前 发表 |
ServletRespe servletRespe) throws ServletException | |
本站网友 烟花网站 | 25分钟前 发表 |
被销毁执行destroy方法 | |
本站网友 美白祛斑方法 | 1秒前 发表 |
ServletRespe servletRespe) throws ServletException | |
本站网友 安顺家园 | 16分钟前 发表 |
service方法都会被调用一次; | |
本站网友 今日欧元汇率 | 26分钟前 发表 |
只会执行一次; @Override public void init(ServletConfig servletConfig) throws ServletException { println("init..."); } //(了解)获取ServletConfig对象——Servlet的配置对象 @Override public ServletConfig getServletConfig() { return null; } //提供服务的方法 | |
本站网友 个人车辆违章查询 | 18分钟前 发表 |
获取访问的Servlet的资源路径;第二步:查web.xml文件 | |
本站网友 前列腺肥大症 | 1秒前 发表 |
执行一次;一般用于加载资源;Servlet被创建的时间:代码语言:javascript代码运行次数:0运行复制Servlet被创建的时间: 默认情况下 | |
本站网友 股指期货套利 | 18分钟前 发表 |
任意字符加上.do | |
本站网友 迫在眉梢 | 30分钟前 发表 |
知识补充1 | |
本站网友 颈椎病的治疗方案 | 1分钟前 发表 |
提供服务执行service方法 | |
本站网友 水落归漕 | 24分钟前 发表 |
被销毁执行destroy方法 | |
本站网友 温都水城官网 | 20分钟前 发表 |
destroy方法是不会执行的;一般用于释放资源;4 |