我有这个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行为:
值="〈%=用户信息.获取字符串("电子邮件")%〉"
我删除了这一行,它运行得非常好(但我需要它来获得值)。当我保留第61行并试图删除它时:
值="〈%=用户信息.获取字符串("用户名")%〉"
在我的页面的第52行,它仍然不工作。
我还将第52行替换为第61行,它工作正常。
我还得到这些错误:
javax.servlet.ServletException:java.sql.SQLException:未找到列'email'。java. sql. SQLException:未找到列"email"。
但我100%确定我的数据库有一个电子邮件列。而且,当我尝试为我的数据库的其他列,它返回相同的错误。它只工作,如果它是"用户名"列。请帮助我。我如何修复这个问题?
5条答案
按热度按时间jw5wzhpr1#
表达式标签表示〈%=.......〉
已带分号***(;)***位于表达式末尾。
我希望它能起作用,请试试这个。
nkcskrwz2#
试试看:
或
使用
<%= %>
表达式时没有;
。此外,我认为您不需要两个
=
标志,而只需要<%= %>
内的一个。fkvaft9z3#
尝试以下方法:
这样可以解决问题吗?实际上单引号可能会引起问题
kknvjkwl4#
由于原始错误是
java.sql.SQLException
,现在先不考虑JSP错误。为
UserPhotosDataContext.getUserProfileInfo(userId)
编写一些测试,以便可以调试ResultSet。您确定
email
在表中-are you sure it's in the sql query ?
另外,检查是否按照列在ResultSet中出现的顺序从ResultSet中检索列。
例如,如果结果集为:
email, username, ...
然后在您已经访问
username
MIGHT
之后尝试访问email
不起作用。我之所以说
MIGHT
,是因为这可能特定于您正在使用的任何数据库驱动程序--我在使用Sybase时遇到过这个问题。qyyhg6bp5#
您需要尝试,(如果您使用MySQL作为数据库)“MySQL连接器”jar文件,添加或(复制)到您的服务器lib文件夹中。