Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Java Servlets and Java Server Pages Norman White Stern School of Business What are Java Servlets Java Servlets are essentially server side applets Since they run on the server, their output is sent directly to the browser, hence they generate the web page output dynamically Servlets Servlets are Java classes managed by a servlet container hosted by a Web server. Servlets are mapped to URLs by the servlet container. HTTP requests to a servlet's URL are passed to an instance of the servlet, which generates response content that is returned to the client as the HTTP response. Servlets receive input variables from the HTTP request, can maintain state across invocations, and have control of the content type the server returns. Servlets provide a portable, safe, efficient, and highly general mechanism for extending a Web server. Java Server Pages Servlets are powerful, but they require programming. JSP pages provide a "structural" way to create dynamic textual content, as an alternative to the "programmatic" methodoffered by servlets. A JSP page is an HTML page with special markup produces dynamic content. Although a JSP page's source code looks like HTML, it's actually implemented by a servlet. When a client accesses a JSP page, the Web server translates the JSP page into a Java language servlet, compiles and loads the servlet, and then passes the request to the servlet. (If the servlet is already loaded, the server skips the translation, compilation, and loading.) So, a JSP page is simply an easy way to specify a servlet that produces mostly structured data. JSP Custom Tags But even JSP demands that the page developer knows some Java JSP developers can use JSP to define new XML tags for non-technical users to use in JSP pages. The JSP custom tags are expanded into JSP Scriptlets and then executed. But Wait, doesn’t this involve a lot of overhead Answer, yes but… Trick is, JSP pages are only turned into Servlets when they change. Non-technical developers can make changes at the JSP Custom Tag level, and they automatically get translated into JSP scriptlets, and then the whole page is translated into a Servlet. I Am Completely Confused!! This is way too complex… But that is why you get the big bucks… Advantages over CGI Efficient Convenient Can talk directly to web server, share data, make Data base connections, save information , track sessions etc. Portable Built-in support for HTML forms, cookies etc. Written in Java Powerful Less process startup overhead with Servlets, they stay in memory for reuse. Write once, run anywhere. Great for a mixed environment Inexpensive Inexpensive to add servlet support Examples import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SomeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Use "request" to read incoming HTTP headers (e.g. cookies) // and HTML form data (e.g. data the user entered and submitted) // Use "response" to specify the HTTP response line and headers // (e.g. specifying the content type, setting cookies). PrintWriter out = response.getWriter(); // Use "out" to send content to browser } } Hello World package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World"); } } Hello WWW package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + "<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); } } Package-Puts out Title package hall; public class ServletUtilities { public static final String DOCTYPE = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"; public static String headWithTitle(String title) { return(DOCTYPE + "\n" + "<HTML>\n" + "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n"); } // Other utilities will be shown later... } Using the Package package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(ServletUtilities.headWithTitle("Hello WWW") + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); } } OK, I think I get it Java servlets allow me to write CGI like programs in Java, but without the overhead of CGI, and with more power. But what good is this? Is it that much better than ASP, PhP etc.? Answer Servlets can generate any output type, so they can stream multimedia, generate images, etc. Especially nice if they are sending something to a Java applet running on the browser. Servlets are not just Java Applets Servlets are part of a complete development environment that can run anywhere. Java Version 2 Enterprise Edition (J2EE) includes Servlets (and Java Server Pages) as part of the environment They are quickly becoming part of a standard cross platform development environment supported by many Manufacturers What is new here? Write once, run anywhere development Ability to easily redistribute applications across multiple servers of any type High level standards support of many new technologies Component based development environemnt In short, an architecture for enterprise application development J2EE Architecture elements Distributed Communications Enterprise Data Enabling Built-in Security supporting Java, CORBA Enterprise Web Enabling Naming Services Directory and Trading services, Activation Services, messaging Services, Transaction Services Enterprise Systems Assurance JDBC Common Services Network, web, RMI, CORBA, DCOM XML, Java Servlets, Java Server Pages Enterprise Applications Enabling Enterprise Application Platforms, Application servers and Enterprise Java Beans (EJBs).Modeling with EJBs EJBs – Enterprise Java Beans These are business logic components which depend on services provided by the EJB container. Applications are built by creating new types of session beans and entity beans for handling transactions. Since they extend the session or entity Bean class, Beans inherit services including security, transaction management and data base integration. Structure of J2EE Application Tier Application Tiers and Responsibilities Management Takeaway Java Servlets and Java Server Pages are part of a much larger environment that can provide an integrated, cross-platform, scalable, secure, robust set of “industry standard” systems. But what about more mundane uses Next “BIG” thing is Java Server Pages (JSP) These are HTML files with embedded Java code (Scriptlets) The first time the file is referenced, the complete JSP file is turned into a Java Servlet and compiled. The resulting servlet can be developed much faster and more reliably without sacrificing performance. Advantages Easy to maintain, user doesn’t really need to know much if any Java Runs faster, since everything is compiled Opens WEB development up to full Java toolkit including Enterprise Java Beans Conclusion Java Servlets and Java Beans are being used for most high-end web sites Extends web model to include tightly integrated Java Applets and Java servlets Basis of most new peer to peer applications Learn Java!!