Upload
susan-nichols
View
214
Download
0
Tags:
Embed Size (px)
Citation preview
Server Side Programming
Web Information Systems 2012
What has been taught until now ?
• HTML?• CSS?• Web Server?
• Do you know– Java ?– Using APIs and Libraries ?
What are web servers
• Hardware or software – Helps deliver the web content that can be
accessed through internet (Wikipedia)
Web Server
File System
Request
Response
Read Static Files
Some Web Servers• History
– CERN httpd• Apache – 60%
– Open source– Linux, Windows, Mac
• IIS -- Internet Information Service– Microsoft– Windows
• Mostly installed automatically • Generally run on Windows Server edition
• High Performance • Nginx• Lighttpd
– Both normally used as forward and reverse Proxy
Apache Download
• Packages – LAMP -- http://www.lamphowto.com/– WAMP -- http://www.wampserver.com/en/– MAMP -- http://sawmac.com/mamp/
• Apache Installation– Ubuntu – sudo apt-get install apache2/Synaptic
Package manager– Windows and Mac – Download Apache
• http://httpd.apache.org/download.cgi
Why Dynamic Web Pages ?Examples?
Friends Likes and Comments
Friends Updates
Forms with Values to input
Dynamic Web Pages
Web Server
Script
Request
Response
DB
Email already registered
HTML Forms
• Pass Data to the server– Text fields, check box, radio button, submit button
etc.
• For More– http://www.w3.org/TR/html401/interact/forms.ht
ml
Example
<HEAD><META http-equiv="Content-Script-Type"
content="text/javascript"></HEAD><BODY>
<FORM action=”destination script/url” method="post">
<INPUT type="button” value="Click Me” ></FORM>
</BODY>
HTTP Methods
• Get – Data encoded in the URL– For idempotent data
• No changes are done except on the users screen • Basically for retrieving data
• Post – Data goes with the message body – Changes the state
• Adds or deletes data at the server
– Cannot backtrack the history because the URL will be the same
Technologies
• CGI• Servlets – Need to know Java• JSP• Php
CGI
• Common Gateway Interface (CGI)– Runs a scripts for every request – New process
• Drawbacks – Scalability Issues– Fast CGI
Servlets
• Java Programming Class used to extend the capabilities of server that host applications accessed via a request-response programming model.
• Java Technology’s answer to CGI.
• Advantages of Java?
• Needs a servlet container
Servlet Container
• Component of a web server that interacts with the Servlets – Manages the Lifecycle of a servlet – Mapping URL to appropriate servlets – Security, concurrency, deployment etc .
• Examples– Apache Tomcat (opensource)– Jboss (opensource)– IBM Websphere
Tomcat Installation
• Follow – http://tomcat.apache.org/tomcat-7.0-doc/appdev
/installation.html• Eclipse + Tomcat– http://www.coreservlets.com/Apache-Tomcat-Tut
orial/tomcat-7-with-eclipse.html
Plain HTML Text Servletpackage testPackage; // Always use packages.import java.io.*; import javax.servlet.*;import javax.servlet.annotation.*;import javax.servlet.http.*;
@WebServlet("/hello")public class HelloWorld extends HttpServlet {
@Overridepublic void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {PrintWriter out = response.getWriter();out.println("Hello World");}
}
Interpreting the Servlet
• @WebServlet("/address”)– This is the URL relative to the app name
• doGet– Code for an HTTP GET request. doPost also
common.• HttpServletRequest, HttpServletResponse– Contains anything that comes from the browser– Send Stuff back to the browser
• @Override
Generates HTML
<!DOCTYPE html><html lang="en"><head>..</head><body>...</body></html>
Servlet that generates HTML@WebServlet("/test1")public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println ("<!DOCTYPE html>\n" +"<html>\n" +"<head><title>A Test Servlet</title></head>\n" +"<body bgcolor=\"#fdf5e6\">\n" +"<h1>Test</h1>\n" +"<p>Simple servlet for testing.</p>\n" +"</body></html>");}
}
Handling forms
Servlet LifeCycle
• init– Executed once when the servlet is loaded
• service– Called in a new thread by server for each request.– Dispatches to doGet, doPost, etc. – Do not override this method!
• doGet, doPost, doBlah– Handles GET, POST, etc. requests.– Override these to provide desired behavior.
• destroy– Called when server deletes servlet instance. – Not called after each request.
Modifying web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4”... >
<servlet><servlet-name>TestServlet</servlet-name><display-name>Print Text</display-name><servlet-class>testPackage.TestServlet</servlet-
class><init-param>
<param-name> param1 </param-name>
<param-value> value1 </param-value> </init-param>
</servlet><servlet-mapping>
<servlet-name>TestServlet</servlet-name><url-pattern>/test2</url-pattern>
</servlet-mapping></web-app>
Passing parameters
Custom URLs
Php
• General purpose server-side scripting language originally designed for web development to produce dynamic web pages
• Hypertext Preprocessor
• Dynamically Typed Language
Php – Hello World
• Embed PHP script into an HTML file• Upload the file onto a Web server using
extension .php (Apache)• Embed using the following delimiters– < ? ... ? >– <?php ... ?>– <script language=”php”> ... </script>– <% ... %>
Php – Hello World
<html><body>
<?phpecho "Hello World";?>
</body></html>
Delimiters – seperates PHP to non-PHP code
<?php ?>
Php Applications
• Wide range of applications (similar to CGI)– Forms handling, etc.
• Wide range of PHP libraries– Network connectivity (e.g. access FTP, IMAP, SMTP, etc– Database connectivity (e.g. MySQL, dBase, Oracle, etc.)– XML/XSLT manipulation– Image manipulation
GET – POST
• Access form fields through PHP array– $HTTP_POST_VARS for POST method– $HTTP_GET_VARS for GET method– $_POST for POST method (>=PHP4.1.0)– $_GET for GET method (>=PHP4.1.0)
$name = $_POST["name"];$name = $_GET["name"];
• Similar to request.getParameter(“name”) in doPost/doGet in Servlets.
Handling Forms<html><head><title>A Test Php</title></head><body bgcolor="#fdf5e6">
<p> <ul><?php$maximum = $_GET["max"];for($i=0; $i<=$maximum ; $i=$i+2){
echo "<li>$i</li>";}?></ul></p>
</body></html>
Friends Likes and Comments
Friends Updates
Partial Changes
JSON, XML Handling
• Change the content type • Construct a Json/XML• Pass it as it is done for plain text or html
• More about this in the next class.
• Might be a part of the assignment
References
• Common– http://coronet.iicm.edu/lectures/mmis/material/sl
ides_serverside_main.pdf• Servlets– http://courses.coreservlets.com/Course-Materials
/pdf/csajsp2/02-Servlet-Basics.pdf• Php– http://www.php.net/– http://www.w3schools.com/php/