Как перезагрузить страницу JSP на каждый запрос? - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть страница jsp с подключением jdbc, и при первой загрузке он показывает данные точно, но после этого он показывает пустые таблицы, я думаю, что во второй раз он загружается из памяти, а не с сервера

В чем проблема, я понимаюне знаю

хорошо, вот подробности

у меня есть сервлет, который поддерживает сеанс для пользователя, который входит в систему, а затем после создания сеанса сервлет перенаправляет пользователя на страницу просмотра, котораяявляется страницей jsp и отображает существующие записи в DB

, когда сервлет перенаправляет страницу, на которой jsp может отображать записи, но когда я получаю доступ к этой странице с любой другой html-страницы, она не может отобразить записи здесь.код для просмотра страницы JSP.

<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.math.BigDecimal" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.util.logging.Level" %>
<%@ page import="java.util.logging.Logger" %>
<%@ page import="iEHR.cDBProcessor" %>

<HTML>
<HEAD>
<TITLE>View Patient</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<script type="text/javascript" language="javascript" src="datepicker/main.js"></script>
                    <script type="text/javascript" language="javascript" src="datepicker/prototype-1.js"></script>
            <script type="text/javascript" language="javascript" src="datepicker/prototype-base-extensions.js"></script>
            <script type="text/javascript" language="javascript" src="datepicker/prototype-date-extensions.js"></script>
            <script type="text/javascript" language="javascript" src="datepicker/behaviour.js"></script>
            <script type="text/javascript" language="javascript" src="datepicker/ratingbar.js"></script>
                            <script type="text/javascript" language="javascript" src="datepicker/datepicker.js"></script>
                                        <link rel="stylesheet" href="datepicker/datepicker.css">
                            <script type="text/javascript" language="javascript" src="datepicker/behaviors.js"></script>
<style type="text/css">
<!--
img {
    border: none;
}
.tah10 {
    font-family: "Times New Roman", Times, serif;
    font-size: 14px;
    text-decoration: none;
    color: #000000;
    font-style: italic;
}
.tah11 {
    font-family: Tahoma;
    font-size: 11px;
    text-decoration: none;
    color: #000000;
}
.ver10 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    text-decoration: none;
    color: #000000;
}
.ver11 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-decoration: none;
    color: #000000;
}
.tah9 {
    font-family: Tahoma;
    font-size: 9px;
    text-decoration: none;
    color: #000000;
}
.ver9 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
    text-decoration: none;
    color: #000000;
}
td {
    vertical-align: top;
    color: 497B99;
    font-size: 12px;
    font-style: normal;
    font-weight: bolder;
}
-->
</style>
<style type="text/css">
<!--
.bgtop {
    background-repeat: repeat-x;
    background-position: top;
}
-->
</style>
<style type="text/css">
<!--
a {
    font-family: Times New Roman, Times, serif;
    font-size: 12px;
    font-weight: bolder;
    color: 467B99;
    text-decoration: none;
}

.datepicker{
    font-family: Times New Roman, Times, serif;
    font-size: 12px;
    font-weight: bolder;
    color: 467B99;
    text-decoration: none;
}
a:hover {
    font-size: 10px;
    font-weight: bold;
    color: FF8400;
}
.style1 {
    color: 467B99;
    font-family: Times New Roman, Times, serif;
    font-size: 12px;
    text-decoration: none;
    font-style: normal;
    font-weight: bolder;
}
.style2 {
    font-family: Times New Roman, Times, serif;
    font-size: 12px;
    font-style: normal;
    font-weight: bolder;
    color: 467B99;
    text-decoration: none;
}
-->
</style>
</HEAD>
<BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<!-- ImageReady Slices (0005_red.psd - Slices: 03, 04, 05) -->
<TABLE WIDTH=100% height="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0 bgcolor="#FFFFFF">
    <TR>
        <TD width="12%"> 
<TABLE WIDTH=159 BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/logo.gif" WIDTH=159 HEIGHT=128 ALT=""></TD>
    </TR>
    <TR>
        <TD>
            <IMG SRC="images/s1.gif" WIDTH=20 HEIGHT=20 ALT=""></TD>
        <TD>
            <A HREF="#">
                <IMG SRC="images/r1.gif" WIDTH=29 HEIGHT=20 BORDER=0 ALT=""></A></TD>
        <TD>
            <A HREF="#">
                <IMG SRC="images/r2.gif" WIDTH=31 HEIGHT=20 BORDER=0 ALT=""></A></TD>
        <TD>
            <A HREF="#">
                <IMG SRC="images/r3.gif" WIDTH=31 HEIGHT=20 BORDER=0 ALT=""></A></TD>
        <TD>
            <A HREF="#">
                <IMG SRC="images/r4.gif" WIDTH=28 HEIGHT=20 BORDER=0 ALT=""></A></TD>
        <TD>
            <IMG SRC="images/s2.gif" WIDTH=20 HEIGHT=20 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/s3.gif" WIDTH=159 HEIGHT=93 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/h1.jpg" WIDTH=159 HEIGHT=32 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/img1.jpg" WIDTH=159 HEIGHT=76 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/img2.jpg" WIDTH=159 HEIGHT=81 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=6>
            <IMG SRC="images/img3.jpg" WIDTH=159 HEIGHT=79 ALT=""></TD>
    </TR>
    <TR>
          <TD COLSPAN=6> <IMG SRC="images/but1.jpg" ALT="" WIDTH=159 HEIGHT=42 border="0" usemap="#Map"></TD>
    </TR>
