关于JSP文件运行时出现HTTP Status 500 – Internal Server Error的解决办法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/daimashiren/article/details/89021682

编者在测试Scriplet(代码段)的用法的时候写了下面这一段代码

<%@ page contentType="text/html";charset=UTF-8" %>
<html> 
<head> 
<title> Scriplet 应用</title>
<meta charset = "UTF-8"> 
</head>
<body>
<%!
public static final String MSG = "Hello World !";
%>
<%
int num = 0 ;        //局部变量
for (int i = 0 ; i < 10 ;i ++) 
{
num = num + i ; 

%> 
<h3><%=MSG%></h3> 
<h2>0+1+2+3+...+9的和为:<% = num % ></h2> 
</body> 
</html>

如果运行正常应该会输出以下结果:

但是运行的结果却是这样的:

 

 

系统提示HTTP Status 500 – Internal Server Error的错误,错误的具体信息是1.jsp (line: [1], column: [2]) Unterminated [&lt;%@ page] tag 意思是第一行第二列的标签未闭合,于是根据错误提示我检查了自己的代码发现了如下错误:

问题就出在这里的contentType="text/html "; charset=UTF-8"   上,这里的contentType 后面的应该是个完整的句子,正确的写法应该是contentType="text/html ; charset=UTF-8" ,即把中间的双引号去掉就好了。

在浏览器中运行一下,发现竟然是不行。。。不过这次是另一个错误,是第19行的标签未闭合(所以在运行代码前要检查好还有没有其他的错误。。。)

 

查看第19行的代码(这里建议用Notepad编写jsp代码,因为很直观的可以看到类似与标签未闭合的错误)找到了错误所在

右边的  "%>" 没标黄说明没有成对,仔细看了一下,发现多了个空格在 "%"  和  " > "  之间,把空格删掉。检查下代码,貌似没问题了。。。

然鹅运行之后。。。WTM竟然还有问题

 

额,,,尴尬,编程小白总是容易踩到各种坑,按照上面的提示,还是第19行,这次,而是出在那个等号上,查看了一些资料,发现scriplet中有三种常用的Scriplet标记,<% %>  、<%= %>  、<%! %> ,通常用<%...%>区域定义局部变量、编写逻辑代码。在"<%!...%>"区域定义全局变量。通常使用"<%=...%>"替代out.println()语句输出返回值。这里主要是想提醒各位,"<%" 、"<%=" 、"<%!" 可以看作是一个完整的符号,它们之间不能有空格,否则会导致上面提到的类似的错误。把下面箭头处的空格去掉

变成这样

运行一下,成功输出。

 

 

 

PS:有的浏览器可能输出的是下面的结果,这是因为浏览器的默认编码格式不一样,本例中用的是UTF-8编码,但是很多浏览器的默认编码格式为gbk,这时候只要修改一下编码格式为gbk就能正确输出了。

本人是菜鸟,才疏学浅,以上有什么不对的地方还请各位大佬批评指正。

 

展开阅读全文

没有更多推荐了,返回首页