Download Html form

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
JSP program that interacts with
HTML form
& Access Data Base
Warning:
This JSP program interacts with an HTML form
The form sends data to the server
and requests the server to compile/execute the JSP program
The html form is not described here!
– but don’t execute the program without the form or it will crash.
Java is for processing data & accessing data base
HTML is for displaying results nicely
When programming JSP page:
write JAVA until need to output some HTML
…then stop the Java – with <% … %> tags
…and do the HTML
After HTML segment is done:
start the Java again – with <% … %> tags
…and so on
JSP program
Connect to DB
Load IO driver & connect to Access data base
Create Table in data base with suitable attributes
using SQL query – in try/catch
Retrieve & prep [text & integer] data from HTML form
INSERT form data into Access DB
Retrieve DB data using SELECT SQL for ResultSet
Setup 1st row of HTML table
Make DB tables
Retrieve form data
& insert in DB
Retrieve DB data
& display in
HTML table
Enter while loop that iterates over ResultSet rows
inside while loop:
Use next ResultSet row's data to setup next row of table
code follows
<%@ page import="java.sql.*" %>
<%
to import
SQL classes
for Java
tag to start Java
segment
DB named Model1
uses MSAccess
String url = "jdbc:odbc:Model1";
String username="";
String password="";
Connection conn=null;
String classPath = "sun.jdbc.odbc.JdbcOdbcDriver";
out.println(“<font color=red>Before driver loaded</font><br>”);
one way to
output Html
try
{
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println ("Driver now loaded. <br>");
conn = DriverManager.getConnection
("jdbc:odbc:Model1", "", "");
System.out.println ("Database now connected. br>");
}
catch (Exception e)
{
out.println(e.toString() + " <br>Error for driver.<br>");
}
out.println("After driver loaded:<br>");
try-catch construct
- useful for preventing program from crashing
when error is detected here during execution.
- also during development
try
{
}
……….
e tells what caused error
catch (Exception e)
{
out.println(e.toString() + " <br>Error for driver.<br>");
}
stm object required
Statement stm = conn.createStatement();
SQL query string defined first
String Query1;
Query1 = "CREATE TABLE Managers (teamID integer, managerName char(15) )";
query string executed
try
{ stm.executeUpdate(Query1) ;
out.println("Managers table was successfully created. <br>");
}
catch (Exception exc)
{ out.println("Managers table already exists. <br>"); }
executed if error in SQL
get Html form data
from mName field
String s = request.getParameter("mName");
s = " ' " + s + " ' ";
String ss = request.getParameter("tId") ;
ss = ss.trim();
get numeric data
from Html tId field
int n = Integer.parseInt(ss);
try
{
stm.executeUpdate("INSERT INTO Managers VALUES (" + n +
}
catch(Exception exc)
{ out.println(exc + " <br> SQL error in INSERT. <br>"); }
", "
+ s +
" )”
);
SQL query retrieval begins this way:
String Query2 = "SELECT teamID, managerName " +
"FROM Managers
"WHERE teamId = 2
" +
" ;
and saves answer in ResultSet – processed & displayed as detailed on next slide:
try
{
ResultSet rst;
rst
%>
= stm.executeQuery (Query2);
String Query2 = "SELECT teamID, managerName " +
"FROM Managers " +
"WHERE teamId = 2 " ;
try
{ResultSet rst;
rst = stm.executeQuery (Query2);
%>
<table border = 5 bgcolor = red>
<tr> <th> teamId </th>
<th> mName </th>
</tr>
gets data
starts
Html table
iteratively outputs
table rows
<%
while(rst.next())
{
%>
<tr>
</td>
<td align=center> <%= rst.getString("teamID")%>
<td align=center> <%= rst.getString("managerName")%> </td>
</tr>
<%
} //end of while
%>
</table>
<table border = 5 bgcolor = red>
<tr> <th> teamId </th>
<th> mName </th>
</tr>
…table starts
<%
while(rst.next())
{
%>
<tr>
<td align=center> <%= rst.getString("teamID")%>
</td>
<td align=center> <%= rst.getString("managerName")%> </td>
</tr>
<%
} //end of while
%>
</table>
Alternating JSP and HTML
– driven by what has to be done to solve problem
String Query2 = "SELECT teamID, managerName FROM Managers WHERE teamId = 2";
try {
ResultSet rst; rst = stm.executeQuery(Query2);
%>
<table border=5 bgcolor = red>
<tr><th>teamId</th> <th>mName</th></tr>
<% while(rst.next()) { %>
<tr>
<td align=center> <%= rst.getString("teamID")%>
</td>
<td align=center> <%= rst.getString("managerName")%> </td>
</tr>
<%
}
%>
</table>
<%
}
catch(Exception exc) { out.println(exc + " <br> Query error in SELECT. <br>"); }
stm.close(); conn.close();
%>
Here java defers
to html
HTML for 1st row
of table is hardwired
JSP loop starts
…then defers to html
HTML – alternates
with JSP expressions
JSP loop finally ends
HTML table
tag closes
JSP – try
finally closes
& rest of
JSP program
<%@ page import="java.sql.*" %>
<%
String url = …
try
{ Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (Exception e) { out.println(e.toString() + " <br>Error for driver.<br>"); }
Statement stm = conn.createStatement();
String
Query1; Query1 = "CREATE TABLE Managers (teamID integer, managerName char(15) ";
try
{ stm.executeUpdate(Query1);}
catch(Exception exc) { out.println("Managers table already exists. <br>"); }
String s = request.getParameter("mName");
String ss = request.getParameter("tId") ;
s = " ' " + s + " ' ";
ss = ss.trim(); int n = Integer.parseInt(ss);
try { stm.executeUpdate("INSERT INTO Managers VALUES (" +n+ ", " + s + " )"); }
catch(Exception exc) { out.println(exc + " <br> SQL error in INSERT. <br>"); }
JSP red
Html blue
String Query2 = "SELECT teamID, managerName FROM Managers WHERE teamId = 2";
try {
ResultSet rst; rst = stm.executeQuery(Query2);
%>
<table border=5 bgcolor = red>
<tr><th>teamId</th> <th>mName</th></tr>
<% while(rst.next()) { %>
<tr>
<td align=center> <%= rst.getString("teamID")%>
</td>
<td align=center> <%= rst.getString("managerName")%> </td>
</tr>
<% } %>
</table>
<%
}
catch(Exception exc) { out.println(exc + " <br> Query error in SELECT. <br>"); }
stm.close(); conn.close();
%>
Notes:
Java program gets data from the Html form with form-field named mName
using following method:
String s = request.getParameter("mName");
Java program gets data from Access Data Base using combination of three techniques:
a Select query, a ResultSet,and a getString [or getInt or getDouble] method to retrieve
ResultSet values:
1. Select query to select data:
String Query2 = "SELECT teamID, managerName FROM Managers
"WHERE teamId = 2 " ;
" +
2. ResultSet to save results returned:
try
{ ResultSet x;
x = stm.executeQuery (Query2);
…
3. getString [or getInt or getDouble] methods to get attribute values for row in ResultSet x.
<%= x.getInt("teamID")%>
<%= x.getString("managerName")%>