Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mark Dixon 1 09 – Java Servlets. Mark Dixon 2 Session Aims & Objectives Aims –To cover a range of web-application design techniques Objectives, by end.

Similar presentations


Presentation on theme: "Mark Dixon 1 09 – Java Servlets. Mark Dixon 2 Session Aims & Objectives Aims –To cover a range of web-application design techniques Objectives, by end."— Presentation transcript:

1 Mark Dixon 1 09 – Java Servlets

2 Mark Dixon 2 Session Aims & Objectives Aims –To cover a range of web-application design techniques Objectives, by end of this week’s sessions, you should be able to: –create a servlet –use a class to gather code common to different pages

3 Mark Dixon 3 most application programs – 3 major layers –Top (Presentation) layer: human/machine interaction (the user interface) –input from the keyboard / mouse –output in the form of screen displays / sound –Middle (Application or business logic) layer: core functionality – gives application program its character contains business rules -> drive an organisation e.g. order entry system vs. inventory control system –Bottom layer general services needed by other layers e.g. file, print, communications, and database services 3 Application Layers

4 Mark Dixon 4 2-Tier Architecture Presentation and Application layer located on client machine –could be implemented using Applet interacting server Known as a ‘fat client’

5 Mark Dixon 5 3-Tier Architecture 3-tier architecture, –only presentation layer on client –application layer on server –Database on server or third machine Known as a ‘thin-client’ –very little (application) code / processing on client e.g. use of Java Servlets (JSP pages)

6 Mark Dixon 6 Example: AddNum (JSP) <% double N1; double N2; String Res = ""; if (request.getParameter("btnAdd") != null){ N1 = Double.parseDouble( request.getParameter("txtN1") ); N2 = Double.parseDouble(request.getParameter("txtN2")); Res = Double.toString(N1 + N2); } %> Add Numbers AddNum.jsp Java - functionality HTML – user interface

7 Mark Dixon 7 JSP pages & Servlets all JSP pages converted to servlet Servlet –Java program running in web server –Special type of Java class (.java file) Can get servlet error – caused by error in JSP page (usually missing } ), but difficult to see the connection

8 Mark Dixon 8 AddNum:.html file Split –User interface (html) –Functionality (Java) Add Numbers Points to Servlet (AddNum.java)

