Aplikaciju radim u JDveloper-u 10.1.3.3.0 sa dbms-om Oracle 10g xe.
Logovanje prodje ali kada hocu da redirektuje na stranicu "izvodjacilist.jsp" izbaci mi ovu gresku u browser-u:
500 Internal Server Error
java.lang.NullPointerException at _izvodjacilist._jspService(_izvodjacilist.java:273) [/izvodjacilist.jsp] at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.3.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595)
Ukljuceni fajlovi su:
izvodjacilist.jsp
<%@ page import="oracle.jdbc.*" %>
<%@ page session="true" buffer="16kb" import="java.sql.*,java.util.*,java.text.*"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%
response.setDateHeader("Expires", 0); // date in the past
response.addHeader("Cache-Control", "no-store, no-cache, must-revalidate"); // HTTP/1.1
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.addHeader("Pragma", "no-cache"); // HTTP/1.0
%>
<% Locale locale = Locale.getDefault();
response.setLocale(locale);%>
<% session.setMaxInactiveInterval(30*60); %>
<%@ include file="db.jsp" %>
<%
int displayRecs = 20;
int recRange = 10;
%>
<%
String tmpfld = null;
String escapeString = "''";
String dbwhere = "";
String masterdetailwhere = "";
String searchwhere = "";
String a_search = "";
String b_search = "";
String whereClause = "";
int startRec = 0, stopRec = 0, totalRecs = 0, recCount = 0;
%>
<%
// Get search criteria for basic search
String pSearch = request.getParameter("psearch");
String pSearchType = request.getParameter("psearchtype");
if (pSearch != null && pSearch.length() > 0) {
pSearch = pSearch.replaceAll("'",escapeString);
if (pSearchType != null && pSearchType.length() > 0) {
while (pSearch.indexOf(" ") > 0) {
pSearch = pSearch.replaceAll(" ", " ");
}
String [] arpSearch = pSearch.trim().split(" ");
for (int i = 0; i < arpSearch.length; i++){
String kw = arpSearch[i].trim();
b_search = b_search + "(";
b_search = b_search + "\"Redni_Broj_I\" LIKE '%" + kw + "%' OR ";
b_search = b_search + "\"Naziv_I\" LIKE '%" + kw + "%' OR ";
b_search = b_search + "\"ID_T_I\" LIKE '%" + kw + "%' OR ";
if (b_search.substring(b_search.length()-4,b_search.length()).equals(" OR ")) { b_search = b_search.substring(0,b_search.length()-4);}
b_search = b_search + ") " + pSearchType + " ";
}
}else{
b_search = b_search + "\"Redni_Broj_I\" LIKE '%" + pSearch + "%' OR ";
b_search = b_search + "\"Naziv_I\" LIKE '%" + pSearch + "%' OR ";
b_search = b_search + "\"ID_T_I\" LIKE '%" + pSearch + "%' OR ";
}
}
if (b_search.length() > 4 && b_search.substring(b_search.length()-4,b_search.length()).equals(" OR ")) {b_search = b_search.substring(0, b_search.length()-4);}
if (b_search.length() > 5 && b_search.substring(b_search.length()-5,b_search.length()).equals(" AND ")) {b_search = b_search.substring(0, b_search.length()-5);}
%>
<%
// Build search criteria
if (a_search != null && a_search.length() > 0) {
searchwhere = a_search; // Advanced search
}else if (b_search != null && b_search.length() > 0) {
searchwhere = b_search; // Basic search
}
// Save search criteria
if (searchwhere != null && searchwhere.length() > 0) {
session.setAttribute("Izvodjaci_searchwhere", searchwhere);
startRec = 1; // Reset start record counter (new search)
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}else{
if (session.getAttribute("Izvodjaci_searchwhere") != null)
searchwhere = (String) session.getAttribute("Izvodjaci_searchwhere");
}
%>
<%
// Get clear search cmd
startRec = 0;
if (request.getParameter("cmd") != null && request.getParameter("cmd").length() > 0) {
String cmd = request.getParameter("cmd");
if (cmd.toUpperCase().equals("RESET")) {
searchwhere = ""; // Reset search criteria
session.setAttribute("Izvodjaci_searchwhere", searchwhere);
}else if (cmd.toUpperCase().equals("RESETALL")) {
searchwhere = ""; // Reset search criteria
session.setAttribute("Izvodjaci_searchwhere", searchwhere);
}
startRec = 1; // Reset start record counter (reset command)
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}
// Build dbwhere
if (masterdetailwhere != null && masterdetailwhere.length() > 0) {
dbwhere = dbwhere + "(" + masterdetailwhere + ") AND ";
}
if (searchwhere != null && searchwhere.length() > 0) {
dbwhere = dbwhere + "(" + searchwhere + ") AND ";
}
if (dbwhere != null && dbwhere.length() > 5) {
dbwhere = dbwhere.substring(0, dbwhere.length()-5); // Trim rightmost AND
}
%>
<%
// Load Default Order
String DefaultOrder = "";
String DefaultOrderType = "";
// No Default Filter
String DefaultFilter = "";
// Check for an Order parameter
String OrderBy = request.getParameter("order");
if (OrderBy != null && OrderBy.length() > 0) {
if (session.getAttribute("Izvodjaci_OB") != null &&
((String) session.getAttribute("Izvodjaci_OB")).equals(OrderBy)) { // Check if an ASC/DESC toggle is required
if (((String) session.getAttribute("Izvodjaci_OT")).equals("ASC")) {
session.setAttribute("Izvodjaci_OT", "DESC");
}else{
session.setAttribute("Izvodjaci_OT", "ASC");
}
}else{
session.setAttribute("Izvodjaci_OT", "ASC");
}
session.setAttribute("Izvodjaci_OB", OrderBy);
session.setAttribute("Izvodjaci_REC", new Integer(1));
}else{
OrderBy = (String) session.getAttribute("Izvodjaci_OB");
if (OrderBy == null || OrderBy.length() == 0) {
OrderBy = DefaultOrder;
session.setAttribute("Izvodjaci_OB", OrderBy);
session.setAttribute("Izvodjaci_OT", DefaultOrderType);
}
}
// Open Connection to the database
try{
Statement stmt = (Statement) conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
stmt.executeQuery("ALTER SESSION SET CURRENT_SCHEMA = NIKOLA");
ResultSet rs = null;
// Build SQL
String strsql = "SELECT * FROM \"Izvodjaci\"";
whereClause = "";
if (DefaultFilter.length() > 0) {
whereClause = whereClause + "(" + DefaultFilter + ") AND ";
}
if (dbwhere.length() > 0) {
whereClause = whereClause + "(" + dbwhere + ") AND ";
}
if (whereClause.length() > 5 && whereClause.substring(whereClause.length()-5, whereClause.length()).equals(" AND ")) {
whereClause = whereClause.substring(0, whereClause.length()-5);
}
if (whereClause.length() > 0) {
strsql = strsql + " WHERE " + whereClause;
}
if (OrderBy != null && OrderBy.length() > 0) {
strsql = strsql + " ORDER BY \"" + OrderBy + "\" " + (String) session.getAttribute("Izvodjaci_OT");
}
//out.println(strsql);
rs = (ResultSet) stmt.executeQuery(strsql);
rs.last();
totalRecs = rs.getRow();
rs.beforeFirst();
startRec = 0;
int pageno = 0;
// Check for a START parameter
if (request.getParameter("start") != null && Integer.parseInt(request.getParameter("start")) > 0) {
startRec = Integer.parseInt(request.getParameter("start"));
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}else if (request.getParameter("pageno") != null && Integer.parseInt(request.getParameter("pageno")) > 0) {
pageno = Integer.parseInt(request.getParameter("pageno"));
if (IsNumeric(request.getParameter("pageno"))) {
startRec = (pageno-1)*displayRecs+1;
if (startRec <= 0) {
startRec = 1;
}else if (startRec >= ((totalRecs-1)/displayRecs)*displayRecs+1) {
startRec = ((totalRecs-1)/displayRecs)*displayRecs+1;
}
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}else {
startRec = ((Integer) session.getAttribute("Izvodjaci_REC")).intValue();
if (startRec <= 0) {
startRec = 1; // Reset start record counter
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}
}
}else{
if (session.getAttribute("Izvodjaci_REC") != null)
startRec = ((Integer) session.getAttribute("Izvodjaci_REC")).intValue();
if (startRec==0) {
startRec = 1; //Reset start record counter
session.setAttribute("Izvodjaci_REC", new Integer(startRec));
}
}
%>
<p><span>TABLE: Izvodjaci</span></p>
<form action="Izvodjacilist.jsp">
<table border="0" cellspacing="0" cellpadding="4">
<tr>
<td><span>Quick Search (*)</span></td>
<td><span>
<input type="text" name="psearch" size="20">
<input type="Submit" name="Submit" value="GO">
<a href="Izvodjacilist.jsp?cmd=reset">Show all</a>
</span></td>
</tr>
<tr><td> </td><td><span><input type="radio" name="psearchtype" value="" checked>Exact phrase <input type="radio" name="psearchtype" value="AND">All words <input type="radio" name="psearchtype" value="OR">Any word</span></td></tr>
</table>
</form>
<form method="post">
<table border="0" cellspacing="2" cellpadding="4" bgcolor="#CCCCCC">
<tr bgcolor="#FF3300">
<td><span class="jspmaker" style="color: #FFFFFF;">
<a href="Izvodjacilist.jsp?order=<%= java.net.URLEncoder.encode("Redni_Broj_I","UTF-8") %>" style="color: #FFFFFF;">Redni Broj I (*)<% if (OrderBy != null && OrderBy.equals("Redni_Broj_I")) { %><span class="ewTableOrderIndicator"><% if (((String) session.getAttribute("Izvodjaci_OT")).equals("ASC")) {%>5<% }else if (((String) session.getAttribute("Izvodjaci_OT")).equals("DESC")) { %>6<% } %></span><% } %></a>
</span></td>
<td><span class="jspmaker" style="color: #FFFFFF;">
<a href="Izvodjacilist.jsp?order=<%= java.net.URLEncoder.encode("Naziv_I","UTF-8") %>" style="color: #FFFFFF;">Naziv I (*)<% if (OrderBy != null && OrderBy.equals("Naziv_I")) { %><span class="ewTableOrderIndicator"><% if (((String) session.getAttribute("Izvodjaci_OT")).equals("ASC")) {%>5<% }else if (((String) session.getAttribute("Izvodjaci_OT")).equals("DESC")) { %>6<% } %></span><% } %></a>
</span></td>
<td><span class="jspmaker" style="color: #FFFFFF;">
<a href="Izvodjacilist.jsp?order=<%= java.net.URLEncoder.encode("ID_T_I","UTF-8") %>" style="color: #FFFFFF;">ID T I (*)<% if (OrderBy != null && OrderBy.equals("ID_T_I")) { %><span class="ewTableOrderIndicator"><% if (((String) session.getAttribute("Izvodjaci_OT")).equals("ASC")) {%>5<% }else if (((String) session.getAttribute("Izvodjaci_OT")).equals("DESC")) { %>6<% } %></span><% } %></a>
</span></td>
</tr>
<%
// Avoid starting record > total records
if (startRec > totalRecs) {
startRec = totalRecs;
}
// Set the last record to display
stopRec = startRec + displayRecs - 1;
// Move to first record directly for performance reason
recCount = startRec - 1;
if (rs.next()) {
rs.first();
rs.relative(startRec - 1);
}
long recActual = 0;
if (startRec == 1)
rs.beforeFirst();
else
rs.previous();
while (rs.next() && recCount < stopRec) {
recCount++;
if (recCount >= startRec) {
recActual++;
%>
<%
String bgcolor = "#FFFFFF"; // Set row color
%>
<%
if (recCount%2 != 0) { // Display alternate color for rows
bgcolor = "#F5F5F5";
}
%>
<%
String x_Redni_Broj_I = "";
String x_Naziv_I = "";
String x_ID_T_I = "";
// Load Key for record
String key = "";
// Redni_Broj_I
if (rs.getString("Redni_Broj_I") != null){
x_Redni_Broj_I = rs.getString("Redni_Broj_I");
}else{
x_Redni_Broj_I = "";
}
// Naziv_I
if (rs.getString("Naziv_I") != null){
x_Naziv_I = rs.getString("Naziv_I");
}else{
x_Naziv_I = "";
}
// ID_T_I
if (rs.getString("ID_T_I") != null){
x_ID_T_I = rs.getString("ID_T_I");
}else{
x_ID_T_I = "";
}
%>
<tr bgcolor="<%= bgcolor %>">
<td><span><% out.print(x_Redni_Broj_I); %></span> </td>
<td><span><% out.print(x_Naziv_I); %></span> </td>
<td><span><% out.print(x_ID_T_I); %></span> </td>
</tr>
<%
// }
}
}
%>
</table>
</form>
<%
// Close recordset and connection
rs.close();
rs = null;
stmt.close();
stmt = null;
conn.close();
conn = null;
}catch(SQLException ex){
out.println(ex.toString());
}
%>
<table border="0" cellspacing="0" cellpadding="10"><tr><td>
<%
boolean rsEof = false;
if (totalRecs > 0) {
rsEof = (totalRecs < (startRec + displayRecs));
int PrevStart = startRec - displayRecs;
if (PrevStart < 1) { PrevStart = 1;}
int NextStart = startRec + displayRecs;
if (NextStart > totalRecs) { NextStart = startRec;}
int LastStart = ((totalRecs-1)/displayRecs)*displayRecs+1;
%>
<form>
<table border="0" cellspacing="0" cellpadding="0"><tr><td><span>Page</span> </td>
<!--first page button-->
<% if (startRec==1) { %>
<td><img src="images/firstdisab.gif" alt="First" width="20" height="15" border="0"></td>
<% }else{ %>
<td><a href="Izvodjacilist.jsp?start=1"><img src="images/first.gif" alt="First" width="20" height="15" border="0"></a></td>
<% } %>
<!--previous page button-->
<% if (PrevStart == startRec) { %>
<td><img src="images/prevdisab.gif" alt="Previous" width="20" height="15" border="0"></td>
<% }else{ %>
<td><a href="Izvodjacilist.jsp?start=<%=PrevStart%>"><img src="images/prev.gif" alt="Previous" width="20" height="15" border="0"></a></td>
<% } %>
<!--current page number-->
<td><input type="text" name="pageno" value="<%=(startRec-1)/displayRecs+1%>" size="4"></td>
<!--next page button-->
<% if (NextStart == startRec) { %>
<td><img src="images/nextdisab.gif" alt="Next" width="20" height="15" border="0"></td>
<% }else{ %>
<td><a href="Izvodjacilist.jsp?start=<%=NextStart%>"><img src="images/next.gif" alt="Next" width="20" height="15" border="0"></a></td>
<% } %>
<!--last page button-->
<% if (LastStart == startRec) { %>
<td><img src="images/lastdisab.gif" alt="Last" width="20" height="15" border="0"></td>
<% }else{ %>
<td><a href="Izvodjacilist.jsp?start=<%=LastStart%>"><img src="images/last.gif" alt="Last" width="20" height="15" border="0"></a></td>
<% } %>
<td><span> of <%=(totalRecs-1)/displayRecs+1%></span></td>
</td></tr></table>
</form>
<% if (startRec > totalRecs) { startRec = totalRecs;}
stopRec = startRec + displayRecs - 1;
recCount = totalRecs - 1;
if (rsEof) { recCount = totalRecs;}
if (stopRec > recCount) { stopRec = recCount;} %>
<span>Records <%= startRec %> to <%= stopRec %> of <%= totalRecs %></span>
<% }else{ %>
<span>No records found</span>
<% } %>
</td></tr></table>
db.jsp
<%@ page import="java.sql.*"%>
<%
Connection conn = null;
try {
// Load the JDBC driver
String driverName = "oracle.jdbc.driver.OracleDriver";
Class.forName(driverName);
// Create a connection to the database
String serverName = "127.0.0.1";
String portNumber = "1521";
String sid = "XE";
String xDb_Conn_Str = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "username";
String password = "password";
conn = DriverManager.getConnection(xDb_Conn_Str, username, password);
} catch (ClassNotFoundException e) {
// Could not find the database driver
} catch (SQLException e) {
// Could not connect to the database
}
%>
Samo logovanj izgleda ovako: http://www.elitesecurity.org/t289674-0#1734516
p.s. Greska u postu na postavljenom linku je rijesena, a kod je isti i ispravan.
Hvala unaprijed svima na pomoci!
Pozdrav!