You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Servlet项目index.html文件出现Stray 'html'起始标签错误求助

解决Servlet项目中index.html的Stray 'html'起始标签错误

问题根源分析

你遇到的这个错误,核心原因有两个:

  • 你在index.html文件里写了JSP的page指令(<%@ page ... %>),但.html文件默认不会被服务器当作JSP文件解析,这个指令会被直接当作普通文本输出到页面里。浏览器解析HTML时,会发现<html>标签前面有不属于HTML结构的内容,因此判定<html>是多余的(stray)标签。
  • 你的JSP指令语法也有问题:属性之间应该用空格分隔,而不是分号。你写的contentType = "text/html"; charset = "UTF-8" language = "java"里,把contentType内部参数的分隔(这个是对的,用分号)和属性之间的分隔搞混了,属性之间用分号是错误写法。

具体解决方案

  • 方案1:修改文件扩展名(推荐)
    直接把index.html改名为index.jsp,这样服务器会先解析JSP指令,不会把它输出到页面中,同时修正JSP指令的语法:

    <%@ page contentType="text/html; charset=UTF-8" language="java" %>
    <html>
    <head>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <!-- Optional theme -->
        <link rel="stylesheet" ...>
    

    这样浏览器拿到的就是标准的HTML结构,不会再报stray标签错误。

  • 方案2:配置服务器让.html文件支持JSP解析(不推荐)
    如果一定要保留.html扩展名,可以在项目的web.xml里添加映射,让服务器把.html文件交给JSP Servlet处理。比如Tomcat的配置:

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    

    但这种方法会让所有.html文件都被当作JSP处理,可能引发不必要的问题,所以优先推荐方案1。

额外注意点

  • 确保你的JSP指令没有语法错误,属性之间用空格分隔,contentType的内部参数(比如charset)才用分号分隔。
  • 检查页面其他部分有没有未闭合的标签或者不符合HTML规范的写法,这些也可能导致类似的解析错误。

内容的提问来源于stack exchange,提问作者Mikita Kazlouski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:39:39