java org.apache.jasper.JasperException:处理JSP页/editinfo.jsp时出现异常

yhuiod9q  于 2023-02-11  发布在  Java
关注(0)|答案(5)|浏览(139)

我有这个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%确定我的数据库有一个电子邮件列。而且,当我尝试为我的数据库的其他列,它返回相同的错误。它只工作,如果它是"用户名"列。请帮助我。我如何修复这个问题?

jw5wzhpr

jw5wzhpr1#

表达式标签表示〈%=.......〉
已带分号***(;)***位于表达式末尾。

value='<%= userInfo.getString("email") ; %>'

我希望它能起作用,请试试这个。

nkcskrwz

nkcskrwz2#

试试看:

value "<%= userInfo.getString("email") %>"

value <%= userInfo.getString("email") %>

使用<%= %>表达式时没有;
此外,我认为您不需要两个=标志,而只需要<%= %>内的一个。

fkvaft9z

fkvaft9z3#

尝试以下方法:

value='<%=userInfo.getString("email")%>'

这样可以解决问题吗?实际上单引号可能会引起问题

kknvjkwl

kknvjkwl4#

由于原始错误是java.sql.SQLException,现在先不考虑JSP错误。
UserPhotosDataContext.getUserProfileInfo(userId)编写一些测试,以便可以调试ResultSet。
您确定email在表中-are you sure it's in the sql query ?
另外,检查是否按照列在ResultSet中出现的顺序从ResultSet中检索列。
例如,如果结果集为:
email, username, ...
然后在您已经访问usernameMIGHT之后尝试访问email不起作用。
我之所以说MIGHT,是因为这可能特定于您正在使用的任何数据库驱动程序--我在使用Sybase时遇到过这个问题。

qyyhg6bp

qyyhg6bp5#

您需要尝试,(如果您使用MySQL作为数据库)“MySQL连接器”jar文件,添加或(复制)到您的服务器lib文件夹中。

相关问题