</TABLE>      </TD>
        <TD width="12%"> 
<TABLE WIDTH=167 BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>
        <TD COLSPAN=2>
            <IMG SRC="images/h2.jpg" WIDTH=167 HEIGHT=25 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg1.gif" HEIGHT=94>
<div style="padding:20;padding-top:5;padding-right:10;padding-bottom:0;color:ffffff" class="tah10">
<strong>Noesis</strong><br><br>
 <strong>Inovative EHR Services </strong> <br>
 <br>
</div>      </TD>
    </TR>
    <TR>
        <TD COLSPAN=2>
            <IMG SRC="images/s4.jpg" WIDTH=167 HEIGHT=52 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg2.gif">
<div style="padding-left:0px;padding-top:12px;padding-bottom:2"><a href="AddPatient.jsp"><span style="padding-left:20;padding-top:5">Add Patient </span></a></div>      </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg3.gif" HEIGHT=18>
<div style="padding-left:20;padding-top:5"><a href="AddPastMedicalHistory.jsp">Add Patient History</a> </div>       

    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg4.gif" HEIGHT=18>
<div style="padding-left:20;padding-top:5"><a href="AddPatientInsurance.jsp">Add Patient Insurance</a></div>        </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg5.gif" HEIGHT=18 >
<div style="padding-left:20;padding-top:5">View Patient Records</div></TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg6.gif" HEIGHT=18 >
<div style="padding-left:20;padding-top:5"><a href="#"></a><a href="AboutUs.jsp">About  Us</a></div>        </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg7.gif" HEIGHT=18 >
<div style="padding-left:20;padding-top:5"><a href="#"></a><a href="ContactUs.jsp">Contact Us</a></div>     </TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg8.gif" HEIGHT=18 >
<div style="padding-left:20;padding-top:5"><a href="#"></a></div>       </TD>
    </TR>
    <TR>
        <TD COLSPAN=2>
            <IMG SRC="images/h3.gif" WIDTH=167 HEIGHT=65 ALT=""></TD>
    </TR>
    <TR>
        <TD COLSPAN=2 background="images/bg9.gif" HEIGHT=94>
<div style="padding:15;padding-top:3;padding-bottom:3;color:737373" class="tah10"></div>        </TD>
    </TR>
    <TR>
        <TD COLSPAN=2>
            <IMG SRC="images/h4.jpg" WIDTH=167 HEIGHT=41 ALT=""></TD>
    </TR>
    <TR>
        <TD background="images/bg10.jpg" WIDTH=123 HEIGHT=32>
          <div style="padding-left:15;padding-top:1">
            <input name="text" type="text" size="11">
          </div></TD>
          <TD width="44"> <IMG SRC="images/but2.jpg" ALT="" WIDTH=44 HEIGHT=32 border="0" usemap="#Map2"></TD>
    </TR>
    <TR>
        <TD COLSPAN=2>
            <IMG SRC="images/s5.jpg" WIDTH=167 HEIGHT=48 ALT=""></TD>
    </TR>
    <TR>
      <TD COLSPAN=2>&nbsp;</TD>
      </TR>
