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服务,并在服务中对下载操作 做出相应的处理 

        

 

 

 

 

 

 

 

 

 

posted @ 2022-04-01 21:35  耗喜天涯  阅读(78)  评论(0编辑  收藏  举报