13

我有代码(现在在github中),例如:

my.jsp(一个通用的 jsp——我所有的 jspS 或多或少都遵循这个模式)

<%@ include file="include/top.jsp" %>
<title>THE TITLE</title>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="include/head.jsp" %>
<%@ include file="include/no_menu.jsp" %>
CONTENT
<%@ include file="include/bottom.jsp" %>

在哪里 :

顶部.jsp:

<%@ page session="false"%>
<%@ include file="tag_libs.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

头.jsp:

<link href="${pageContext.request.contextPath}/css/twoColFixLtHdr.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="container"><!-- closes in bottom -->
        <div class="header"><!-- closes in menu -->
            <p>
                <a href="home"> <img src="${pageContext.request.contextPath}/images/logo7.jpg"
                    alt="Ted 2012 Logo" name="Ted 2012 Logo" id="Ted_2012_Logo"
                    style="background: display:block; padding: 5px 20px; margin-left: 150px; border-style: solid" /></a>
            </p>
            <hr />

no_menu.jsp:

</div>
<div class="content">

底部.jsp:

        </div>
        <div class="footer">
            <p>
                blah
            </p>
        </div>
    </div>
</body>
</html>

如您所见-或者您可以相信我的话-标签正确平衡。我的问题是 -为什么我不能包括

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

top.jsp我的文件中的指令?相信我,它什么也没做。我应该担心<%@ page session="false"%>同样被忽略吗?

谢谢

4

2 回答 2

14

您不需要将@page指令放在每个包含的 JSP 文件中。严格来说,它们不是 JSP,它们是包含在 JSP中的文本文件。@include相当于将包含页面中的文本剪切并粘贴到主 JSP 中。这就像#includeC 中的指令。

请尝试将其放在主 JSP 文件<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>第一行(即包含其他文件的那个),并且不要将它放在其他任何地方。
希望能帮助到你。

于 2012-09-30T15:58:01.760 回答
-2

在 HTTP 标头中设置 Content-Type

这是为单个页面设置 Content-Type 的最佳方式,因为它在 Precedence Rules 列表中最高。托管您的 FeedSweep 小部件的网页的 HTTP 标头值可以使用以下任何一种服务器端脚本语言设置:

。网

内容类型和字符集在响应对象上设置。要设置字符集,请使用:

  • Response.ContentType = "文本/html; charset=UTF-8";

Perl

在实际页面的任何部分之前输出正确的标题。在最后一个标题之后,使用双换行符。

  • print "Content-Type: text/html; charset=utf-8\n\n";

Python

使用与 Perl 相同的解决方案(除了最后不需要分号)。

  • print "内容类型: text/html; charset=utf-8\n\n"

PHP

在生成任何内容之前使用 header() 函数。

  • header('内容类型: text/html; charset=utf-8');

Java 小服务程序

在获取用于输出的任何对象(Stream 或 Writer)之前,在 ServletResponse 上使用 setContentType 方法。

  • resource.setContentType("text/html;charset=utf-8");

如果您使用 Writer,Servlet 会自动处理从 Java 字符串到所选编码的转换。

JSP

使用页面指令:

  • <%@ page contenttype="text/html; charset=UTF-8"%>

out.println() 或表达式元素 (<%= object%>) 的输出会自动转换为所选编码。此外,页面本身被解释为处于这种编码中。

ASP

内容类型和字符集在响应对象上设置。要设置字符集,请使用:

  • <%Response.charset="utf-8"%>
于 2014-08-24T15:53:17.060 回答