JSP页面多次执行Java代码

JSP页面多次执行Java代码,jsp,Jsp,即使是一个简单的System.out.println也会执行多次。有一个循环,它是一样的。原因可能是什么?我不知道还有什么其他信息可以帮助你,所以如果你需要了解其他信息,请告诉我 这是我的密码: <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page i

即使是一个简单的System.out.println也会执行多次。有一个循环,它是一样的。原因可能是什么?我不知道还有什么其他信息可以帮助你,所以如果你需要了解其他信息,请告诉我

这是我的密码:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="db.DBManager, data.Klausur, data.Benutzer, common.Tuple, common.Berechtigung, java.util.ArrayList, java.util.HashMap, java.util.Date, java.text.SimpleDateFormat"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<%@ include file="fragments/head-section.jspf"%>
<title>CHEAT - Klausur w&auml;hlen</title>
</head>

<%
int benutzerID = Integer.parseInt(session.getAttribute("benutzerID").toString());
%>
<script type="text/JavaScript">
if (<%=benutzerID%><=0) {
    $(document).on('pagebeforeshow', function() {
        window.location.href = "index.jsp";
    });
}
</script>
<%
session.setAttribute("benutzerID",benutzerID);
Object kID = session.getAttribute("klausurID");
int alterKlausurID = 0;
if(kID != null) {
    alterKlausurID = Integer.parseInt(session.getAttribute("klausurID").toString());
    session.setAttribute("klausurID", alterKlausurID);
    }
%>

<body>

<jsp:useBean id="dbm" class="db.DBManager"></jsp:useBean>

<%
    // Änderungen an der Datenbank (eintragen, ändern, löschen) werden vorgenommen

    //alterMsg: Klausur erfolgreich eingetragen etc.
    String alterMsg = ""; 
    String alterName = request.getParameter("name");
    String alterDateString = request.getParameter("date");

    String participants = request.getParameter("teilnehmer");

    // Die User-Rechte werden abgefragt

    ArrayList<Benutzer> users = new ArrayList<Benutzer>(dbm.getAllUsers());
    System.out.println("Anzahl Benutzer: "+users.size());
    HashMap<Integer,Berechtigung> radios = new HashMap<Integer,Berechtigung>();
    for (int i = 0; i < users.size(); i++) {
        Benutzer b = users.get(i);
        int id = b.getBenutzerID();

        Berechtigung userRight = Berechtigung.nix;

        try{
        userRight = Berechtigung.valueOf(request.getParameter(""+id));
        //System.out.println(">>DEBUG userRight: "+userRight.toString());
        }catch(Exception e){}

        switch (userRight)
        {
        case admin:
            radios.put(new Integer(id), Berechtigung.admin);
            //System.out.println("UserRecht von "+id+" geändert auf admin");
            break;
        case korrektur:
            radios.put(new Integer(id), Berechtigung.korrektur);
            //System.out.println("UserRecht von "+id+" geändert auf korrektur");
            break;
        case statistik:
            radios.put(new Integer(id), Berechtigung.statistik);
            //System.out.println("UserRecht von "+id+" geändert auf statistik");
            break;
        default: //nix
            radios.put(new Integer(id), Berechtigung.nix);
            //System.out.println("UserRecht von "+id+" geändert auf nix");
            break;

        }

        //System.out.println(">>DEBUG ID: "+id);
    }

    //Rechte eintragen
    //dbm.alterRights(alterKlausurID, radios);

    boolean isMsg = false;
    try {
        boolean delete = Boolean.parseBoolean(request.getParameter("deleteExam"));
        if (delete) {
            dbm.deleteExam(alterKlausurID);
            alterMsg = "Klausur erfolgreich gel&ouml;scht!";
            isMsg = true;
        } else if (alterKlausurID == -1) {
            dbm.createExam(alterName, alterDateString, benutzerID, radios, participants);
            alterMsg = "Klausur erfolgreich eingetragen!";
            isMsg = true;
        } else if (alterKlausurID > 0) {
            dbm.alterExam(alterKlausurID, alterName, benutzerID, alterDateString, radios, participants);
            alterMsg = "Klausur erfolgreich ge&auml;ndert!";
            isMsg = true;
        }
    } catch (Exception e) {
    }           
%>

<!-- HEADER -->
<%@ include file="fragments/header.jspf"%>

