4-24 servlet

1.

index.jsp只用虚拟地址不用加东西是因为相当于默认的首页在tomct配置中可以设置虚拟地址如果只设置/就是在根目录中直接访问

web下其他的html访问就需要再加地址了

2.这里配置好就可以只要更改了资源(比如添加了一个html就是更新了资源设置了update resources的情况就可以重新部署)

3.

java中接口就是规则

servlet是运行在服务器端的小程序
        * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。

* 将来我们自定义一个类,实现Servlet接口,复写方法。

4.快速入门

        1. 创建JavaEE项目
        2. 定义一个类,实现Servlet接口
            * public class ServletDemo1 implements Servlet
        3. 实现接口中的抽象方法  ------五个方法  (ee解释中说过要全部实现五个方法)

        4.配置

配置这里可以配置好几个 不止一个 这里注意 

配置这里其实就是给src中的servletdemo01这种名字起一个别名 然后直接输入别名完成信息交互 

以上的快速入门这个实现了一个什么结果呢 ? 与直接放在web下的文件夹下的html有什么区别呢

实现结果:

 区别就是web下的html可以通过虚拟地址+名字访问出html网页  而这种是信息交互

servlet执行原理

        1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径demo1
        2. 查找web.xml文件,是否有对应的资源路径demo1相同的<url-pattern>标签体内容,再找到<servlet-name>demo1
        3. 如果有,则在找到对应的<servlet-class>全类名
        4. tomcat会将<servlet-class>标签里全类名对应字节码文件加载进内存,并且创建其对象
        5. 调用service方法(在servletDemo1中覆盖重写的service方法   因为servlet接口(规则)一定有这个service方法 所以方法被调用了被执行)   所以说不需要创建对象调用方法只要填写代码就可以  创建对象调用方法都是服务器执行的
 

servlet的五个抽象方法  注意配置文件也要配置好

init()初始化方阿飞  servlet创建时执行一次且只会执行一次

类比一直刷新页面  访问service();service(); 会执行多次

service(); :每一次servlet被访问时都会执行 会执行多次

destory();在servlet被杀死时执行 在服务器正常关闭时执行  只会执行一次

package cn.itcat.web.servlet;
 
import javax.servlet.*;
import java.io.IOException;
 
public class ServletDemo2 implements Servlet {
 
    /*init是初始化方法
     特点:在servlet创建时执行init();方法,只会执行一次
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init......");
    }
/*
获取servletConfig对象
ServletConfig对象是servlet的配置对象   了解  需要自己实现的
 */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
/*
service();是提供服务的方法
特点:每一次servlet被访问时都会执行 会执行多次
 */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service......");
    }
/*
获取servlet的一些信息  版本作者等  了解
 */
    @Override
    public String getServletInfo() {
        return null;
    }
/*
销毁方法destory();
在servlet被杀死时执行
在服务器正常关闭时执行  只会执行一次
 */
    @Override
    public void destroy() {
        System.out.println("destroy......");
    }
}

输出:

servlet生命周期

1.init();

指定servlet的创建时机<load-on-startup>标签

Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
                * 多个用户同时访问时,可能存在线程安全问题。 好比好多个人同时访问一个对象

(其实servletDemo中也是可以设置变量的  然后再srvice();方法中进行操作)
                * 解决:尽量不要在Servlet中定义成员变量。多定义局部变量就不会存在安全问题了 即使定义了成员变量,也不要对其修改值,在成员方法中获取值就好了 不要改变成员变量的值,否则有人修改成员变量有人使用就会产生线程安全问题
 

 2. service();   提供服务:执行service方法,执行多次
            * 每次访问Servlet时,Service方法都会被调用一次。
 3. destroy();   被销毁:执行destroy方法,只执行一次
            * Servlet被销毁时执行。服务器关闭时,Servlet被销毁
            * 只有服务器正常关闭时,才会执行destroy方法。
            * destroy方法在Servlet被销毁之前执行,一般用于释放资源

 

因为如果在配置文件中配置web.xml的话 资源多了会很乱

 * Servlet3.0注解配置
        * 好处:
            * 支持注解配置----注解又要看一下了。可以不需要web.xml了。

        * 步骤:
            1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
            2. 定义一个类,实现Servlet接口
            3. 复写方法
            4. 在类上使用@WebServlet注解,进行配置
                * @WebServlet("资源路径")注解源码                 主要是配置urlPatterns();

注意虚拟目录是在运行--编辑配置--写的     而@WebServlet注解里面写的是Servlet资源路径urlpatterns  这里的urlpatterns与之前不用注解的web.xml配置中的<url-pattern>标签是对应的

 因为如果在配置文件中配置web.xml的话 资源多了会很乱

 * Servlet3.0注解配置
        * 好处:
            * 支持注解配置----注解又要看一下了。可以不需要web.xml了。

        * 步骤:
            1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
            2. 定义一个类,实现Servlet接口
            3. 复写方法
            4. 在类上使用@WebServlet注解,进行配置
                * @WebServlet("资源路径")注解源码                 主要是配置urlPatterns();

配置最主要的就是资源路径和原来配置文件中<url-pattern>的别名映射起来

Servlet3.0注解配置方法一

 Servlet3.0注解配置方法简化成  其实这里是value省略了

 注意区别

虚拟目录是项目访问方式(项目是project)

@WebServlet("资源路径")  括号中是资源路径是urlpattern  与原来配置文件中<url-pattern>标签的映射地址是一样的

项目中src的资源是交互的

web文件夹下的html是网页   index.jsp是默认首页

打断点调试点小虫子

(107条消息) 64-Servlet02_山东大葱的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值