背景:在一个模拟用户提交的jsp页面,点击提交,进入到用户页时。
遇到的问题:在原页面点击提交跳转,就会500报错,
窗口页面(原页面代码-response03.jsp)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script type="text/javascript">
function resetValue(){
document.getElementById("userName").value="";
document.getElementById("pwd").value="";
}
</script>
<%
String userName = null;
String pwd = null;
Cookie[] cookies= request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
if(cookies[i].getName().equals("userNameAndPwd")){
userName=cookies[i].getValue().split("-")[0];
pwd=cookies[i].getValue().split("-")[1];
}
}
%>
</head>
<body>
<form action="userLogin.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="userName" name="userName" value="<%=userName%>"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="pwd" name="pwd" value="<%=pwd%>"></td>
</tr>
<tr>
<td>记住密码:</td>
<td><input type="checkbox" id="remember" name="remember" value="remember-me"></td>
</tr>
<tr>
<td><input type="submit" value="登陆"></td>
<td><input type="button" value="重置" onclick="resetValue()"></td>
</tr>
</table>
</form>
</body>
</html>
跳转后的页面代码(userLogin.jsp)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
String userName = request.getParameter("userName");//获取用户名
String pwd = request.getParameter("pwd");//获取密码
String remember = request.getParameter("remember");//获取记住密码
if("remember-me".equals(remember)){
Cookie userNameAndPwd = new Cookie("userNameAndPwd",userName+"-"+pwd);
userNameAndPwd.setMaxAge(1*60*60*24*7);//设置成一周
response.addCookie(userNameAndPwd);//保存cookie
System.out.println("设置cooike成功");
}
System.out.println("userName:"+userName);
System.out.println("pwd:"+pwd);
System.out.println("remember:"+remember);
response.sendRedirect("response03.jsp");
%>
</body>
</html>
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 无法为JSP编译类:
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.apache.jasper.JasperException: 无法为JSP编译类:
JSP文件:[/userLogin.jsp] 的第 [20] 行发生了一个错误
System.out cannot be resolved to a type
17: Cookie userNameAndPwd = new Cookie("userNameAndPwd",userName+"-"+pwd);
18: userNameAndPwd.setMaxAge(1*60*60*24*7);//璁剧疆鎴愪竴鍛�
19: response.addCookie(userNameAndPwd);//淇濆瓨cookie
20: System.out.println("璁剧疆cooike鎴愬姛");
21: }
22: System.out.println("userName:"+userName);
23: System.out.println("pwd:"+pwd);
JSP文件:[/userLogin.jsp] 的第 [22] 行发生了一个错误
System.out cannot be resolved to a type
19: response.addCookie(userNameAndPwd);//淇濆瓨cookie
20: System.out.println("璁剧疆cooike鎴愬姛");
21: }
22: System.out.println("userName:"+userName);
23: System.out.println("pwd:"+pwd);
24: System.out.println("remember:"+remember);
25: response.sendRedirect("response03.jsp");
JSP文件:[/userLogin.jsp] 的第 [23] 行发生了一个错误
System.out cannot be resolved to a type
20: System.out.println("璁剧疆cooike鎴愬姛");
21: }
22: System.out.println("userName:"+userName);
23: System.out.println("pwd:"+pwd);
24: System.out.println("remember:"+remember);
25: response.sendRedirect("response03.jsp");
26: %>
JSP文件:[/userLogin.jsp] 的第 [24] 行发生了一个错误
System.out cannot be resolved to a type
21: }
22: System.out.println("userName:"+userName);
23: System.out.println("pwd:"+pwd);
24: System.out.println("remember:"+remember);
25: response.sendRedirect("response03.jsp");
26: %>
27: </body>
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:101)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:569)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:380)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:350)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
Apache Tomcat/8.5.75
错误都是指向输出语句报错,不太能理解。
1、尝试过删除输出语句,里面的cookie代码正常运行,但一旦书写了输出语句就是500错误。
2、导入过java.lang包但是,效果相同。
正常情况在登陆页输入信息,勾选必选,点击提交按钮,可以进入到用户页面创建cooike并且保存到cookie信息,且能在控制台上打印信息,最后用户页面重定向回登陆页面。
System.out.println是将信息打印到控制台,如果你想把信息打印到页面上,用out.println()
重新编译一次看看
删掉<%@ page import="java.util.*"%>试试
最后怎么解决了
怎么解决的
看一下官方给的解决办法
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=jdk-8272079