首页 > 编程语言 >Java登陆第二十七天——多种方法Servlet映射、Content-Type

Java登陆第二十七天——多种方法Servlet映射、Content-Type

时间:2023-12-21 21:45:45浏览次数:47  
标签:Java 映射 TestServlet1 Servlet resp Content Type 报文

正常的Servlet映射

    <!--
     1.servlet-name     用于关联映射路径
     1.servlet-class    告诉Tomcat要实例化Servlet类的全类名
     2.url-pattern      URL路径
               -->
    <servlet>
        <servlet-name>Test1</servlet-name>
        <servlet-class>com.example.JavaWeb.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Test1</servlet-name>
        <url-pattern>/TestServlet</url-pattern>
    </servlet-mapping>

同一个Servlet可以拥有多个映射路径

但同一个映射路径不能服务多个Servlet

    <!--
     同一个Servlet可以拥有多个映射路径。但同一个映射路径不能服务多个Servlet
               -->
    <servlet>
        <servlet-name>Test1</servlet-name>
        <servlet-class>com.example.JavaWeb.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Test1</servlet-name>
        <url-pattern>/TestServlet</url-pattern>
        <url-pattern>/TestServlet2</url-pattern>
        <url-pattern>/TestServlet3</url-pattern>
    </servlet-mapping>

这种方法也太麻烦了,注解登场!!

使用注解映射Servlet

@WebServlet("映射地址")注解的方式替代web.xml映射

//注解映射和web.xml不能映射同一个地址
//注解映射和web.xml不能映射同一个地址
//注解映射和web.xml不能映射同一个地址
@WebServlet("/Test1")
public class TestServlet1  extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //resp.setContentType("text/html"); 检验默认的响应报文头Content-Type
        PrintWriter writer = resp.getWriter();
        writer.write("<h1>TestServlet1</h1>");
        //如果不是HTML肯定不会正确解析H1标签
    }
}

映射路径可以使用通配符

通配符 描述
/ 所有资源,但不包括jsp文件
/* 所有资源,包括jsp文件
通配符举例 描述
/a/* 以a开头的所有资源
*.a 以.a为后缀的所有资源

测试通配符

TestServlet1

@WebServlet("/*")
public class TestServlet1  extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // HttpServletRequest对象是请求报文,HttpServletResponse是响应报文
        PrintWriter writer = resp.getWriter();
        writer.write("TestServlet1");
    }
}

客户端请求URL:http://localhost:8080/JavaWeb_war_exploded/a/b/dasda.html
image

客户端请求URL:http://localhost:8080/JavaWeb_war_exploded/dddddd.css
image

响应报文补充

Http文章,提及过响应报文头Content-Type

  • Content-Type
    • 响应报文主体的数据类型(浏览器根据该类型进行对应的解析)

image

栗子

请求服务器内finger.jpg
image

至此,在编写Servlet中,应该正确的编写响应报文头Content-Type与其值。
Content-Type与其值

如果不编写Content-Type。默认值为:(并且指定编码UTF-8)

Content-Type: text/html; charset=utf-8

校验默认的Content-Type

TestServlet1

@WebServlet("/Test1")
public class TestServlet1  extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //resp.setContentType("text/html"); 检验默认的响应报文头Content-Type
        PrintWriter writer = resp.getWriter();
        writer.write("<h1>TestServlet1</h1>");
        //如果不是HTML肯定不会正确解析H1标签
    }
}

image

标签:Java,映射,TestServlet1,Servlet,resp,Content,Type,报文
From: https://www.cnblogs.com/Ocraft/p/17920174.html

相关文章

  • java读取yaml文件
    应用场景自动化测试中,用例数据存放在yaml文件中 数据 person.yaml---id:1name:韧age:18---id:2name:qzcsbjage:19person2.yaml----id:3name:小韧age:18-id:4name:全栈测试笔记age:19person3.yaml----id:5......
  • JavaScript 中 for-in 循环和 for-of 循环的区别和适用场景
    前言在JavaScript中,循环是一种非常常见的操作。其中,for-in循环和for-of循环是两种常用的循环方式。本文将详细介绍这两种循环方式的用法、特点以及适用场景,帮助读者更好地理解和应用它们。正文内容一、for-in循环1.用法for-in循环用于遍历对象的属性。其基本语法如下:......
  • module java.base does not export sun.net.util to unnamed module
    目录使用jdk17启动flink1.15报错:java.lang.reflect.InaccessibleObjectException:Unabletomakefieldprivatefinalbyte[]java.lang.String.valueaccessible:modulejava.basedoesnot"opensjava.lang"tounnamedmodule@6e60f18解决办法:启动参数添加add-opens......
  • HttpServletRequest(一)
    HttpServletRequest是Java的ServletAPI中定义的一个接口。它继承自ServletRequest,并基于HTTP协议提供对用户请求信息进行统一封装的接口。当客户端浏览器发出请求时,该请求被封装为一个HttpServletRequest对象。这个对象包含了客户端请求的各种信息,如请求的地址、请求的参数、提交......
  • java中字符串的比较以及string 方法图解
    最近在项目中经常要用到字符串的比较,因此做了一个简略的总结,希望对大家有所帮助!!!!!!!!!!!!!!!1总体来说java中字符串的比较是比较引用,equals比较值的做法。(equals对于其他引用类型比较的是地址,这是因为object的equals方法比较的是引用),但是不同的声明方法字符串的比较结果也是不同的。例如:S......
  • java中对于jvm虚拟机进程的操作类
    在java中,Runtime类表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。下面图示演示了其方法以及应用。......
  • java Stream
    一、Stream1、概述 2、Stream流使用过程 示例图: 3、 Stream流的常见生成方式 示例:packageitbianma01;importjava.util.*;importjava.util.stream.Stream;publicclassDemo{publicstaticvoidmain(String[]args){//方式一:Collection......
  • JavaScript 数组方法重写
    constlist=[1,2,3]Array.prototype.myForeach=function(fn){for(leti=0;i<this.length;i++){fn(this[i],i,this)}}Array.prototype.myMap=function(fn){const_list=[]for(leti=0;i<this.length;i......
  • Java基础语法入门
    1.引言:Java是一门强大而广泛应用的编程语言,其灵活性和可靠性使其成为许多开发者的首选。不仅在企业级应用程序中发挥着重要作用,而且在移动应用、大数据处理和嵌入式系统等领域也得到了广泛运用。学习Java是成为一名全栈开发者的绝佳起点之一,因为它具有跨平台性、面向对象的特性以......
  • 若依框架跑起来,Java小白入门(一)
    背景本人Java小白,有一点编程基础(c#)。企业数字化建设大环境是JAVA,所以需要搞起来,而学习最快的方式就是读代码,学以致用干项目。所以这个系列就是从小白看能否变成小黑。码云上有很多框架,所以需要选择一款容易入手的,看star量和历史,以及各种ruoyi变异版本,路径就比较清楚,本身其有......