20
Web Programming Assistant Professor Xiaozhong Liu http://scholarwiki.indiana.edu/S517/S517

Web Programming Assistant Professor Xiaozhong Liu

Embed Size (px)

DESCRIPTION

Servlet + File Compute test Please submit your information First number: Second number: web.html copy to project folder/WebContent/

Citation preview

Page 1: Web Programming Assistant Professor Xiaozhong Liu

Web Programming

Assistant Professor Xiaozhong Liu

http://scholarwiki.indiana.edu/S517/S517.html

Page 2: Web Programming Assistant Professor Xiaozhong Liu

Compare

Read from File Write to File

FileReader file = new FileReader("test.txt");

Scanner s = new Scanner(reader); while( s.hasNext()) { System.out.println(s.next()); }

s.close();

BufferedReader reader = new BufferedReader(file);

FileWriter file = new FileWriter("test.txt");

writer.write(“Hello, I’m writing…”);

writer.close();

BufferedWriter writer = new BufferedReader(file);

Page 3: Web Programming Assistant Professor Xiaozhong Liu

Servlet + File<html><head><title>Compute test</title></head><body><h2>Please submit your information</h2><form method="post" action ="/S517-Web/addnums_load" ><table border="0"><tr><td valign="top">First number: </td> <td valign="top"><input type="text" name="firstnum" size="20"></td></tr><tr><td valign="top">Second number: </td> <td valign="top"><input type="text" name="secondname" size="20"></td></tr><tr><td valign="top"><input type="submit" value="Submit Info"></td></tr></table></form></body></html>

web.html copy to project folder/WebContent/

Page 4: Web Programming Assistant Professor Xiaozhong Liu

Servlet + Fileprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String path = "/web.html";request.getRequestDispatcher(path).forward(request, response);

}

load the html or jsp file from hard drive

Page 5: Web Programming Assistant Professor Xiaozhong Liu

Scope of variables

public class test {String name; int time;

public void connect () { int age;String name;for (int i = 0; i < 5; i++) { String bookname;}

}

}

Page 6: Web Programming Assistant Professor Xiaozhong Liu

Scope of variables

public class test {String name; int time;

public void connect () { int age;String name;for (int i = 0; i < 5; i++) { String bookname;}

}

}

Class global variable: belongs to the class

local variable: belongs to the method

temp variable: belongs to the loop

Page 7: Web Programming Assistant Professor Xiaozhong Liu

Information problem…

Input Output

jTextFieldGUIServlet

File?Database?Internet?

Error???

Page 8: Web Programming Assistant Professor Xiaozhong Liu

Database: Table

Fields (of table)Type: String Type: int

Data

Page 9: Web Programming Assistant Professor Xiaozhong Liu

Java open DB

Java

JDBC (Java Database Connectivity)

Database

Jar, complied Java classes

Page 10: Web Programming Assistant Professor Xiaozhong Liu

Java open DB

Page 11: Web Programming Assistant Professor Xiaozhong Liu

Java operates DB

1.Establish a connection (Connection class)2.Create JDBC Statements (Statement class)3.Execute SQL Statements (stmtement.executeUpdate…)4.GET ResultSet (ResultSet class)5.Close connections

Page 12: Web Programming Assistant Professor Xiaozhong Liu

Java – DB Connectionimport java.sql.*;

Load the vendor specific driverClass.forName("oracle.jdbc.driver.OracleDriver");

// for Oracle database

Class.forName("org.gjt.mm.mysql.Driver");// for MYSQL database

Make the connection Connection con =

DriverManager.getConnection(…);

Page 13: Web Programming Assistant Professor Xiaozhong Liu

Java open DB

Connection connection;Statement statement = null;Class.forName("org.gjt.mm.mysql.Driver");String url = "jdbc:mysql://rdc04.uits.iu.edu:3264/S517DB";String username = "S517";String password = "S517"; connection = DriverManager.getConnection (url, username, password);statement = connection.createStatement();

Page 14: Web Programming Assistant Professor Xiaozhong Liu

Java open DB

String url = "jdbc:mysql://rdc04.uits.iu.edu:3264/S517DB”;

Server Address

Port Number on DB server

DB name

Page 15: Web Programming Assistant Professor Xiaozhong Liu

Java read from DB

ResultSet rs = statement.executeQuery("select * from user"); while (rs.next()) { //Read each record

int ID = rs.getInt("ID");String firstname = rs.getString("Firstname");String lastname = rs.getString("Lastname");int age = rs.getInt("Age");String gender = rs.getString("gender");System.out.println(ID + "\t" + firstname + "\t"+ lastname + "\t" + age + "\t" +

gender + "\t");}

rs.close(); statement.close();connection.close();

Page 16: Web Programming Assistant Professor Xiaozhong Liu

Java read from DB

rs.previous(); / / go back in the RS

rs.relative(-5); / / go 5 records back

rs.relative(7); / / go 7 records forward

rs.absolute(100); / / go to 100th record

Page 17: Web Programming Assistant Professor Xiaozhong Liu

Java DB updateConnection connection = DriverManager.getConnection (url, username, password);Statement statement = connection.createStatement();

statement.executeUpdate("insert into sometable…"); //shows how many rows are affected

statement.close();connection.close();

Insert, Delete, Update…

Page 18: Web Programming Assistant Professor Xiaozhong Liu

Basic DB search querySelect * from user // Get all the record from user table

Select Firstname, age, gender from user // Get Firstname, age, gender fields for all the record from user table

Select * from user where age > 15 // Get all the record from user table where age larger than 15

Select * from user where Firstname = ‘Jenny’ // Get all the record from user table where Firstname is ‘Jenny’

Page 19: Web Programming Assistant Professor Xiaozhong Liu

DB TransactionTransaction control can be implemented by the Connection object, default mode is auto-commit, (each sql statement is treated as a transaction)

We can turn off the auto-commit mode with con.setAutoCommit(false);

Or turn on by con.setAutoCommit(true);

If auto-commit is off, no SQL statement will be committed until - con.commit();

Page 20: Web Programming Assistant Professor Xiaozhong Liu

DB Metadata

Statement stmt = conn.createStatement();ResultSet resultSet = stmt.executeQuery("SELECT * FROM student");ResultSetMetaData md = resultSet.getMetaData();

for (int i = 1; i <= md.getColumnCount(); i++)System.out.print(md.getColumnLabel(i) + " ");

System.out.println();while (resultSet.next()) {

for (int i = 1; i <= md.getColumnCount(); i++)System.out.print(resultSet.getString(i) + " ");

System.out.println();}