350 likes | 441 Views
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).
E N D
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) Request Web Server Response Read Static Files File System
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
Friends Likes and Comments Facebook Friends Updates
Dynamic Web Pages Request Web Server Response Script DB
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.html
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-Tutorial/tomcat-7-with-eclipse.html
Plain HTML Text Servlet package 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 { @Override public 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>"); } }
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> <?php echo "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> <bodybgcolor="#fdf5e6"> <p> <ul> <?php $maximum = $_GET["max"]; for($i=0; $i<=$maximum ; $i=$i+2){ echo "<li>$i</li>"; } ?> </ul> </p> </body> </html>
Partial Changes Friends Likes and Comments Friends Updates
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/slides_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/