• Servlet


    01. 新建一个WEB工程

      

    02. 在Java目录下,新建一个Class 实现 Servlet 的相关函数  (核心服务:service)

      

     03.  在 web.xml中配置映射关系

      

      

    04. 运行效果 :  http://localhost:8080/FirstWP_war_exploded/demo1

      

          此时的效果,是在界面上没有展示任何内容,但在服务端是有消息输出的;

    05. 执行原理

      

    06. 鉴于Servlet在内存中仅存在一份,多人请求时,将存在线程安全,所以在service函数中,尽量不要定义成员变量,一般只配置局部变量使用;

      即使非得使用成员变量,最好是只读,不要去写;

    -----------------------------------------------

    上述内容中,关于servlet配置,有些麻烦,每个servlet都需要配置,

    从 servlet3.0开始 (javaEE6开始),可以支持注解了,可以不需要web.xml了   

    在Servlet类上,添加上注解  @WebServlet(urlPatterns="/demo1")

    对于最重要的内容,同样可以使用value属性进行配置,  @WebServlet(value="/demo1")

    若只配置一个value值,则value可以省略; @WebServlet("/demo1")

    ---------------------------------------

    IDEA与TomCat的相关配置

    1. IDEA会为每个tomcat部署的项目单独建立一份配置文件; 

    Using CATALINA_BASE: "C:\Users\WTL\AppData\Local\JetBrains\IntelliJIdea2021.2\tomcat\b1e271b4-26c4-49e8-8230-06489215f0ee"
    Using CATALINA_HOME: "D:\apache-tomcat-8.5.65"
    Using CATALINA_TMPDIR: "D:\apache-tomcat-8.5.65\temp"
    Using JRE_HOME: "D:\Java_Work\JDK\jdk1.8.0_281"
    Using CLASSPATH: "D:\apache-tomcat-8.5.65\bin\bootstrap.jar;D:\apache-tomcat-8.5.65\bin\tomcat-juli.jar"

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

      tomcat真正访问的是  "tomcat部署的web项目" ,"tomcat部署的web项目"对应着 "工作空间项目"的web目录下的所有资源;

           WEB-INF目录下的资源,不能被浏览器直接访问;

    3. 项目配置

      

       在配置跳转,Servlet请求时,需要注意
       * 内部跳转请求,不需要配置虚拟目录;

      * 若给前端应用调用,需要配置虚拟目录; 

      * 虚拟目录获取: request.getContextPath()

      * 返回消息中的配置

        * 状态码配置: response.setStatus(200);

        * 字符集设置: response.setContentType("text/html;charset=utf-8");

         

    ---------------------------

    关于 ServletContext 对象

    1. 概念:代表整个WEB应用,可以和程序的容器(服务器)来通信;

    2. 获取

      a. 通过 request 获取:   request.getServletContext();

      b. 通过 HttpServlet   获取:  this.getServletContext();

    3. 功能

      a. 获取MIME类型

        MIME类型:在互联网通信过程中定义的一种文件数据类型;

              *  格式: 大类型/小类型    text/html;  image/jpeg

              * 获取: String getMimeType(String fileName);

      b. 域对象:共享数据;

        1. setAttribute(String var1, Object var2);

        2. Object getAttribute(String var1);

        3. void removeAttribute(String var1);

        ** ServletContext 对象范围:所有用户所有请求的数据都可以共享

          (A浏览器setAttribute后,关掉浏览器,B用户其它浏览器可以通过 getAttribute 取到这个共享数据)

      c. 获取文件的真实(服务器)路径

        1. 方法: String getRealPath(String path);

        2. 开发阶段资源存放位置及发布后位置的对应关系

            

       d.  文件下载涉及到内容点的描述

        1. 浏览器端,在请求资源时,超链接的配置:

          --> <a href="/demo02/img/shops.jpg">图片</a>

            上述方式,将直接加载图片,并在浏览器中展示图片,只有在无法直接解析的内容上,才会下载;

        2. 若想要图片也下载,则需要自行配置内容打开方式,涉及到响应头的配置

          --> <a href="/demo02/download?filename=shops.jpg">图片</a>

            请求自己的服务,在自己的服务中配置文件打开方式;

           -->  提供自己的servlet服务,并在服务中对下载操作 做出相应的处理 

            

     

  • 相关阅读:
    【Qt开发】QTableWidget设置根据内容调整列宽和行高
    【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框
    【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框
    【Qt开发】Qt5.7串口开发
    【Qt开发】Qt5.7串口开发
    Oracle监听配置、数据库实例配置等
    SqlMapConfig.xml中的setting属性 Ibatis mybatis
    Hibernate的like用法
    eclipse逆向生成实体类注解方式或者xml方式
    struts2 ValueStack详解,页面获取值el表达式、ognl表达式
  • 原文地址:https://www.cnblogs.com/jieling/p/16074842.html
Copyright © 2020-2023  润新知