org.apache.jasper.JasperException:处理 JSP 页面 /editinfo.jsp 时发生异常
Posted
技术标签:
【中文标题】org.apache.jasper.JasperException:处理 JSP 页面 /editinfo.jsp 时发生异常【英文标题】:org.apache.jasper.JasperException: An exception occurred processing JSP page /editinfo.jsp 【发布时间】:2013-08-09 23:01:51 【问题描述】:我有这个 jsp 代码,我试图在其中为用户编辑我的网页的信息。我是 jsp 编程的新手,我遇到了错误。这是我的代码:
<%@page import="DatabaseTransactions.UserPhotosDataContext"%>
<%@page import="java.sql.ResultSet"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
if (session.getAttribute("id") == null)
response.sendRedirect(request.getContextPath() + "/sign-in.jsp");
int userId = Integer.parseInt(session.getAttribute("id").toString());
ResultSet userInfo = UserPhotosDataContext.getUserProfileInfo(userId);
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Edit Information</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="styles.css" rel="stylesheet">
</head>
<body class="bodybg">
<jsp:include page="/navigation.jsp"/>
<% userInfo.next();%>
<div class="boxouter" style="margin-top:50px;">
<h3 class="muted">Edit Information</h3>
<!--- more code here---->
<br><br>
<form id="update-form" method="" action="">
<table style="margin:auto">
<tr>
<!--username-->
<td>
<label>Username <span id="uname-error" class="form-error"></span></label>
<input type="text" title="Use at least 6 characters"
name="username" id="uname"
value="<%=userInfo.getString("username")%>"
placeholder="Username" disabled="true">
</td>
<!--email-->
<td>
<label>Email <span id="email-error" class="form-error"></span></label>
<input type="text"
name="email" id="email"
value="<%=userInfo.getString("email")%>"
placeholder="Email" disabled="true">
</td>
</tr>
<!--- more code here---->
</table>
<center/>
<button class="btn btn-info" onclick="enablefields();" id="enablebtn" style="visibility:visible">Edit Information</button>
<a id="savelink" href="#" style="color:white;">
<button class="btn btn-info" id="savebtn" type="submit" style="visibility:hidden">Save</button>
</a>
<a href="#" style="color:white">
<button class="btn btn-info" id="deactivatebtn" style="visibility:visible">Deactivate Account</button>
</a>
</form>
</div>
</div>
<br><br>
<!--- more code here---->
<script type="text/javascript">
function setValues()
if ("<%=userInfo.getString("gender")%>" == "Male")
$('select option:contains("Male")').prop('selected',true);
else if ("<%=userInfo.getString("gender")%>" == "Female")
$('select option:contains("Female")').prop('selected',true);
window.onload = setValues;
</script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-modal.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-popover.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-modalmanager.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/editinfo.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/holder.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/logout.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-dropdown.js"></script>
</body>
</html>
当我运行它时,我得到了这个错误:
org.apache.jasper.JasperException:发生异常处理 JSP 页面 /editinfo.jsp 在第 61 行
第 61 行是:
value=""
我删除了这条线,它工作得很好(但我需要这个来获得价值)。当我保留第 61 行并尝试删除它时:
value=""
在我页面的第 52 行,它仍然不起作用。
我还将第 52 行替换为第 61 行,它可以工作。
我也收到这些错误:
javax.servlet.ServletException:java.sql.SQLException:找不到列“电子邮件”。 java.sql.SQLException:找不到列“电子邮件”。
但我 100% 确定我的数据库有一个电子邮件列。此外,当我对数据库的其他列尝试此操作时,它会返回相同的错误。它仅适用于“用户名”列。请帮我。我该如何解决这个问题?
【问题讨论】:
问题是关于你得到的 sql 异常。尝试在你的 jsp 之外测试这行代码 userInfo.getString("username") ,并检查是否有效。 @loan - 我尝试显示警报并且它有效。 @Prabhaker 你是什么意思?我这里有:ResultSet userInfo = UserPhotosDataContext.getUserProfileInfo(userId); 还是不行。请帮忙:( value="" 如果这对您有用,那么您必须检查您的电子邮件类型是 varchar 还是可能的字符串格式 【参考方案1】:表达式标签的意思是
在表达式的末尾有分号(;)。
value='<%= userInfo.getString("email") ; %>'
我希望它会起作用,请试试这个。
【讨论】:
我收到警告。即使我运行它,它仍然不起作用。 :(【参考方案2】:试试:
value "<%= userInfo.getString("email") %>"
或
value <%= userInfo.getString("email") %>
当您使用<%= %>
表达式时,没有;
。
另外,我认为您不需要两个 =
标志,而只需要 <%= %>
内部的一个。
【讨论】:
【参考方案3】:试试下面的方法:
value='<%=userInfo.getString("email")%>'
这能解决问题吗?实际上单引号可能会导致问题
【讨论】:
【参考方案4】:因为原来的错误是java.sql.SQLException
现在忘记JSP 错误。
为UserPhotosDataContext.getUserProfileInfo(userId)
编写一些测试,以便调试 ResultSet。
您确定email
在表中 - 您确定它在 sql 查询中吗?
此外,请检查您是否按照它们在 ResultSet 中出现的顺序从 ResultSet 中检索列。
例如,如果您的 ResultSet 是:
email, username, ...
然后在您已经访问过username
之后尝试访问email
可能不起作用。
我说 MIGHT 因为这可能特定于您使用的任何数据库驱动程序 - 我在使用 Sybase 时遇到了这个问题。
【讨论】:
【参考方案5】:您需要尝试,(如果您使用 mysql 作为 DB)“MySQL 连接器”jar 文件,添加或(复制)到您的服务器 lib 文件夹中。
【讨论】:
以上是关于org.apache.jasper.JasperException:处理 JSP 页面 /editinfo.jsp 时发生异常的主要内容,如果未能解决你的问题,请参考以下文章