340 likes | 468 Views
Web Applications Basics. Introduction to Web. Web features Clent/Server HTTP HyperText Markup Language URL addresses Web server - a computer program that is responsible for accepting HTTP requests from clients and serving them HTTP responses
E N D
Introduction to Web • Web features • Clent/Server • HTTP • HyperText Markup Language • URL addresses • Web server - a computer program that is responsible for accepting HTTP requests from clients and serving them HTTP responses • Web application- a dynamic extension of a web or application server
Web Applications & Components • Two types of web applications: • Presentation-oriented (HTML, XML pages) • Service-oriented (Web services) • Web components provide the dynamic extension capabilities for a web server: • Java servlets • JSP pages • Web service endpoints
Web Application Interaction • [client] sends an HTTP request to the web server • [web server]HTTP request HTTPServletRequest • This object is delivered to a web component, which can interact with JavaBeans or a DB to generate dynamic content • [web component] generates an HTTPServletResponse or pass the request to another web component • [web server]HTTPServletResponse HTTP response • [web server] returns HTTP response to the client
Web Components • Servlets- Java classes that dynamically process requests and construct responses • JSP pages - text-based documents that execute as servlets but allow a more natural approach to creating static content • Appropriate usage • Servlets - service-oriented applications, control functions • JSP - generating text-based markup (HTML, SVG, WML, XML)
Java Web Application Technologies Java Servlet technology is the foundation of all the web application technologies
Web Containers • Web components are supported by the services of a runtime platform called a web container • In J2EE, a web container "implements the web component contract of the J2EE architecture“ • Web container services: • request dispatching • security • concurrency • life-cycle management • naming, transactions, email APIs
Web Container Examples • Non-commercial • Apache Tomcat • Jetty • Commertial • Sun Java System Application Server • BEA WebLogic Server • Oracle Application Server • WebSphere • Open source • JBoss
Deployment • Web components have to be installed or deployed to the web container • Aspects of web application behaviour can be configured during application deployment • The configuration information is maintained in a XML file called a web application deployment descriptor
Web Application Development • A web application consists of: • Web components • Static resource files (such as images) • Helper classes and libraries • The process for creating and running a web application is different from that of traditional stand-alone Java classes
Development Cycle • Develop the web component code • Develop the web application deployment descriptor • Compile the web application components and helper classes referenced bythe components • Optionally package the application into a deployable unit • Deploy the application into a web container • Access a URL that references the web application
Web Modules • According to Java EE architecture and Java Servlet Specification: • Web components and static web content files such asimages are called web resources • A web module is the smallest deployable andusable unit of web resources • Web module corresponds to a webapplication • A web module has a specific structure
Web Module Structure • The top-level directory of a web moduleis the document root of the application • The document root contains: • JSP pages • client-side classes • client-side archives • static web resources
Web Module Structure • The document root contains a subdirectory /WEB-INF/ • web.xml: web application deployment descriptor • lib: JAR archives of libraries called by server-side classes
Web Module Structure • classes: server-side classes: • servlets • utility classes • JavaBeans components • tags: tag files, which are implementations of tag libraries
Configuring Web Applications • Web applications are configured via /WEB-INF/web.xml file • Configuration options: • Map URLs to web components • Set initialization parameters • Map errors to error screens • Declare welcome files • Declare resource references
Mapping URLs to Web Components • When a request is received by the web container it must determine which web component should handle the request • Need to add a servlet definition and a servlet mapping for each servlet to web.xml file <servlet> <servlet-name>ServletName</servlet-name> <servlet-class>ServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletName</servlet-name> <url-pattern>/path</url-pattern> </servlet-mapping>
Initialization Parameters • It's possible to pass initialization parameters to the context or to a web component • Context parameters: <context-param> <param-name>name</param-name> <param-value>value</param-value> </context-param> • Servlet parameters (within servlet definition): <init-param> <param-name>name</param-name> <param-value>value</param-value> </init-param>
Handling Errors • Web container generates default error page • You can specify custom default page to be displayed instead • Steps to handle errors • Create appropriate error html pages for error conditions • Modify the web.xml accordingly
Example: Setting Error Pages <error-page> <exception-type> exception.BookNotFoundException </exception-type> <location>/errorpage1.html</location> </error-page> <error-page> <exception-type> exception.BooksNotFoundException </exception-type> <location>/errorpage2.html</location> </error-page> <error-page> <exception-type> exception.OrderException </exception-type> <location>/errorpage3.html</location> </error-page>
Example: web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN“"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Your team project name</display-name> <description>Team N servlets</description> <context-param> <param-name>name_of_context_initialization_parameter</param-name> <param-value>value_of_context_initializtion_parameter</param-value> </context-param> <servlet> <servlet-name>YourServlet</servlet-name> <servlet-class>YourServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>YourServlet</servlet-name> <url-pattern>/YourServlet</url-pattern> </servlet-mapping> </web-app>
WAR Files • A web module can be deployed as an unpacked file structure or can be packaged in a JAR file known as a Web Archive File • WAR file can be created by: • executing jar command • using Ant target • using IDE (Eclipse for instance) • using Maven
Setting a Context Root • A context rootidentifies a web application in a Java EE server • The server is responsible for mapping URL’s that start with a specific prefix to the location of a web application • Usually this is done with a web server configuration file
Using Maven & Jetty • A convenient way to develop, build, deploy and run Web application is by using: • Maven build tool http://maven.apache.org/ • Jetty web server http://www.mortbay.org/
Creating Directory Structure • Maven 2 supports the notion of creating a complete project template with a simple command • To create Web project template need to use maven-archetype-webapp archetype mvn archetype:create -DgroupId=com.maven2example -DartifactId=maven2example_webapp -DarchetypeArtifactId=maven-archetype-webapp
Maven Web Directory Structure <root>/src/main/webapp/ - directory structure for a WAR
Packaging • Executing the command mvn package creates a WAR file
Running with Jetty • It’s easy to run application by using Jetty plugin for Maven • Jetty is an open-source, standards-based, full-featured web server implemented entirely in Java • First created in 1995 • Latest version 6.1.5 / July 23, 2007
Running with Jetty • Add the Jetty plugin to the pom.xml <build> <finalName>maven2example_webapp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.0.1</version> </plugin> </plugins> </build>
Running with Jetty • Execute mvn jetty:run command >mvn jetty:run [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'jetty'. [INFO] ----------------------------------------------------- --- [INFO] Building maven2example_webapp Maven Webapp [INFO] task-segment: [jetty:run] [INFO] ----------------------------------------------------- ... [INFO] Starting jetty 6.0.1 ... ... [INFO] Started Jetty Server • Stop by Ctrl+C
Opening the Application Open your web browser to http://localhost:8080/
Opening the Application Valid URL is http://localhost:8080/maven2example_webapp/
Resources • J2EE Tutorial “Getting Started with Web applications” http://java.sun.com/javaee/5/docs/tutorial/doc/bnadr.html • Building Web Applications with Maven 2 http://today.java.net/pub/a/today/2007/03/01/building-web-applications-with-maven-2.html • Filmiņa par Web 2 (5 minūtes) http://www.youtube.com/watch?v=6gmP4nk0EOE