9 Mark Dixon 9 AddNum:.java file import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddNum extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { double N1; double N2; String Res = ""; response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { N1 = Double.parseDouble(request.getParameter("txtN1")); N2 = Double.parseDouble(request.getParameter("txtN2")); Res = Double.toString(N1 + N2); out.println(" "); out.println(" Add Numbers "); out.println(" "); out.println(Res); out.println(" "); } finally { out.close(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override public String getServletInfo() { return "Short description"; } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { double N1; double N2; String Res = ""; response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { N1 = Double.parseDouble(request.getParameter("txtN1")); N2 = Double.parseDouble(request.getParameter("txtN2")); Res = Double.toString(N1 + N2); out.println(" "); out.println(" Add Numbers "); out.println(" "); out.println(Res); out.println(" "); } finally { out.close(); } Calculation code Also, write (all) html

10 Mark Dixon 10 Example: PeopleList.jsp v2 <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); ResultSet r = st.executeQuery("SELECT * FROM Person;"); String html = ""; String id; while(r.next()){ id = Integer.toString(r.getInt("PersonID")); html += " "; html += r.getString("Surname") + " "; } cn.close(); %> Connect to db

11 Mark Dixon 11 Example: Person.jsp v2 <% String id = request.getParameter("id"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); ResultSet r = st.executeQuery("SELECT * FROM Person WHERE PersonID = " + id + ";"); String surname = ""; if(r.next()){ surname = r.getString("Surname"); } cn.close(); %> Person Surname: " /> Connect to DB

12 Mark Dixon 12 Person & PeoplList v2 both JSP page duplicate common code <% String id = request.getParameter("id"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); ResultSet r = st.executeQuery("SELECT * FROM Person WHERE PersonID = " + id + ";"); String surname = ""; if(r.next()){ surname = r.getString("Surname"); } cn.close(); %> Person Surname: " /> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); ResultSet r = st.executeQuery("SELECT * FROM Person;"); String html = ""; String id; while(r.next()){ id = Integer.toString(r.getInt("PersonID")); html += " "; html += r.getString("Surname") + " "; } cn.close(); %>

13 Mark Dixon 13 Class People Contains common code for both pages People cn st r Open Select Close

14 Mark Dixon 14 Class: People.java 1 Common code package Main; import java.sql.*; public class People{ private Connection cn; private Statement st; private ResultSet r; public void Open(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); } catch (Exception e){ //e.printStackTrace(); } public void Select(String sql){ try{ st = cn.createStatement(); r = st.executeQuery(sql); } catch (Exception e){ //e.printStackTrace(); } public boolean Next(){ boolean found = false; try{ found = r.next(); } catch (Exception e){ //e.printStackTrace(); } return found; } public String get(String id){ String s = ""; try{ s = r.getString(id); } catch (Exception e){ //e.printStackTrace(); } return s; } public void Close(){ try{ cn.close(); } catch (Exception e){ //e.printStackTrace(); } package Main; import java.sql.*; public class People { private Connection cn; private Statement st; private ResultSet r; public void Open (){ try{ Class.forName(" sun.jdbc.odbc.JdbcOdbcDriver "); cn = DriverManager.getConnection(" jdbc:odbc:PeopleDB ", "", ""); } catch (Exception e){ //e.printStackTrace(); } public void Select (String sql ){ try{ st = cn.createStatement (); r = st.executeQuery(sql ); } catch (Exception e){ //e.printStackTrace(); }

15 Mark Dixon 15 Class: People.java 2 Common code package Main; import java.sql.*; public class People{ private Connection cn; private Statement st; private ResultSet r; public void Open(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); } catch (Exception e){ //e.printStackTrace(); } public void Select(String sql){ try{ st = cn.createStatement(); r = st.executeQuery(sql); } catch (Exception e){ //e.printStackTrace(); } public boolean Next(){ boolean found = false; try{ found = r.next(); } catch (Exception e){ //e.printStackTrace(); } return found; } public String get(String id){ String s = ""; try{ s = r.getString(id); } catch (Exception e){ //e.printStackTrace(); } return s; } public void Close(){ try{ cn.close(); } catch (Exception e){ //e.printStackTrace(); } public boolean Next (){ boolean found = false; try{ found = r.next (); } catch (Exception e){ //e.printStackTrace(); } return found; } public String get(String id){ String s = ""; try{ s = r.getString (id); } catch (Exception e){ //e.printStackTrace(); } return s; } public void Close (){ try{ cn.close() ; } catch (Exception e){ //e.printStackTrace(); }

16 Mark Dixon 16 PersonList.jsp Class complex Pages simpler <%! People p = new People(); %> <% String html = ""; p.Open (); p.Select ("SELECT * FROM Person;"); while( p.Next ()){ html += p.get ("Surname") + " "; } p.Close (); %> People Import Package Use methods Create Instance

17 Mark Dixon 17 Example: Person v3 (Specification) User requirement: Display person’s details from database online –Change surname and save to database

18 Mark Dixon 18 modify data in one or more rows, matching specified condition(s) General SQL format: UPDATE Table SET ColumnName1 = Value1, ColumnName2 = Value2, … WHERE ColumnNameA = ValueA AND ColumnNameB = ValueB … Example: UPDATE Book SET price = '45.00', title = 'Core Web', price = ’50.00’ WHERE isbn = '0130897930' 18 SQL UPDATE Statement

19 Mark Dixon 19 SQL INSERT & DELETE INSERT – adds new record DELETE – deletes specified records

20 Mark Dixon 20 Example: Person.jsp v3 <% String id = request.getParameter("id"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); if(request.getParameter("btnSave") != null){ String surname = request.getParameter("txtSurname"); String sql = "UPDATE Person" + " SET surname = '" + surname + "'" + " WHERE PersonID = " + id + ";"; st.executeUpdate(sql); } ResultSet r = st.executeQuery("SELECT * FROM Person WHERE PersonID = " + id + ";"); String surname = ""; if(r.next()){ surname = r.getString("Surname"); } cn.close(); %> Person Surname: " /> Save button works now

21 Mark Dixon 21 Example: Person.jsp v3 <% String id = request.getParameter("id"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cn = DriverManager.getConnection("jdbc:odbc:PeopleDB", "", ""); Statement st = cn.createStatement(); if(request.getParameter("btnSave") != null){ String surname = request.getParameter("txtSurname"); String sql = "UPDATE Person" + " SET surname = '" + surname + "'" + " WHERE PersonID = " + id + ";"; st.executeUpdate(sql); } ResultSet r = st.executeQuery("SELECT * FROM Person WHERE PersonID = " + id + ";"); String surname = ""; if(r.next()){ surname = r.getString("Surname"); } cn.close(); %> Person Surname: " /> if(request.getParameter("btnSave") != null){ String surname = request.getParameter("txtSurname"); String sql = "UPDATE Person" + " SET surname = '" + surname + "'" + " WHERE PersonID = " + id + ";"; st.executeUpdate(sql); }

22 Mark Dixon 22 Tutorial Exercise: Person2 Task 1: Get the Person (v2) example from the lecture working (using the People class).

23 Mark Dixon 23 Tutorial Exercise: Person3 Task 1: Get the Person (v3) example from the lecture working. Task 2: Modify your code, so that a line of text is displayed confirming that data has been saved. Task 3: Modify the list page, so that an add button is included, which allows a new record to be added. Task 4: Modify the person page, so that a delete button is included, which allows the current record to be deleted.


Download ppt "Mark Dixon 1 09 – Java Servlets. Mark Dixon 2 Session Aims & Objectives Aims –To cover a range of web-application design techniques Objectives, by end."

Similar presentations


Ads by Google