• 7、Tomcat & Servlet


    一、引言

    1、C/S架构和B/S架构

    C/S架构和B/S架构是软件发展过程中出现的两种软件架构方式

    (1)C/S架构(Client/Server 客户端/服务端)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVKBSgjH-1660492507700)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050057863.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5uVhRyq-1660492507705)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050316889.png)]

    (2)B/S架构(Browser/Server 浏览器/服务器)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BExdmOQx-1660492507710)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050156004.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ge8aWcWN-1660492507712)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050338934.png)]

    二、服务器

    1、web

    2、web服务器

    3、常见的web服务器

    在这里插入图片描述

    4、tomcat服务器

    (1)下载:

    http://tomcat.apache.org/

    (2)解压安装

    (3)目录介绍

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3HZRtEZ3-1660492507714)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210904181718260.png)]

    (4)启动和停止

    在这里插入图片描述

    在这里插入图片描述

    停止

    在这里插入图片描述

    (5)验证

    在这里插入图片描述

    (6)修改端口号

    端口的取值范围是:0-65535。

    在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,这个数字以后的端口部分被使用,所以网络编程可用的端口一般在1024之后选取。

    修改端口号之后必须要重启才能生效

    在这里插入图片描述

    (8)项目部署

    方式一:webapps目录

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    方式二:

    在这里插入图片描述

    在这里插入图片描述

    (8)tomcat响应流程

    在这里插入图片描述

    (9)常见错误404, 500

    三、Servlet

    1、概念

    在这里插入图片描述

    2、作用

    在这里插入图片描述

    3、编写一个Myservlet.java,编译后放入web-inf目录下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkKYnF40-1660492507745)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054327660.png)]

    4、配置web.xml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9F1yoUMq-1660492507746)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054111745.png)]

    5、执行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SB7JEGp-1660492507747)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054427110.png)]

    6、常见错误:500

    7、idea中创建servlet

    在这里插入图片描述

    配置:web.xml

    <servlet>
    	<servlet-name>myservlet-name>
        <servlet-class>com.cykj.servlet.MyServletservlet-class>
    servlet>
    
    <servlet-mapping>
    	<servlet-name>myservlet-name>
        <url-pattern>/myservleturl-pattern>
    servlet-mapping>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    8、idea中配置tomcat

    (1)集成tomcat到idea:

    在这里插入图片描述
    在这里插入图片描述

    (2)二次配置:把项目配置到tomcat

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTa3hnID-1660492507754)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061634533.png)]
    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHb4g5ri-1660492507756)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061858193.png)]

    9、打包war包(正式发布)

    开发版(热部署),发布版

    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGEKHGxJ-1660492507758)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063233595.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9XRYK1x-1660492507759)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063324358.png)]
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    四、Servlet详解

    1、核心接口和类(实现Servlet的三种方法)

    在这里插入图片描述

    Servlet接口

    在这里插入图片描述

    GenericServlet抽象类:简化Servlet

    在这里插入图片描述

    **HttpServlet类:**与协议有关的Servlet(推荐)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2、常见错误

    404

    500

    Servlet配置同名

    Servlet路径错误

    3、Servlet两种配置方式:

    (1)web.xml配置(Servlet2.5之前)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    通过init方法测试

    (2)注解(Servlet3.0之后)

    @WebServlet

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    注意:注解和web.xml不冲突,可以共存。但是不会这么做

    工作中还是用web.xml配置比较多,它是各个版本通用的

    4、request对象

    在这里插入图片描述

    get请求和post请求

    在这里插入图片描述

    request的主要方法

    注册案例:

    在这里插入图片描述
    在这里插入图片描述

    添加action地址:

    在这里插入图片描述

    在这里插入图片描述

    中文乱码问题

    在这里插入图片描述

    在这里插入图片描述

    改为post方式:method改为post

    post中文乱码

    在这里插入图片描述

    在这里插入图片描述

    5、response对象

    在这里插入图片描述

    主要方法

    在这里插入图片描述

    输出客户端乱码

    在这里插入图片描述

    解决输出中文乱码

    在这里插入图片描述

    检查network

    在这里插入图片描述

    6、转发

    在这里插入图片描述

    跳转

    Aservlet

    在这里插入图片描述

    Bservlet

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    数据传递

    在这里插入图片描述

    转发的特点

    在这里插入图片描述

    7、重定向

    在这里插入图片描述

    页面跳转

    在这里插入图片描述

    在这里插入图片描述

    数据传递

    在这里插入图片描述

    重定向的特点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-II8qN6tB-1660492507804)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071820460.png)]

    转发与重定向的总结

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGwAAb6a-1660492507806)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071940923.png)]

    8、Servlet的生命周期

    (1)实例化

    在这里插入图片描述

    (2)初始化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfUtnZsp-1660492507808)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072325581.png)]

    (3)服务

    在这里插入图片描述

    (4)销毁

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovzegHk7-1660492507810)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072435263.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUnFX5Mx-1660492507811)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831043956369.png)]

    9、Servlet特性

    (1)线程安全问题

    在这里插入图片描述

    (2)解决线程安全问题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4RATO0F-1660492507814)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901073359344.png)]

    10、过滤器

    在这里插入图片描述

    过滤器的作用

    在这里插入图片描述

    编写过滤器

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    sout
    //让请求继续
    filterChain.doFilter(servletRequest,servletResponse);
    sout
    
    • 1
    • 2
    • 3
    • 4

    xml方式配置过滤器:

    <filter>
    	<filter-name>filter-name>
        <filter-classs>filter-classs>
    filter>
    
    <filter-mapping>
    	<filter-name>filter-name>
        <url-pattern>url-pattern>//要拦截的资源路径
    filter-mapping>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    拦截请求

    在这里插入图片描述

    乱码处理
    在这里插入图片描述

    登入验证

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lzWBmzIJ-1660492507827)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210902074344222.png)]

    10、Servlet总结

    Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。

    针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

    在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

    五、cookie

    什么是cookie

    在这里插入图片描述

    创建cookie

    //创建cookie
    Cookie cookie = new Cookie("acc","zhangsan");
    //将cookie响应给客户端
    resp.addCookie(cookie);
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述

    设置cookie的访问路径

    cookie.setPath("/myServlet/get");//设置只能让项目中的get这个Servlet可以访问
    
    • 1

    在这里插入图片描述

    设置cookie的有效期

    cookie.setMaxAge(60*60);//设置cookie有效期为1小时(默认是浏览器关闭)
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    获取cookie

    //通过request对象获取所有的cookie
    Cookie[] cookies = req.getCookies();
    //通过循环遍历cookie
    if(null!=cookies){
    	for(Cookie cookie:cookies){
            System.out.println(cookie.getName()+":"+cookie.getValue());
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    修改cookie

    在这里插入图片描述

    创建中文cookie

    在这里插入图片描述

    读取带中文的cookie

    在这里插入图片描述

    cookie的优缺点

    在这里插入图片描述

    六、session对象

    1、概述

    在这里插入图片描述

    2、原理

    在这里插入图片描述

    3、使用

    在这里插入图片描述

    4、session

    获取session

    //获取session
    
    HttpSession session = request.getSession();
    System.out.println(session.getId);
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    session通过cookie的方式发送给客户端

    在这里插入图片描述

    保存和获取session数据

    //第一个Servlet中保存session数据
    session.setAttribute("username","zhangsan");
    
    //另一个Servlet中获取session的内容
    HttpSession session = request.getSession();
    String s = (String) session.getAttribute("username");
    System.out.println("从session中获得了:"+s);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    移除数据

    HttpSession session = request.getSession();
    session.removeAttribute("username");
    
    • 1
    • 2

    session的生命周期

    在这里插入图片描述

    session.setMaxInactiveInterval(10);//有效期10秒
    session.invalidate();//立即注销
    
    • 1
    • 2

    request和session的区别

    在这里插入图片描述

  • 相关阅读:
    城市之间的联系
    [ctf学习]ctfhub技能树-web
    PAT 1033 To Fill or Not to Fill
    DNS服务器典型配置
    2023前端大厂高频面试题之CSS篇(2)
    人工智能:科技之光,生活之美
    .netcore对传输类设置区分大小
    6.1810: Operating System Engineering Lab: Xv6 and Unix utilities By:Haostart
    挠场的科学丨四、穿梭阴阳的挠场——道家风水、八卦、布阵的解密
    基于EXCEL数据表格创建省份专题地图
  • 原文地址:https://blog.csdn.net/qq_37917691/article/details/126338616