栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

4-24 servlet

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

4-24 servlet

1.

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

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

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

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相同的标签体内容,再找到demo1
        3. 如果有,则在找到对应的全类名
        4. tomcat会将标签里全类名对应字节码文件加载进内存,并且创建其对象
        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 {
 
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init......");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service......");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("destroy......");
    }
}

输出:

servlet生命周期

1.init();

指定servlet的创建时机标签

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配置中的标签是对应的

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

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

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

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

Servlet3.0注解配置方法一

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

 注意区别

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

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

项目中src的资源是交互的

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

打断点调试点小虫子

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号