Programming: Java Server-Side Web

1y ago
20 Views
4 Downloads
608.99 KB
57 Pages
Last View : 3d ago
Last Download : 3m ago
Upload by : Laura Ramon
Transcription

Server-Side Web Programming: Java Copyright 2022 by Robert M. Dondero, Ph.D Princeton University 1

Objectives We will cover: – – – – – – Aside: Python lambda expressions Some advanced Java features Server-side web programming in Java, via Servlets The Spark web app framework The Velocity template engine 2

Motivation Question: Why study Java server-side web programming? Answer 1: Help you better understand server-side web programming Answer 2: Give you a sense of how Java is used in the “real world” 3

Motivation Question: Why study Java server-side web programming (cont.)? Answer 3: Show realistic use of some advanced features of Java Answer 4: Popular and important 4

Motivation Website Front End Back End Google.com JavaScript C, C , Go, Java, Python Facebook.com JavaScript Hack, PHP, Python, C , Java, Erlang, D, Xhp, Haskell YouTube.com JavaScript C, C , Java, Python, Go Yahoo JavaScript PHP Amazon.com JavaScript Java, C , Perl Wikipedia.org JavaScript PHP, Hack Twitter.com JavaScript C , Java, Scala, Ruby Bing JavaScript ASP.net eBay.com JavaScript Java, JavaScript, Scala MSN.com JavaScript ASP.net https://en.wikipedia.org/wiki/ Programming languages used in most popular websites 5

Motivation -- http://blog.stoneriverelearning.com/ t/ 6

Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 7

Python Lambda Expressions Alonzo Church 8

Python Lambda Expressions lambda param1, param2 : expression – – – – The keyword lambda (optionally) Parameters separated by commas A colon A single expression that uses the parameters 9

Python Lambda Expressions Without using a lambda expression: def mult(x, y): return x * y prod mult(5, 6) print(prod) # prints 30 Using a lambda expression: mult lambda x, y: x * y prod mult(5, 6) print(prod) # prints 30 Using a lambda expression: print( (lambda x, y: x * y)(5, 6) ) # prints 30 10

Python Lambda Expressions Without lambda expression: def compare lengths(word1, word2): return len(word1)–len(word2) words.sort(compare lengths) With lambda expression: words.sort( lambda word1,word2: len(word1)–len(word2) ) 11

Python Lambda Expressions Recall eventtest2.py 12

Python Lambda Expressions See eventtestbad.py – Fails miserably 13

Python Lambda Expressions See eventtestlambda.py – Works! 14

Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 15

Advanced Java: Lambda Exprs Java lambda expressions – – New to Java SE 8 Examples 16

Advanced Java: Lambda Exprs Without lambda expression: class LengthComparator implements Comparator String { public int compare(String word1, String word2) { return word1.length() – word2.length(); } } . String[] words; . Arrays.sort(words, new LengthComparator()); . 17

Advanced Java: Lambda Exprs With lambda expression: . String[] words; . Arrays.sort(words, (String word1, String word2) - word1.length() – word2.length() ); . Sometimes can omit param types: . String[] words; . Arrays.sort(words, (word1, word2) - word1.length() – word2.length() ); . 18

Advanced Java: Lambda Exprs Functional interface – An interface that declares a single method Can use a lambda expression in lieu of an object of a class that implements a functional interface 19

Advanced Java: Lambda Exprs Java lambda expression observations – – – Function pointers in a language that doesn’t have functions! Handy! Inelegant? 20

Advanced Java: Packages Packages – – Package: a named group of classes (and other packages) A package is stored in a directory 21

Advanced Java: Packages Using a package java.lang.Math.sqrt(x); import java.lang.Math; Math.sqrt(x); 22

Advanced Java: Packages Defining a package // Book.java package edu.princeton.penny; // All names defined subsequently are // in the edu.princeton.penny package. class Book{ } Defines class edu.princeton.penny.Book Book.java must be in edu/princeton/penny directory 23

Advanced Java: Maven Maven – Java build tool – C : make Java : Maven Java package management tool Python: pip & PyPi Java: Maven & Maven central repo 24

Advanced Java: Maven Maven Central Repo Maven Local Repo ( /.m2) .jar files Java App 1 pom .xml Maven .jar files Java App 2 pom .xml 25

Agenda Aside: Python lambda expressions Some advanced Java features Servlet Programming The Spark Web Application Framework The Velocity Template Engine 26

Servlet Programming Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 27

Servlet Programming Answer 1: Use CGI – – Possible, but Very slow 28

Servlet Programming Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 29

Servlet Programming Servlets – “A servlet is a Java technology-based Web component, managed by a container, that generates dynamic content.” Servlet specification at: http://download.oracle.com/./servlet-3 0-final-spe c.pdf 30

Servlet Programming Servlet Container Browser HTTP Server Servlet1 Servlet3 Servlet2 Servlet4 Your app Popular servlet containers: Apache Tomcat Eclipse Jetty 31

Servlet Programming Tomcat or Jetty Browser Servlet1 Servlet3 Servlet2 Servlet4 Your app Tomcat or Jetty can be both servlet container and HTTP server We’ll use that configuration We’ll use Jetty 32

Servlet Programming Python: – WSGI specification connects HTTP server and your Python app Java: – Servlet specification connects HTTP server and your Java app 33

Servlet Programming See PennyServlets app mvn clean mvn compile ./runserver 55555 34

Servlet Programming See PennyServlets app (cont.) 35

