Servlet基础详解

作用:

(运行在服务器端的小程序)

用于开发动态web的技术,定义了被tomcat识别的规则

依赖服务器才能运行,由Tomcat执行

基础使用:

创建JavaEE项目,写一个类实现Servlet接口,配置Servlet

其中service方法是用来重写提供服务的方法

配置在web.xml文件中添加servlet在项目中的路径(<servlet-class>)和servlet的映射(<servlet-mapping>)

结构:

Java中servlet的结构为: 

Servlet类(接口)—继承—>GenericServlet类(抽象类)—继承—>HttpServlet(抽象类)

实现:

配置(传统):

<servlet> 
    <servlet-name>servlet name</servlet-name> 
    <servlet-class>处理请求的类的完整路径</servlet-class> 
</servlet> 
<servlet-mapping>
    <servlet-name>servlet name</servlet-name> 
    <url-pattern>请求名(url)</url-pattern> 
</servlet-mapping>

配置(注解):不需要web.xml,直接在Servlet实现类上方使用@WebServlet注解

@WebServlet(urlPatterns="url内容")
//实现类
@WebServlet({"//url内容1","//url内容2","/url内容3"})
//实现类
补充:路径定义规则

多层路径:xxx/xxx url需要多层进行访问

通配符:/* url后面写任何内容都返回相同内容

通配符接具体内容:/*xxx 必须以xxx结尾之前随意

另外一般会在Tomcat中配置虚拟目录以方便url路径的管理

一,实现Servlet接口

提供五个抽象方法:

void init(ServletConfig servletConfig){
    //初始化方法,在servlet被创建时执行
}
void service(ServletRequest servletRequest, ServletResponse servletResponse){
    //处理get/post请求的方法(提供服务的方法)
}
void destroy(){
    //销毁的方法
}
ServletConfig getServletConfig(){
    return servletConfig;
    //用于获取ServletConfig对象(Servlet配置对象)
}
String getSerletInfo(){
    return info;
    //用于获取版本作者等信息
}
二,继承GenericServlet

GenericServlet类对Servlet接口的部分方法进行了默认的实现,所以继承GenericServlet类可以只重写Service方法,重点关注Service的实现

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // 处理请求
}
三,继承HttpServlet类
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 处理 GET 请求的逻辑
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 处理 POST 请求的逻辑
}
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 处理 PUT 请求的逻辑
}
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 处理 DELETE 请求的逻辑
}

原理:

第一步当服务器接受到客户端请求后,会先解析请求URL路径,获取访问的servlet资源路径

第二步查找web.xml文件是否有对应的<url-parttern>,如果找到那么直接找到其对应的<servlet-class>

第三步Tomcat将字节码文件加载到内存(.class文件),创建实现了servlet类的对象,然后调用其方法(service方法)

生命周期:

实现Servlet接口的生命周期:

-被创建(init方法执行)

        默认情况下第一次访问时创建,可以配置<load-on-startup></load-on-startup>,(配置正整数或0时,在服务器启动时创建;配置负数时则在第一次被访问时创建)
        init方法只执行一次,说明一个Servlet在内存中只存在一个,Servlet是单例的,多个用户同时访问时也就可能存在安全问题:解决方法是尽量不要在Servlet中定义成员变量,一般在Service方法中直接定义变量即可,如果一定要定义,那就不要修改成员变量值

-提供服务(service方法执行)

-被销毁(destroy方法执行)

        服务器正常关闭时执行destroy方法,且destroy方法在Servlet被销毁之前执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值