Servlet

web相关概念

  1. 软件架构

    • CS,客户端/服务器
    • BS,浏览器/服务器
  2. 资源分类

    • 静态资源,所有用户访问后得到的结果一样,称为静态资源,静态资源能被浏览器解析。

      如,html、css、javascript

    • 动态资源,用户访问后得到的结果可能不一样,称为动态资源,动态资源被访问后,需要转换为静态资源,再给浏览器

      如,servlet/jsp、php、asp

  3. 网络通信三要素

    • IP,电子设备在网络中的唯一标示
    • 端口,应用程序在计算机的唯一标示,0-65536
    • 传输协议,规定了数据传输的规则

web服务器软件

  • 服务器,安装了服务器软件的计算机
  • 服务器软件,接受用户请求,处理请求,作出响应
  • web服务器人间,接受用户请求,处理请求,作出响应
    • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
    • web容器
  • 常见的java相关web服务器软件
    • webLogic,oracle公司,大型javaEE服务器,支持所有javaEE规范,收费
    • websphere,IBM公司,大型javaEE服务器,支持所有javaEE规范,收费
    • JBoss,JBoss公司,大型javaEE服务器,支持所有javaEE规范,收费
    • Tomcat,Tomcat基金会,中小型javaEE服务器,支持部分规范servlet/jsp,开源、免费

Tomcat常见问题

  • 黑窗口一闪而过

    1. 原因,没有正确配置JAVA_HOME环境变量
  • 启动报错

    1. 原因,8080端口被占用

    2. 解决

      • 关闭使用8080端口的软件

        netstart -ano 查询所有端口的使用情况,关注8080端口的PID

        任务管理器——查看——选择列——PID

        结束相应PID进程

      • 修改自己的端口

        Tomcat目录——conf——server.xml

        <Connector port="80" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
        

        一般会将Tomcat的端口号改为80,因为http协议的端口号为80。在访问时不用输入端口号。

  • 关闭

    • 正常关闭

      shutdown.bat

      启动窗,Ctrl+c

    • 强制关闭

      关闭启动窗

  • 配置

    部署项目方式

    • 直接将项目放在webapps目录下

      http://localhost/hello/hello.html

      /hello,项目的访问路径——虚拟目录

    • 简单部署

      1. 将项目打成一个war包,放在webapps文件夹下,会自动解包,当删除war包是相应的解压包也会被删除

      2. 在server.xml中Host标签体中添加

        docBose,路径

        path,虚拟目录

        <!--部署项目-->
        <Context docBose="F:\makedown\hello" path="/asd" />
        
      3. 在conf\Catalina\localhost,创建任意xml文件,编写

        <Context docBose="F:\makedown\hello"/>
        

        文件名就是虚拟目录

    静态项目与动态项目

    • 目录结构
      • java动态项目,目录结构
        • 项目根目录
          • WEB-INF目录
            • web.xml,web项目的核心配置文件
            • classes目录,放置字节码文件的目录
            • lib目录,放置依赖jar包的目录

    将Tomcat集成到IDEA中,并创建JavaEE项目,部署项目

Servlet

  • 概念,(server applet),运行在服务器端的小程序

    • Servlet就是一个接口,定义了java类被浏览器访问(Tomcat识别)的规则
    • 将来我们自定义一个类,实现Servlet接口,复写方法
  • 快速入门

    1. 创建javaEE项目

    2. 定义类,实现Servlet接口

      public class ServletDemo01 implements Servlet
      
    3. 实现接口中的方法

    4. 配置Servlet,在web.xml中配置

    <!--配置Servlet-->
        <servlet>
            <servlet-name>demo001</servlet-name>
            <servlet-class>com.aaa.web.servlet.ServletDemo01</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>demo001</servlet-name>
            <url-pattern>demo001</url-pattern>
        </servlet-mapping>
    
  • 执行原理

    1. 当服务器接收客户端浏览器的请求的时候,会解析请求url路径,获取访问的Servlet资源路径
    2. 查找web.xml文件,是否对应标签体内容
    3. 如果有则找到对应的全类名
    4. Tomcat会将字节码文件加载进内存,并创建其对象
    5. 调用其方法
  • Servlet的生命周期

    1. 被创建,执行init方法,只执行一次

      • Servlet什么时候被创建

        <!-- 指定Servlet创建时机 
        在servlet标签下配置
        1.默认第一次访问时创建
             <load-on-startup>的值为负数 
        2.在服务器创建时访问
             load-on-startup>的值为0或正整数 -->
        <load-on-startup>5</load-on-startup>
        
      • Servlet的init方法只执行一次,说明Servlet在内存中只存在一个对象,Servlet是单例

        • 多个用户访问时,可能存在线程安全问题
        • 解决,尽量不要在Servlet中定义成员变量,即使定义了成员变量也不要修改值
    2. 提供服务,执行service方法,访问一次就执行一次

      • 每次访问Servlet时,service方法就会被调用一次
    3. 被销毁,执行destroy方法,只执行一次

      • Servlet被销毁时执行,服务器被关闭时,Servlet被销毁
      • 服务器正常关闭时,才会执行destroy方法
  • Servlet3.0

    • 好处,支持注解配置,可以不需要web.xml

    • 步骤

      1. 创建一个javaEE项目,选择Servlet版本3.0以上,可以不用创建web.xml

      2. 定义一个类,实现Servlet接口

      3. 复写方法

      4. 在类上使用@WebServlet注解,进行配置

        @WebServlet("资源路径(记得加/)")
        

IDEA与Tomcat的相关配置

  1. IDEA会为每一个,会为每一个Tomcat部署的项目,单独配置一份文件

    • 查看控制台log,

      Using CATALINA_BASE: “C:\Users\SW.IntelliJIdea2018.3\system\tomcat\Tomcat_9_0_31_servl”

  2. 工作空间项目和Tomcat部署的项目

    • Tomcat真正访问的是“Tomcat部署的项目”,“Tomcat部署的项目”对应着“工作空间项目”的web目录下的所有资源
    • WEB-INF下的资源不能被浏览器直接访问

Servlet的体系结构

  • Servlet——接口
    • GenericServlet——抽象类
      • HttpServlet——抽象类
  1. GenericServlet

    • 将Servlet接口中的其他方法做了默认空实现,只将service方法做了抽象
    • 将来定义Servlet类时,可以继承GenericServlet,实现service方法即可
  2. HttpServlet

    • 对http协议的一种封装,简化操作
    1. 定义类,继承HttpServlet方法
    2. 复写,doGet/doPost方法

Servlet的相关配置

  • urlPatterns(),Servlet访问路径
    • 一个Servlet可以有多个访问路径,@WebServlet({"/demo06","/d6","/dd6","/ddd6"})
    • 路径的dingyiguize
      • /XXX
      • /xxx/xxx,多层路径,目录结构
      • *.xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值