Server side slides
Download
Report
Transcript Server side slides
Servers
& Server Side Processing
Winter 2001
C.Watters
1
Objectives
Understand the server’s role
Understand how processing is executed on
the server for dynamic web page content
CGI scripts
Active server pages
Database access
Servlets
Quick look at the role of agents
Winter 2001
C.Watters
2
Client-Server Model
Winter 2001
C.Watters
3
HTTP Connection
• 1. Client
– makes an HTTP request for a web page
– makes a TCP/IP connection
• 2. Server accepts request
– Does any processing required
– sends page as HTTP response
• 3. Client downloads page
• 4. Server breaks the connection
Winter 2001
C.Watters
4
Server Side Processing
•
•
•
•
CGI – server applications
Server side scripts
servlets
JDBC/ODBC
• and databases
Winter 2001
C.Watters
5
Servers
• What does a server actually do
• 1.gets up and running in “listening mode”
• creates a socket bound to its IP address & waits
• 2. Handles requests
• detects attempt by client to connect
• creates a new socket for communication with client
• processes request
– retrieve file
– run cgi script
• closes socket
Winter 2001
socket is an abstract
representation of a network endpoint.
C.Watters
6
Dynamic Content
Browser
Server
Province ONT
NS
Get province from form
<html>
<html>
<h1>Catalog
<h1>Catalogfor
for NS</h1>
Ontario <h1>
<ul>
<ul>
<li>BlueRocks
<li>Niagara Falls
<li>Peggys Cove
<li>Bruce Trail
<li>Lunenburg
<li>Goderich
</ul>
</ul>
</html>
</html>
Winter 2001
Query database
Generate tags around the
query results
Send this text as body of
HTTP response
C.Watters
7
CGI & scripts
CGI - Common Gateway Interface
allows data from forms to be used by
programs on the server
script is a program on the server
perl or C or C++ etc.
data returned to client as html document
may interact with a DBMS on server
Winter 2001
C.Watters
8
Forms and Data
• Forms are part of HTML document
<form action=“http://www.dal.ca/doit.cgi” method = put >
Price: <input type=“text” name=“price”>
<input type=“submit”>
</form>
Submit
Price:
• user enters data or selects options
• Data from form goes to server program called
Winter 2001
C.Watters
9
Form calling Simple CGI Example
<HTML><BODY>hi
Where to find the program?
<FORM action
="http://www.cs.dal.ca/~watters/cgibin/hello2.cgi” method =post>
<Input type = "submit">
</FORM>
</BODY>
</HTML>
Winter 2001
How to get data
to the server
Do it!
C.Watters
10
Script for hello2.cgi
#!/opt/bin/perl
print
print
print
print
print
print
Print
print
Response doc type
"Content-type: text/html\n\n";
"<head>\n";
"<title>Hello</title>\n";
"</head>\n";
"<body>\n";
"<h1>Hello, Ottawa</h1>\n";
“<img src=“cancaphd.gif”>
"</body></html>\n";
HTML
doc
• try it
Winter 2001
C.Watters
11
Getting at Databases
ODBC - Open DataBase Connectivity
JDBC - java based
script programs can use these to make
database queries from server databases
Oracle, access, etc
results are sent back to client as html doc
Winter 2001
C.Watters
12
Perl example to ORACLE
print "<head>\n";
print "</head>\n";
print "<body>\n";
print "<h1>Calendar</h1>\n";
print "<b>Course description enrol</b><br>";
&SetOracle;
&RunSQL("Select * from Calendar");
&StopOracle;
print "</body></html>\n";
Winter 2001
C.Watters
13
BEING STATELESS!!
• Each http call is a new connection
• SO??
– A new version of your script is run each time
– No memory of previous events
– pretty hard to implement a shopping cart when
it gets emptied everytime you contact the
server!
Winter 2001
C.Watters
14
Server Side Example
Client puts tshirt in
shopping cart form on
web page
Cart.cgi is called
Makes purchase
(Tshirt)
Generates new page &form
Add a book
Cart.cgi is called
Makes purchase
( book)
Winter 2001
C.Watters
15
Maintaining State
in a Stateless Systems
Use your script to write data to a temporary file on
the server and to start each time by reading any
data in that file
use javascript to process activities in a given
session and send results to server at end only
Hide data in forms and send it back and forth
keep everything in a database
Use Servlets
gets
tricky!!
Winter 2001
C.Watters
16
Servlets
java applications that are part of the server
always available (faster) than cgi scripts
provide continuity (state) for clients
written in java
can use JDBC to access databases
Used for: shopping, search, certificates,
agents, portals
Winter 2001
C.Watters
17
Servlets and State
Cookies can be used to maintain information over
multiple HTTP connections
Information on session is saved in cookie and retrieved
by servlet during the session
Works over multiple browser sessions
A session is a continuous connection from the
same browser (period fixed by server)
Use HttpSession class
Information saved over single browser session only
Winter 2001
C.Watters
18
Other ways to process on Server
to generate dynamic data for web pages
Server side includes
Active server pages
Java server pages
Winter 2001
C.Watters
19
Server Side Include Files
• Server Side Includes (.shtml)
• Active Server Pages (.asp)
• Java Server Pages
(.jsp)
These functions are performed before
any data are sent to the browser
Winter 2001
C.Watters
20
Server Side Includes (SSI)
• Shtml extension
• What happens:
– Server gets request for a page (.shtml)
– Server checks the page for SSI commands
– Server executes those commands and inserts
new values into the page
– Server sends the new page to the Browser
Winter 2001
C.Watters
21
SSI example: ssitest.shtml
<html>
<h1>Getting the date from the server as I need it</h1>
<!--#echo var=“DATE_LOCAL” -->
<h2> I could do other things as well</h2>
<ul><li>a stock quote
<li>an expected wait time
<li>a price check
<li>etc
</ul>
</html>
Winter 2001
C.Watters
22
Server Pages
• Active Server Pages (microsoft) .asp
• Java Server Pages (Sun) .jsp
• Instructions for the server are included in
the web page
• The server notices the extension and looks
for those instructions and executes them!
Winter 2001
C.Watters
23
Active server Page example:test1.asp
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<BODY>
Test1
<% If Time >= #12:00:00 AM# and Time <=#12:00:00 PM# then %>
<h3>Good Morning Ottawa</h3>
<% else %>
<H3>Hello Everyone</H3>
<% end If %>
</BODY>
</HTML>
Winter 2001
C.Watters
24
JSP (Java server pages)
Winter 2001
C.Watters
25
• <UL>
• <LI><B>Expression.</B><BR>
•
Your hostname: <%= request.getRemoteHost() %>.
• <LI><B>Scriptlet.</B><BR>
•
<% out.println("Attached GET data: " +
•
request.getQueryString()); %>
• <LI><B>Declaration (plus expression).</B><BR>
•
<%! private int accessCount = 0; %>
•
Accesses to page since server reboot: <%=
++accessCount %>
• <LI><B>Directive (plus expression).</B><BR>
•
<%@ page import = "java.util.*" %>
•
Current date: <%= new Date() %>
Winter 2001
C.Watters
26
• </UL>
Winter 2001
C.Watters
27
Winter 2001
C.Watters
28
<%@ page import="hello.NameHandler" %>
<jsp:useBean id="mybean" scope="page" class="hello.NameHandler" />
<jsp:setProperty name="mybean" property="*" />
<html>
<head><title>Hello, User</title></head>
<body bgcolor="#ffffff" background="background.gif">
<%@ include file="dukebanner.html" %>
<form method="get">
<input type="text" name="username" size="25"><br>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
<% if ( request.getParameter("username") != null ) {%>
<%@ include file="response.jsp" %>
<% } %>
</body>
</html>
Winter 2001
C.Watters
29
NOT the same as Active X
• Active X Components are “roughly” the
same as applets
Winter 2001
C.Watters
30
Servers and Agents
• Agent
– autonomous execution of task
• Mobile Agent
– dynamic internet routing
• Used for: comparisons, filtering, web
crawling, auctions
Winter 2001
C.Watters
31
Agent Definition
An agent is a software program that is
capable of autonomous action in its
environment in order to meet its objectives.
Winter 2001
C.Watters
32
Agent Examples
• Buyer agents and seller agents each with
goals and constraints can negotiate deals on
behalf of the users
• Agents can monitor health indicators and
alert personnel under given conditions
• Agents can run background checks
• Agents can be avatars in simulations
Winter 2001
C.Watters
33
Recap
• Servers process browser requests
• CGI can be used to run applications on the server from
web pages including accessing DBMS data
• Servers are naturally stateless
• Servlets (&other tricks)can be used to maintain state
• Server side includes can be used to dynamically create
web page content before sending the page to the
browser
• Agents are little independent pieces of software
Winter 2001
C.Watters
34