<!-- CONTENT -->
<div data-role="content" data-theme="b">
    <table id="selectExamHeading">
        <tr>
            <td>
                <h1>Klausurauswahl</h1>
            </td>
            <td id="selectExamHeadingRight">
                <!-- "Neue Klausur"-Button --> <jsp:element name="a">
                <jsp:attribute name="class">createExamLink</jsp:attribute>
                <jsp:attribute name="href">administrateExam.jsp?klausurID=-1</jsp:attribute>
                <jsp:attribute name="data-role">button</jsp:attribute>
                <jsp:attribute name="data-ajax">false</jsp:attribute>
                <jsp:attribute name="data-icon">plus</jsp:attribute>
                <jsp:body>Klausur erstellen</jsp:body>
            </jsp:element>

            </td>
        </tr>
    </table>

    <%
    if (isMsg) { %>
    <p class="msg"><div class="msgBg"></div><span class="msgInner"><%=alterMsg%></span></p>
    <% } %>

    <%
        /*
         * Es werden alle Klausuren geladen, die der aktuelle Benutzer korrigieren darf.
         * Für jede geladene Klausur wird ein Button erstellt
         * das Attribute "data-ajax" bei Links dient dazu, dass der Datepicker auf der nächsten Seite
         * sofort geladen wird (nicht erst nach Refresh der Seite) [Workaround]
         */

        String output = "";
        ArrayList<Tuple<Klausur,Benutzer>> list = new ArrayList<Tuple<Klausur,Benutzer>>(dbm.getExamsForUserID(benutzerID));

        if (list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                Klausur k = list.get(i).getFirst();
                String name = k.getName();
                String kAnzeigeName;
                int l = name.length();
                if (l > 41) {
                    kAnzeigeName = name.substring(0,18) + "..." + name.substring(l-18, l);
                } else {
                    kAnzeigeName = name;
                }
                int klausurID = k.getKlausurID();
                Benutzer b = list.get(i).getSecond();
                String erstellerName = b.getName()+", "+b.getVorname();
                SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
                String datum = sdf.format(k.getDate().getTime()).toString();
    %>

    <jsp:element name="div">
                <jsp:attribute name="class">selectExamDiv</jsp:attribute>
                <jsp:attribute name="data-role">controlgroup</jsp:attribute>
                <jsp:attribute name="data-type">horizontal</jsp:attribute>
                <jsp:body>
                <jsp:element name="a">
                    <jsp:attribute name="class">bigSelectExamLink</jsp:attribute>
                    <jsp:attribute name="href">correctExam.jsp?klausurID=<%=klausurID%></jsp:attribute>
                    <jsp:attribute name="data-role">button</jsp:attribute>
                    <jsp:attribute name="data-ajax">false</jsp:attribute>
                    <jsp:body><%=kAnzeigeName%></br>
                        <jsp:element name="span">
                            <jsp:attribute name="class">examSubtitleName</jsp:attribute>
                            <jsp:body><%=erstellerName%></jsp:body>
                        </jsp:element>
                        <jsp:element name="span">
                            <jsp:attribute name="class">examSubtitleDate</jsp:attribute>
                            <jsp:body><%=datum%></jsp:body>
                        </jsp:element>
                    </jsp:body>
                </jsp:element>
                <jsp:element name="a">
                    <jsp:attribute name="class">smallSelectExamLink</jsp:attribute>
                    <jsp:attribute name="href">administrateExam.jsp?klausurID=<%=klausurID%></jsp:attribute>
                    <jsp:attribute name="data-role">button</jsp:attribute>
                    <jsp:attribute name="data-ajax">false</jsp:attribute>
                    <jsp:attribute name="data-icon">wrench-costum-big</jsp:attribute>
                    <jsp:attribute name="data-iconpos">bottom</jsp:attribute>
                </jsp:element>
                <jsp:element name="a">
                    <jsp:attribute name="class">smallSelectExamLink</jsp:attribute>
                    <jsp:attribute name="href">statistics.jsp?klausurID=<%=klausurID%></jsp:attribute>
                    <jsp:attribute name="data-role">button</jsp:attribute>
                    <jsp:attribute name="data-ajax">false</jsp:attribute>
                    <jsp:attribute name="data-icon">stats-costum-big</jsp:attribute>
                    <jsp:attribute name="data-iconpos">bottom</jsp:attribute>
                    <jsp:body></jsp:body>
                </jsp:element>
                </jsp:body>
                </jsp:element>
    <%
        }
            // Falls der aktuelle Benutzer bei keiner Klausur als Korrektor eingetragen ist, erscheint nur "Neue Klausur"
        } else {
            output = "Sie sind bei keiner Klausur als Korrektor eingetragen!";
            out.println(output);
        }
    %>

    <!-- FOOTER -->
    <%@ include file="fragments/footer-small.jspf"%>
</div>

<!-- Die DB-Verbindung muss noch geschlossen werden -->
<%@ include file="fragments/closeConnection.jspf"%>

检查访问日志,查看JSP被请求的次数。然后将问题简化为最简单的单一JSP,重新创建问题并发布该JSP。非常感谢。但这真的是问题的根源吗?