Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. CGICGI Common Gateway InterfaceCommon Gateway Interface
  2. 2. Common Gateway Interface (CGI) • As Fire walls are maintained in internet we can’t access the resources of one network through the other network systems, Fire wall allows only Http Protocol. • CGI is the standard way of communication between Client and Application on the Server. • It is an interface which allows to communicate with an application on the server. CGICGI
  3. 3. • CGI allows to generate Dynamic content in response to the request from client. • Programmes available on server side are called as CGI scripts. These are loaded whenever it receives client request. • Scripting Language for CGI script must be in a position to read and write from standard input & output Streams. • CGI is introduced with PERL(Practical Extraction and Reporting Language) which is developed to overcome the problems of c-language. CGICGI
  4. 4. • CGI is commonly implemented by C, C++, PERL and Java etc. • With C and C++, CGI scripts are generated as executable files and stores in CGI BIN directory with executable permissions. • C and C++ based CGI scripts will have problems like Security problems, Platform Dependent, and lack of proper support to Strings. • PERL implementation of CGI scripts has overcome the above problems. CGICGI
  5. 5. • PERL is mainly used to generate Reports after reading the data. Hence it has extended the support of Strings. • PERL is secured Language because of lack of pointers. • PERL is interpreter based language, where syntax is mixture of shell script and C-Lang. As it is interpreter the programme can be ported to any platform without changes. • As it is Interpreter based, the performance may come down. CGICGI
  6. 6. Drawbacks of CGI 1. CGI is slow since for every client request a new process starts. If number of clients increases, less memory is available which tends to bring down the performance. It becomes slower if the application is written in interpreter based language. It becomes unsafe if they are written in compiler based languages. CGICGI
  7. 7. Drawbacks of CGI 2. Fast CGI is better in performance when compare to CGI since it uses concept of persistent process ( single process provides response to the many clients if they request for same script). This concept is implemented using Java but java has lack of env variable reading support. Accessing such variables may make a java programme dependent on platform. CGICGI
  8. 8. Drawbacks of CGI 3. Server Side Extension (API) IIS  ISAPI NServer  NSAPI These have drawbacks as specific to web server as script is based on API provided by the vendor of web server. They are not portable as specific to one web server only. CGICGI
  10. 10. SERVLETSERVLET Servlets are Java platform technology of choice for extending and enhancing Web servers . •component-based •server- independent •platform-independent •protocol-independent •fast and efficient •most secured
  11. 11. • Servlets are used for building Web-based applications, without the performance limitations of CGI programs. • Servlets have access to the entire family of Java APIs, including the JDBC API to access enterprise databases. • Servlets can also access a library of HTTP-specific calls and receive all the benefits of the mature Java language, including portability, performance, reusability, etc. SERVLETSERVLET
  12. 12. WEB SERVER JVM SERVLET CLEINT Request Response Servlet Name + parameters DATA BASE Servlet context SERVLETSERVLET
  14. 14. •JVM loads the servlet on the request from client if servlet is not loaded. •Heavily used servlets has to be loaded on starting of web server to avoid loading and creating instance on every client request. •On every client request a service method is called by creating it as separate thread in JVM, i.e. every client request has a thread created. •Unloading of servlet depends on vender specification i.e., unloads after response or if no response for a specific amount of time etc. SERVLETSERVLET
  16. 16. Servlet is an API which is provided as servlet.jar Servlet is an interface of package javax.servlet javax.servlet.Servlet javax.servlet.GenericServlet javax.servlet.http.HttpServletFor HTTP protocol SERVLETSERVLET
  17. 17. Methods to provide service public void service(ServletRequest req , ServletResponse res) throws IOException, ServletException public void doGet(HttpServletRequest req , HttpServletResponse res) throws IOException, ServletException public void doPost(HttpServletRequest req , HttpServletResponse res) throws IOException, ServletException SERVLETSERVLET
  18. 18. import javax.servlet.*; public class NewServlet extends GenericServlet { public void init(ServletConfig conf) {initialisation code; } public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException {service code;} public void destroy() { destroy code; } } SERVLETSERVLET
  19. 19. import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { public void init(ServletConfig conf) {initialisation code;} public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {service code;} public void destroy(){ destroy code;} } SERVLETSERVLET
  20. 20. HTTP Technology allows to request in two ways GET : requested from address bar and information parameters are given as Query String which is part of URL and separated by ‘?’ GETURL?QueryString POST : requested from form and large amount of information can be send to input streams. • POST is most preferred send large amount of data as data gets truncated in GET request. SERVLETSERVLET
  21. 21. public class NewServlet extends HttpServlet { public void init(ServletConfig conf) {init code;} public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {Get Service code;} public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {Post Service code;} public void destroy() {destroy code;} } SERVLETSERVLET
  22. 22. res.setContentType( “MIME TYPE”); To set the header format of response ServletOutputStream sos=res.getOutputStream(); To create OutputStream to send response sos.println( “html tags/data” ); Method used to send the data with OutputStream SERVLETSERVLET
  23. 23. MIME TypesMIME Types text/plain text/html text/java image/gif image/jpg image/bmp audio/midi audio/wav audio/all
  24. 24. 1.Create a Servlet and save that as file. 2.Compile that from the place of creation. 3.Create a Deployment Descriptor with web.xml file, which includes servlet name and servlet mapping. 4.Deploy the class file and deployment descriptor into web server with the specified process of deployment of a web server. SERVLETSERVLET
  25. 25. web.xmlweb.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ""> <web-app> <servlet> <servlet-name>ServletName</servlet-name> <servlet-class>ServletClassName</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletName</servlet-name> <url-pattern>/vfolder/ServletName</url-pattern> </servlet-mapping> </web-app>
  26. 26. •The hierarchy structure to deploy the servlet file in tomcat web server. SERVLET DeploymentSERVLET Deployment
  27. 27. •war file has to be created to deploy the web application into web server. •Creating “application.war” is possible by “jar” command SERVLET DeploymentSERVLET Deployment prompt> jar –cvf <war_filename> <info_folder> Example: C:erp:> jar –cvf erp.jar .WEB-INF
  28. 28. Requesting from ClientRequesting from Client Call The servlet by using the URL in client application (HTML Form, Browser AddressBar, Applet etc.) as….. http://HostIpAddress:PortNo/app_name/url- pattern Example: http://localhost:8080/erp/register
  29. 29. Requesting from ClientRequesting from Client Call The servlet by using HTML Form <form action=“http://IpAddress:port/application/vFilena me” method=“post”> <button type=“submit”> </form>
  30. 30. Requesting from ClientRequesting from Client Call The servlet by using Applet/Midlet String ues=URLEncoder.encode(“url”); URL u=new URL(ues); URLConnection con=u.openConnection(); BufferedReader br=new BufferedReader(new InputStreamReader(con.getInputStream()); String s=br.readLine(); ta.setText(s); //ta is TextArea
  31. 31. Request ParametersRequest Parameters Enumeration e = req.getParameterNames() To get parameter names sent with the request String name = (String) e.getNextElement() To get name stored in Enumeration Object String[] s = req.getPrameter(String) To get the parameter value of given name String[] s = req.getPrameterValues(String) To get multiple parameter values of given name
  32. 32. Request ParametersRequest Parameters String user = req.getPrameter(“user”) String pwd = req.getPrameter(“password”) Note: This will become hardcode of parameter names and no. of parameter. servlet may not work in case of any changes in parameter names/numbers in client request. Better to get all the names of parameters sent in request and then get the values of each parameter name.
  33. 33. Request ParametersRequest Parameters Enumeration e = req.getParamenterNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = req.getParamenter(name); out.println(name + " = " + value); }
  34. 34. Servlet ContainerServlet Container A servlet container comprises essentially the component of a web server that hosts and interacts with Java servlets. Web components (Servlet, JSP) run in a Web container which provides system services to Web components. Web container specifies a runtime environment for web components that includes security, life-cycle management, deployment, and other services.
  35. 35. Session TrackingSession Tracking
  36. 36. HTTPHTTP •Http is a stateless protocol. Every request is treated as request from a new user, even though the same client is requesting. •Http is stateless since the purpose of this protocol is just to distribute the information and not to retain information about client. •Each time a client retrieves a Web page, it opens a separate connection to the Web server, and the server does not automatically maintain contextual information about a client.
  37. 37. Session TrackingSession Tracking •Session tracking is a mechanism that servlets use to maintain state about a series of requests from the same user (that is, requests originating from the same browser) across some period of time. •To maintain the information of client, Cookie is invented by Netscape company. •Cookie is a part of Http.
  38. 38. Session TrackingSession Tracking URL rewriting is used by appending a unique ID after the URL to identify the user. Hidden <form> fields can be used to store a unique ID for the session. Cookies are small files that the servlet can store on the client computer, and retrieve later. Http Session is an alternative to cookies. It keeps the session data available until browsing ends.
  39. 39. URL Rewriting • Every local URL requested by user can be modified dynamically by the servlet to include extra info (session tracking info). • Extra info can hold information for the session, e.g. Session id, User Name etc. e.g. URL with an additional parameter added on by your code: – http://server/MyServlet?sessionid=123
  40. 40. URL Rewriting Example: banking application. Bank employee’s branch-id is passed from one servlet to another to save re-entry // Get the current employee and branch ids String bid = req.getParameter(branchid); String eid = req.getParameter(empid); out.println(“<FORM ACTION = ”bankservlet? branchid=“+bid+”&empid=“+eid+"">"); out.println("</FORM>");
  41. 41. Hidden Fields •“Hidden” fields are added to a form which will not be displayed on the browser <form action=“/moviefinder” method=“post”> <input type=“hidden” name=“pin” value=“420”> •From servlets, there is no difference in hidden fields and visible fields, both are request parameters only. •The servlet retrieves the hidden fields by using req.getParameter(“pin”) or req.getParameterValues(“pin”)
  42. 42. Hidden Fields Example: String[] items = req.getParameterValues("item"); out.println("<FORM ACTION="someServlet" METHOD=POST>"); if (items != null) for (int i = 0; i < items.length; i++){ out.println("<INPUT TYPE=HIDDEN NAME="item“ VALUE=""+items[i]+"">"); } out.println("Would you like to<BR>"); out.println("<INPUT TYPE=SUBMIT VALUE="Add More Items">"); out.println("<INPUT TYPE=SUBMIT VALUE="Check Out">"); out.println("</FORM>");
  43. 43. Cookies are name, valued objects which are created at server and stored on client side by the server. Cookie contents the information of client itself. The next time client sends the request, cookie is also send as part of request. Bye default Cookie is stored as text file in c:windowstemp CookieCookie
  44. 44. Cookie Every cookie has only one name and value Cookie will be associated with Max Age, Domain Name, Path and Comment Limitations: •Max size of cookie can be 4KB •Max no. of cookies per site can be 20 •Not more than 300 cookies total
  45. 45. Max Age: Default is up to destroying the browser. -ve means valid till current session. 0 means deleting cookie on client side. We can set the age of cookie explicitly as 24x60x60 for 1 day 2x24x60x60 for 2 days etc. CookieCookie
  46. 46. Domain: Every cookie will have domain apart from maximum age. Default of cookie is the domain from which cookie is sent to the client. Path: Cookie having a path will not be send to server if request URL doesn't contain the cookie path. Comment: Some user agents have facility to worn the clients before accepting cookies. This working is through a dialog which can also show comment of the cookie. CookieCookie
  47. 47. Cookie is a class present in javax.servlet.http package. Constructor: Cookie(String name, String value) res.addCookie(c); Cookie[ ] c = req.getCookies(); CookieCookie
  48. 48. Methods: String n=c.getName() String v=c.getValue() Int t=c.getMaxAge() c.setMaxAge(int) String p=c.getPath() c.setPath(String) String com=c.getComment(), c.setComment(String) CookieCookie
  49. 49. String n = req.getParameter(“pname"); String v = req.getParameter(“pvalue”); Cookie nc = new Cookie(n, v); res.addCookie(nc); Cookie[] old_cs = req.getCookies(); for(Cookie oc:old_cs) res.addCookie(oc); CookieCookie
  50. 50. if(v.equals(“bill”) { Double tbill=0.0; Cookie[ ] pcs = req.getCookies(); for(Cookie c:pcs)tbill+=Double.valueOf(c.getValue()); Cookie tb=new Cookie(“tbill”, tbill.toString()); res.addCookie(tb); } CookieCookie
  51. 51. Advantages: •Cookies can easily store more data than hidden fields •Data is stored on the client computer, not on server which saves space on the server and will not have any effect on server performance. Disadvantages: •Data is stored on the client computer, this means the data is neither safe nor secure •Cookies are good for keeping session data, not user data •Cookies may be discarded or the user may contact the server from another computer •Users can tell their browser to turn cookies off CookieCookie
  52. 52. SessionSession A Session begins when a client establishes a connection with http server. For every client an object will be created at server side which is called as HttpSession. Session is a concept which internally works with cookie. It is called as Server Side Cookie. HttpSession stores the information of client on the server which is identified by the server by using cookie, which is created and set by the web server (Servlet Engine).
  53. 53. Session will have the features of storing and retrieving the information. Cookie is validated till the session is valid. It is valid until the client is connected to server. Session may also disposed if the client is idle for more than a specific time, which is dependent on server vendor/ Administrator. Session object implements the interface of HttpSession. SessionSession
  54. 54. SessionSession HttpSession ses = req.getSession(); Creates a new HttpSession object, or retrieves a previous one Creates a unique session ID Makes a new cookie object Associates the cookie with the session ID Puts the cookie in the response (under the Set-Cookie header)
  55. 55. HttpSession ses = req.getSession(); Enumeration e = ses.getAttributeNames(); while (e.hasMoreElements()) { String n = (String)e.nextElement(); String v = ses.getAttribute(name).toString(); out.println(n + " = " + v); } SessionSession
  56. 56. Methods: hs.removeAttribute(name); hs.invalidate(); Boolean b=hs.isNew(); String id=hs.getId(); long t=hs.getCreationTime(); long t=hs.getLastAccessedTime(); SessionSession
  57. 57. Servlet to Servlet CommunicationServlet to Servlet Communication res.encodeRedirectURL(“URL?QueryString”)); Example: res.encodeRedirectURL(“http://server:8080/servlet/color ”)); res.encodeRedirectURL(“http://server:8080/color.html”)) ;
  58. 58. All The Best …. I Career Craft