Доброго времени суток!
Мая проблема такая! Начал я разбираться с JSP и сервлетами, установил томкат 6.0.36, нетбинс(прикрепил к нему томкат). Создал веб приложение, оно состоит из ibdex.jsp и сервлета ServerDBConnection.
INDEX.JSP
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
%@page language="java" contentType="text/html;charset=UTF-8" import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Privet</TITLE>
<META http-equiv=Content-Type content="text/html">
</HEAD>
<BODY>
<form name="qwerty"
action="/ServerComponent/ServerDBConnection"
method="POST">
<b>Select table:</b>
<select name=tablename>
<option>Class</option>
</select>
<input type="submit" name="Submit" value="See">
</form>
<%
if(request != null){
List InputData= (List)request.getAttribute("data");
// int InputColumn = (Integer) request.getAttribute("column");
SetTableCataloge(InputData,6);
}
%>
</BODY>
</HTML>
<%!
String[] p1 = {"Link1","Link2","Link3"};
String[] p2 = {"Label1","Label2","Label3"};
String SetSideMenu(String[] link, String[] label){
String temp = "";
if(link.length ==label.length){
for(int i=0;i<link.length;i++){
temp = temp.concat("<a href = \"");
temp = temp.concat(link[i]);
temp = temp.concat("\">");
temp = temp.concat(label[i]);
temp = temp.concat("</a>");
}
}
return temp;
}
String SetTableCataloge(List data,int column){
String temp = "";
Iterator itr;
temp = temp.concat("<table border= \"1 \" width= \"303 \" > <tr>");
data= null;//(List)request.getAttribute("data");
column = 0;// (int)request.getAttribute("column");
int i=column;
for(itr = data.iterator() ;itr.hasNext();){
if(i>0){
temp = temp.concat("<td width= \" 119 \" ><b> ");
itr.next();
temp = temp.concat("</b></td> ");
i--;
if(i == 0)
temp = temp.concat("</tr>");
} else {
temp = temp.concat("<tr>");
for(int col = column;col>0;col--){
temp = temp.concat("<td width= \" 119 \" >");
itr.next();
temp = temp.concat("</td> ");
}
temp = temp.concat("</tr>");
}
}
temp = temp.concat("</table>");
return temp;
}
%>
И сервлет SERVERDBCONNECTION
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
package Servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ServerDBConnection extends HttpServlet {
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
}
private Connection Conn = null;
private Statement St = null;
private ResultSet Rs = null;
private String TableNames = "";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String dbUrl = "jdbc:postgresql://localhost:5432/SchoolServer";
String dbUser = "postgres";
String dbPassword = "12345";
try {
Class.forName("org.postgresql.Driver");
Conn = DriverManager.getConnection(dbUrl, "postgres", "12345");
St = Conn.createStatement();
Rs = St.executeQuery(AnalysisParametr(request));
request = SendData(request, Rs,TableNames);
} catch (SQLException e) { e.printStackTrace();}
catch (ClassNotFoundException e) { e.printStackTrace(); }
String url="/index.jsp";
ServletContext sc = getServletContext();
//RequestDispatcher rd = sc.getRequestDispatcher(url);
RequestDispatcher rd = request.getRequestDispatcher(url);
if(rd != null)
rd.forward(request, response);
try {
Rs.close();
St.close();
} catch (SQLException ex) {
Logger.getLogger(ServerDBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
// Анализируем поступившие парамтры(имя таблицы)
String AnalysisParametr(HttpServletRequest rq){
String myTable = SearchTable(rq.getParameter("Tablename"));
return CreateSelect(myTable);
};
//Сопоставление таблиц для SQL запроса
String SearchTable(String TableName){
String temp = null;
String TN[][] = {{"Классы","klass"}};
for(int i=0;TN.length>i;i++){
if(TableName.equals(TN[i][0]))
TableNames = temp = TN[i][1];
}
return temp;
}
//Формирование SQL запроса
String CreateSelect(String TableName){
String tmp;
tmp = "";
if(TableName.equals("klass"))
tmp = tmp.concat(" idk,num,paral,smena,kolvou,kolvopg ");
return "SELECT " + tmp + "FROM " + TableName;
}
//Подготовка и отправка данных
HttpServletRequest SendData(HttpServletRequest rq,ResultSet rs,String TableName) throws SQLException{
List dataList = new ArrayList();
if(TableName.equals("klass")){
dataList.add("Идентификатор");
dataList.add("Номер");
dataList.add("Буква");
dataList.add("Смена");
dataList.add("Кол-во учеников");
dataList.add("Кол-во подгрупп");
while (rs.next()) {
dataList.add(rs.getInt("idk"));
dataList.add(rs.getInt("num"));
dataList.add(rs.getString("paral"));
dataList.add(rs.getInt("smena"));
dataList.add(rs.getInt("kolvou"));
dataList.add(rs.getInt("kolvopg"));
}
rq.setAttribute("column", 6);
rq.setAttribute("data", dataList);
}
return rq;
}
}
Выает вот такую ошибку:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 53
50: data= null;//(List)request.getAttribute("data");
51: column = 0;// (int)request.getAttribute("column");
52: int i=column;
53: for(itr = data.iterator() ;itr.hasNext();){
54: if(i>0){
55: temp = temp.concat(" ");
56: itr.next();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.apache.jsp.index_jsp.SetTableCataloge(index_jsp.java:36)
org.apache.jsp.index_jsp._jspService(index_jsp.java:122)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Покопавшись в инете, вынес только что вроде бы с библиотеками путаница, но я могу ошибаться!
Прошу подсказать в чем дело, и литературы бы русскоязычной по теме!
П.С. Также не понято структура проекта Нетбинса св веб приложениях, как расставляются файлы!!!(((