Servlet Programming See PennyServlets app (cont.) 36

Servlet Programming See PennyServlets app (cont.) 37

Servlet Programming See PennyServlets app (cont.) 38

Servlet Programming See PennyServlets app (cont.) – – – – – – – – – penny.sql, penny.sqlite Book.java, Database.java Common.java, Util.java IndexServlet.java SearchFormServlet.java SearchResultsServlet.java Penny.java pom.xml runserver 39

Servlet Programming PennyServlets pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java IndexServlet.java Penny.java SearchFormServlet.java SearchResultsServlet.java Util.java resources penny.sql penny.sqlite 40

Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 41

Spark Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 42

Spark Per Wendel 43

Spark Why study Spark? – – (Instead of some other framework) Easy to learn Simple Good documentation and tutorial Integrated with Jetty container/server 44

Spark See PennySpark app mvn clean mvn compile ./runserver 55555 All pages identical to those of PennyServets app 45

Spark See PennySpark app (cont.) – – – – – – penny.sql, penny.sqlite Book.java, Database.java Common.java Penny.java pom.xml runserver 46

Spark PennySpark pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java Penny.java resources penny.sql penny.sqlite 47

Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 48

Velocity Problem: – PennySpark app builds HTML code strings incrementally Solution: – – Templates The Apache Velocity template engine 49

Velocity See PennySparkVelocity app mvn clean mvn compile ./runserver 55555 All pages identical to those of PennySpark app 50

Velocity See PennySparkVelocity app – – – – – – penny.sql, penny.sqlite Book.java, Database.java header.vtl, footer.vtl, index.vtl, index.vtl, searchform.vtl, searchresults.vtl Penny.java pom.xml runserver 51

Velocity PennySparkVelocity pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java Penny.java resources penny.sql penny.sqlite header.vtl footer.vtl index.vtl searchform.vtl searchresults.vtl 52

Velocity Note the MVC architecture – – – Model: data access code View: data presentation code Controller: business code 53

Velocity Python/Flask/Jinja2 – – Encourages separation of concerns But templates can contain Python-like code Java/Spark/Velocity – – More strongly encourages separation of concerns Templates cannot contain embedded Java code! 54

More Spark and Velocity! There is much more to Spark and Velocity Spark website: – Velocity website: – http://sparkjava.com/ http://velocity.apache.org/engine/1.7/vtl-referenc e.html Don’t confuse Spark (sometimes called SparkJava) with Apache Spark (an open-source cluster-computing framework) 55

Commentary Small Apps Python/Flask/Jinja2 Java/Spark/Velocity Large Apps 56

Summary We have covered: – – – – – – Aside: Python lambda expressions Some advanced Java features Server-side web programming in Java, via Servlets The Spark web app framework The Velocity template engine 57

- The Spark web app framework . Yahoo JavaScript PHP Amazon.com JavaScript Java, C , Perl Wikipedia.org JavaScript PHP, Hack Twitter.com JavaScript C , Java, Scala, Ruby Bing JavaScript ASP.net eBay.com JavaScript Java, JavaScript, Scala . Note the MVC architecture

Related Documents:

java.io Input and output java.lang Language support java.math Arbitrary-precision numbers java.net Networking java.nio "New" (memory-mapped) I/O java.rmi Remote method invocations java.security Security support java.sql Database support java.text Internationalized formatting of text and numbers java.time Dates, time, duration, time zones, etc.

Java Version Java FAQs 2. Java Version 2.1 Used Java Version This is how you find your Java version: Start the Control Panel Java General About. 2.2 Checking Java Version Check Java version on https://www.java.com/de/download/installed.jsp. 2.3 Switching on Java Console Start Control Panel Java Advanced. The following window appears:

Pemrograman Web dengan PHP dan MySQL Achmad Solichin (achmatim@gmail.com) 7 Bab 1 Pengenalan Web Server dan Server Side Scripting Pengenalan Web Server Instalasi dan Konfigurasi Web Server Instalasi dan Konfigurasi PHP Testing Web Server dan PHP Web Server Web Server merupakan sebuah perangk

Java Tutorial Java Tutorial or Core Java Tutorial or Java Programming Tutorial is a widely . An application that runs on the server side and creates dynamic page, is called web application. Currently, servlet, jsp, struts, jsf etc. technologies are used for creating web applications in java. 2/20/17 09:58:44 AM 11 .

JAR Javadoc Java Language jar Security Others Toolkits: FX Java 2D Sound . Java Programming -Week 1. 6/25. Outline Java is. Let’s get started! The JDK The Java Sandbox . into your namespace. java.lang contains the most basic classes in the Java language. It is imported automatically, so

The Java Platform The Java platform has two components: The Java Virtual Machine (Java VM) The Java Application Programming Interface(Java API) The Java API is a large collection of ready-made software components that provide many useful capa

–‘java’ command launches Java runtime with Java bytecode An interpreter executes a program by processing each Java bytecode A just-in-time compiler generates native instructions for a target machine from Java bytecode of a hotspot method 9 Easy and High Performance GPU Programming for Java Programmers Java program (.

Server Side Scripting merupakan sebuah teknologi scripting atau pemrograman web dimana script (program) dikompilasi atau diterjemahkan di server. Dengan server side scripting, memungkinkan untuk menghasilkan halaman web yang dinamis. Beberapa contoh Server Side Scripting (Programming) : 1. ASP (Active Server Page) dan ASP.NET 2.