</TABLE>      </TD>
      <TD width="72%"> 
          <table width=100% height="193" border=0 cellpadding=0 cellspacing=0>
          <tr>
            <td height=172 colspan="4" ><span class="bgtop"><img src="images/f_m.jpg"></span></td>
            <td height=172 colspan="2" width="63%" background="images/bg_tile_1.gif" class="bgtop">&nbsp;</td>
          </tr>

          <tr>
            <td height=19 colspan="4" background="images/bg11.gif" >&nbsp;</td>
          </tr>
        </table>
        <%! private ResultSet rsResult; %>

         <%!   cDBProcessor DBProcess = new cDBProcessor(); %>



        <%
            DBProcess.ConnectTODB();
            if(request.getAttribute("dbrec") != null)
            {
                rsResult = DBProcess.statement.executeQuery("SELECT * FROM patients");
            }//end if
            out.println("<table border=\"0\"><tr><td valign=\"top\" >");
            out.println("<tr><th>Patient ID</th><th>First Name</th><th>Middle Name</th><th>Last Name</th><th>Gender</th><th>Marital Status</th><th>Phone No.</th><th>Address</th>");
            out.println("<th>Date Of Birth</th><th>Last Date Of Exam</th><th>Status</th></tr>");

            //data display on page
            if(rsResult!= null)
            {
                try
                {
                    while (rsResult.next())
                    {
                        BigDecimal bdPatientID = rsResult.getBigDecimal("patient_id");
                        String strFirstname = rsResult.getString("first_name");
                        String strLastname = rsResult.getString("last_name");
                        String strMiddlename = rsResult.getString("middle_name");
                        String strGeneder = rsResult.getString("gender");
                        String strMeritalStatus = rsResult.getString("marital_status");
                        BigDecimal bdPhoneNo = rsResult.getBigDecimal("phone_no");
                        String strAddress = rsResult.getString("address");
                        String strDOB = rsResult.getDate("birth_dt") == null ? "" : rsResult.getDate("birth_dt").toString();
                        String strDOE = rsResult.getDate("dt_of_exam") == null ? "" :rsResult.getDate("dt_of_exam").toString();
                        String strStatus;
                        Byte bPatientStatus= rsResult.getByte("status");

                        if(bPatientStatus == 1)
                        {
                            strStatus = "Active";
                        }//end if
                        else
                        {
                             strStatus = "Inactive";
                        }//end else

                       out.println("<tr><td>"+bdPatientID+"</td><td>"+strFirstname+"</td><td>"+strMiddlename+"</td><td>"+strLastname+"</td>");
                       out.println("<td>"+strGeneder+"</td><td>"+strMeritalStatus+"</td><td>"+bdPhoneNo+"</td><td>"+strAddress+"</td>");
                       out.println("<td>"+strDOB+"</td><td>"+strDOE+"</td><td>"+strStatus+"</td></tr>");

                    }//end while
                    out.println("</table>");
                }//end try
                catch (SQLException ex)
                {
                    out.println("<I>exception</I><br>");

                }//end catch
            }//end if

        DBProcess.CloseDB();
        %>

      </TD>
        <TD width="4%" background="images/bg_tile_1.gif" class="bgtop">&nbsp;</TD>
    </TR>
    <TR>
        <TD height="100%" colspan="4">&nbsp;</TD>
    </TR>
    <TR>
        <TD colspan="3">
<TABLE WIDTH=768 BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>
        <TD width="326">
            <IMG SRC="images/s7.gif" WIDTH=326 HEIGHT=48 ALT=""></TD>
        <TD background="images/bg16.gif" WIDTH=442 HEIGHT=48>
<div style="padding-top:12;color:A8A8A8" class="tah11">
2010 © Copyright iAS. <Br>
All rights Reserved. Read <a href="#" style="color:467B99" class="tah11">Privacy Policy</a>.</div>      </TD>
    </TR>
</TABLE>        </TD>
        <TD width="4%" background="images/bg_tile_2.gif">&nbsp;</TD>
    </TR>
</TABLE>
<!-- End ImageReady Slices -->
<map name="Map">
  <area shape="rect" coords="39,2,133,27" href="#">
</map>
<map name="Map2">
  <area shape="circle" coords="9,12,9" href="#">
</map>
</BODY>
</HTML> 

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Пахнет как проблема с защитой потоков Вы объявили ResultSet и DBProcess как переменную экземпляра JSP, используя объявления скриплетов <%! %>, поэтому они были общими для всех HTTP-запросов. Я не уверен насчет DBProcess, но это, безусловно, плохая идея для ResultSet (а также для Connection и Statement, кстати). То, как DBProcess используется в остатке кода, также довольно страшно, например. DBProcess.statement.executeQuery(). Является ли Statement действительно публичным полем? Я не знаю, как выглядят внутренние компоненты класса, но да, это пахнет слишком сильно, как проблема с безопасностью / ограничением потоков.

Кроме того, написание HTML-кода в стиле 90-х годов и использование скриптлетов в JSP на самом деле не подходят для приложения «Copyright 2010». Вы читаете правильные учебники / книги?

1 голос
/ 11 сентября 2010

помимо проблем, указанных BalusC,

основаны на описанном симптоме ", когда сервлет перенаправляет страницу, в которой jsp может показывать записи, но когда я получаю доступ к этой странице с любогона другой html-странице невозможно отобразить записи "и код" if (request.getAttribute ("dbrec")! = null) ".

Моим основным подозреваемым в причине проблемы является использование request.getAttribute ("dbrec")

для тех, кто имеет прямой доступ с другой HTML-страницыэто значение может быть нулевым.Я подозреваю, что для случая перенаправления может быть некоторый код, который выполняет request.setAttribute ("dbrec", ....)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...