+ All Categories
Home > Documents > Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common...

Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common...

Date post: 15-Mar-2018
Category:
Upload: dangcong
View: 233 times
Download: 0 times
Share this document with a friend
16
13.04.2015 1 Margus Hanni, Nortal AS Servlet, JSP 30.03.2015 Millest räägime JAVA Web Container Servlet JSP Hello World #include <stdio.h> int main() { printf("Hello World\n"); return 0; } public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } <? echo '<p>Hello World</p>'; ?> <%= new String("Hello!") %> 1 2 3 4 JAVA JAVA? JAVA - primary goals Five primary goals in the creation of the Java language: 1. It should use the object-oriented programming methodology. 2. It should allow the same program to be executed on multiple operating systems. 3. It should contain built-in support for using computer networks. 4. It should be designed to execute code from remote sources securely. 5. It should be easy to use by selecting what was considered the good parts of other object-oriented languages. http://www.freejavaguide.com/history.html JAVA - Versions Major release versions of Java, along with their release dates: JDK 1.0 (January 21, 1996) JDK 1.1 (February 19, 1997) J2SE 1.2 (December 8, 1998) J2SE 1.3 (May 8, 2000) J2SE 1.4 (February 6, 2002) J2SE 5.0 (September 30, 2004) Java SE 6 (December 11, 2006) Java SE 7 (July 28, 2011) Java SE 8 (March 18, 2014) http://en.wikipedia.org/wiki/Java_%28programming_language%29
Transcript
Page 1: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

1

Margus Hanni, Nortal AS

Servlet, JSP

30.03.2015

Millest räägime

JAVA

Web Container

Servlet

JSP

Hello World

#include <stdio.h>

int main() {

printf("Hello World\n");

return 0;

}

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World");

}

}

<? echo '<p>Hello World</p>'; ?> <%= new String("Hello!") %>

1 2

3 4

JAVA

JAVA?

JAVA - primary goals

Five primary goals in the creation of the

Java language: 1. It should use the object-oriented programming methodology.

2. It should allow the same program to be executed on multiple

operating systems.

3. It should contain built-in support for using computer

networks.

4. It should be designed to execute code from remote sources

securely.

5. It should be easy to use by selecting what was considered

the good parts of other object-oriented languages.

http://www.freejavaguide.com/history.html

JAVA - Versions

Major release versions of Java, along with

their release dates: JDK 1.0 (January 21, 1996)

JDK 1.1 (February 19, 1997)

J2SE 1.2 (December 8, 1998)

J2SE 1.3 (May 8, 2000)

J2SE 1.4 (February 6, 2002)

J2SE 5.0 (September 30, 2004)

Java SE 6 (December 11, 2006)

Java SE 7 (July 28, 2011)

Java SE 8 (March 18, 2014)

http://en.wikipedia.org/wiki/Java_%28programming_language%29

Page 2: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

2

JAVA EE (Enterprise Edition)

Kogum vahendeid (API) erinevate

lahenduste loomiseks: Veebi rakendused

Veebi teenused

Sõnumivahetus

Andmebaasid

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition

API - application

programming interface

Is a set of routines, protocols and tools

for building software applications. Specifies „ground rules“

Specifies how software components should interact

with each ohter

A good API makes it easier to develop a program by

providing all the building blocks. A programmer then

puts the blocks together

http://en.wikipedia.org/wiki/Application_programming_interface

JAVA EE

Kogum vahendeid erinevate

lahenduste loomiseks: Veebi rakendused

Veebi teenused

Sõnumivahetus

Andmebaasis

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition

Web Container

Servlet

JSP

Web Container

Servlet

JSP

Web Container

Manages component

life cycles

Routes requests to

applications

Accepts

requests,

sends

responses

http://tutorials.jenkov.com/java-servlets/overview.html

Web Containers

Apache Tomcat

JBoss

WebLogic

Jetty

Glassfish

Websphere

Web Containers

Multiple applications

inside one container

http://tutorials.jenkov.com/java-servlets/overview.html

Page 3: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

3

Application structure Application structure

Java source files

Application structure

Document root

Application structure

16

Static content

Application structure

Configuration,

executable code

Application structure

Deployment descriptor

Page 4: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

4

Application structure

Compiled classes

Application structure

Dependencies (JAR-s)

Application structure

Java Server Pages

Deployment descriptor

(web.xml) Instructs the container how to deal with this

application

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

</web-app>

Deployment descriptor

(web.xml) In Servlet API version 3.0 most

components of web.xml are replaced by

annotations that go directly to Java

source code.

We will see examples later

Servlets

On JAVA klass, mis töötleb sissetulevat

päringut ning tagastab vastuse

Enamasti kasutatakse HTTP päringu

töötlemiseks ja tulemuse saatmiseks

Servletid töötavad veebikonteineris, mis

hoolitseb nende elutsükli ning päringute

suunamise eest

javax.servlet.http.HttpServlet – abstraktne

klass, mis sisaldab meetodeid doXXX HTTP

päringute töötlemiseks

Page 5: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

5

Servlet example

public class HelloServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

PrintWriter writer = resp.getWriter();

writer.println("<html><head><title>Hello</title></head><body>");

writer.println("<p>Hello World!</p>");

writer.println("<p>Current time: " + new Date() + "</p>");

writer.println("</body></html>");

}

}

Mis on tulemuseks?

Servleti töö

HttpServlet methods

For each HTTP method there is

corresponding HttpServlet method

doPost

doGet

doPut

Servlet Mapping

Before Servlet 3.0 in web.xml

<servlet>

<servlet-name>hello</servlet-name>

<servlet-class>example.HelloServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>hello</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

Example

Servlet Mapping

In Servlet 3.0 via annotation

@WebServlet("/hello")

public class HelloServlet extends HttpServlet {

...

Servlet life cycle

http://tutorials.jenkov.com/java-servlets/servlet-life-cycle.html

Page 6: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

6

Üldine servleti elutsükkel

Kui veebikonteineris puudub Servleti

instants

Laetakse Servleti klass

Luuakse isend

Initsialiseeritakse (init meetod)

Iga päringu jaoks kutsutakse välja service

meetod.

Servleti kustutamisel kutsutakse välja

destroy meetod

Kus on päringumeetodid?

Sessions

HTTP is a stateless protocol, but we

often need the server to remember us

between requests.

There are some ways:

Cookies

URL rewriting

Java HttpSession

HttpSession is a common interface for

accessing session context

Actual implementation is provided by a

Web Container

Java HttpSession

http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html

HttpSession example

HttpSession session = req.getSession();

int visit;

if (session.isNew()) {

visit = 0;

} else {

visit = (Integer) session.getAttribute("visit");

}

session.setAttribute("visit", ++visit);

HttpSession example

HttpSession session = req.getSession();

int visit;

if (session.isNew()) {

visit = 0;

} else {

visit = (Integer) session.getAttribute("visit");

}

session.setAttribute("visit", ++visit);

Either create a new

session or get existing

Page 7: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

7

HttpSession example

HttpSession session = req.getSession();

int visit;

if (session.isNew()) {

visit = 0;

} else {

visit = (Integer) session.getAttribute("visit");

}

session.setAttribute("visit", ++visit);

Check if the session is fresh or not

HttpSession example

HttpSession session = req.getSession();

int visit;

if (session.isNew()) {

visit = 0;

} else {

visit = (Integer) session.getAttribute("visit");

}

session.setAttribute("visit", ++visit);

Retrieve attribute

HttpSession example

HttpSession session = req.getSession();

int visit;

if (session.isNew()) {

visit = 0;

} else {

visit = (Integer) session.getAttribute("visit");

}

session.setAttribute("visit", ++visit);

Update attribute

HttpServletRequest - Attribute

Contains request information

Also can be used to store attributes

request.setAttribute(“key", value);

request.getAttribute(“key”);

HttpServletRequest:

Parameter

request.getParameterNames();

Enumeration<String>

String value = request.getParameter("name");

HttpServletRequest:

Parameter vs Attribute

Object value = request.getAttribute(“key”);

String value = request.getParameter("name");

Page 8: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

8

HttpServletRequest: meta

data

request.getMethod();

“GET”, “POST”, …

request.getRemoteAddr();

Remote client’s IP

request.getServletPath();

“/path/to/servlet”

HttpServletRequest: headers

request.getHeaderNames();

Enumeration<String>

request.getHeader("User-Agent");

“Mozilla/5.0 (X11; Linux x86_64) …”

Request Headers

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Encoding gzip, deflate

Accept-Language et,et-ee;q=0.8,en-us;q=0.5,en;q=0.3

Connection keep-alive

Cookie

JSESSIONID=C687CC4E2B25B8A27DAB4A5F30980583;

__utma=111872281.1173964669.1316410792.1318315398.13

38294258.52; oracle.uix=0^^GMT+3:00^p

Host localhost:8080

User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0)

Gecko/20100101 Firefox/19.0

Request Headers:

www.neti.ee

Cookie

Small piece of information (some ID, parameter, preference etc..)

Stored in browser

Usually sent by a server

Client sends only name-value pair JSESSIONID = C687CC4E2B25B8A27DAB4A5F3098058

language=en

Cookie parameters: Name Value

Expires

Path

Domain

Security (can be sent over ssh only)

HttpOnly

HttpServletRequest: cookies

Cookie[] cookies = request.getCookies();

cookie.getName();

cookie.getValue();

cookie.setValue(“new value”);

Page 9: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

9

Cookie: www.postimees.ee HttpServletResponse

Allows to set response information

response.setHeader("Content-Type", "text/html");

response.addCookie(new Cookie("name", "value"));

Response Headers

Content-Language et

Content-Type text/html;charset=UTF-8

Date Mon, 11 Mar 2013 06:48:54 GMT

Server Apache-Coyote/1.1

Transfer-Encoding chunked

Response Headers:

www.neti.ee

Request <–> Response:

www.neti.ee HttpServletResponse: content

response.getWriter().println("...");

Write text

response.getOutputStream().write(...);

Write binary

Page 10: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

10

Problem with servlets

Writing HTML in Java is hideous

PrintWriter writer = resp.getWriter();

writer.println("<html><head><title>Hello</title></head><body>");

writer.println("<p>Hello World!</p>");

writer.println("<p>Current time: " + new Date() + "</p>");

writer.println("</body></html>");

Java Server Pages (JSP)

Write HTML standard markup language

Add dynamic scripting elements

Add Java code

JSP example

war/WEB-INF/jsp/hello.jsp

<%@page import="java.util.Date"%>

<html>

<head><title>Hello</title></head>

<body>

<p>Hello World!</p>

<p>Current time: <%= new Date() %></p>

</body>

</html>

JSP mapping

In web.xml

<servlet>

<servlet-name>hello2</servlet-name>

<jsp-file>/WEB-INF/jsp/hello.jsp</jsp-file>

</servlet>

<servlet-mapping>

<servlet-name>hello2</servlet-name>

<url-pattern>/hello2</url-pattern>

</servlet-mapping>

JSP life cycle

http://www.jeggu.com/2010/10/jsp-life-cycle.html

http://www.tutorialspoint.com/jsp/jsp_life_cycle.htm

package org.apache.jsp.WEB_002dINF.jsp.document;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

import java.util.Date;

public final class testdokument_jsp extends org.apache.jasper.runtime.HttpJspBase

implements org.apache.jasper.runtime.JspSourceDependent {

private static final javax.servlet.jsp.JspFactory _jspxFactory =

javax.servlet.jsp.JspFactory.getDefaultFactory();

private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

private javax.el.ExpressionFactory _el_expressionfactory;

private org.apache.tomcat.InstanceManager _jsp_instancemanager;

public java.util.Map<java.lang.String,java.lang.Long> getDependants() {

return _jspx_dependants;

}

public void _jspInit() {

_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();

_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());

}

public void _jspDestroy() {

}

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)

throws java.io.IOException, javax.servlet.ServletException {

final javax.servlet.jsp.PageContext pageContext;

javax.servlet.http.HttpSession session = null;

final javax.servlet.ServletContext application;

final javax.servlet.ServletConfig config;

javax.servlet.jsp.JspWriter out = null;

final java.lang.Object page = this;

javax.servlet.jsp.JspWriter _jspx_out = null;

javax.servlet.jsp.PageContext _jspx_page_context = null;

try {

response.setContentType("text/html; charset=UTF-8");

pageContext = _jspxFactory.getPageContext(this , request, response,

null, true, 8192, true);

_jspx_page_context = pageContext;

application = pageContext.getServletContext();

config = pageContext.getServletConfig();

session = pageContext.getSession();

out = pageContext.getOut();

_jspx_out = out;

out.write("\r\n");

out.write("\r\n");

out.write("<p>Current time: ");

out.print( new Date() );

out.write("</p>");

} catch (java.lang.Throwable t) {

if (!(t instanceof javax.servlet.jsp.SkipPageException)){

out = _jspx_out;

if (out != null && out.getBufferSize() != 0)

try { out.clearBuffer(); } catch (java.io.IOException e) {}

if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);

else throw new ServletException(t);

}

} finally {

_jspxFactory.releasePageContext(_jspx_page_context);

}

}

}

Page 11: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

11

Dynamic content

Expression <p>Current time: <%= new Date() %></p>

Scriptlet <p>Current time: <% out.println(new Date()); %></p>

Dynamic content

Declaration <%!

private Date currentDate(){

return new Date();

}

%>

<p>Current time: <%= currentDate() %></p>

JSP Eeldefineeritud muutujad

request- HttpServletRequest

response – HttpServletResponse

out – Writer

session – HttpSession

application – ServletContext

pageContext – PageContext

JSP Märgendid

jsp:include

Veebipäring antakse ajutiselt üle teisele JSP lehele.

jsp:forward

Veebpäring antakse jäädavalt üle teisele JSP lehele.

jsp:getProperty

Loeb JavaBeani muutuja väärtuse.

jsp:setProperty

Määrab JavaBeani muutuja väärtuse.

jsp:useBean

Loob uue või taaskasutab JSP lehele kättesaadavat

JavaBeani.

Expression Language (EL)

Easy way to access JavaBeans in

different scopes

Rea summa: ${rida.summa * rida.kogus}

Basic Operators in EL

Operator Description

. Access a bean property or Map entry

[] Access an array or List element

( ) Group a subexpression to change the evaluation

order

+ Addition

- Subtraction or negation of a value

* Multiplication

/ or div Division

% or mod Modulo (remainder)

== or eq Test for equality

!= or ne Test for inequality

< or lt Test for less than

> or gt Test for greater than

<= or le Test for less than or equal

>= or gt Test for greater than or equal

&& or and Test for logical AND

|| or or Test for logical OR

! or not Unary Boolean complement

empty Test for empty variable values

http://www.tutorialspoint.com/jsp/jsp_expression_language.htm

Page 12: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

12

Scopes

Many objects allow you to store

attributes ServletRequest.setAttribute

HttpSession.setAttribute

ServletContext.setAttribute

Andmete skoobid

ServletContext – veebikontekst, üks

ühe rakenduse ja JVM-i kohta

Sessioon – üks iga kasutajasessiooni

kohta (erinev lehitseja = erinev

sessioon)

Request – konkreetse päringu skoop

Andmete kirjutamiseks/lugemiseks on

meetodid setAttribute/getAttribute

Scopes

http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html

Scopes

<%

application.setAttribute("subject", "Web information systems");

session.setAttribute("topic", "Servlets");

request.setAttribute("lector", "Roman");

pageContext.setAttribute("lector", "Roman");

%>

Subject: ${subject}

Topic: ${topic}

Lector: ${lector}

Väljund: Subject: Web information systems Topic: Servlets Lector: Roman

Scopes

<%

application.setAttribute("subject", "Web information systems");

session.setAttribute("topic", "Servlets");

request.setAttribute("lector", "Roman");

pageContext.setAttribute("lector", "Roman");

pageContext.setAttribute("subject", "Meie uus teema");

application.setAttribute("subject", "Meie järgmine teema");

%>

Subject: ${subject}

Topic: ${topic}

Lector: ${lector}

Mis on väljundiks?

Scopes

<%

application.setAttribute("subject", "Web information systems");

session.setAttribute("topic", "Servlets");

request.setAttribute("lector", "Roman");

pageContext.setAttribute("lector", "Roman");

pageContext.setAttribute("subject", "Meie uus teema");

application.setAttribute("subject", "Meie järgmine teema");

%>

Subject: ${subject}

Topic: ${topic}

Lector: ${lector}

Subject: Meie uus teema Topic: Servlets Lector: Roman

Page 13: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

13

Scopes

<%

application.setAttribute("subject", "Web information systems");

session.setAttribute("topic", "Servlets");

request.setAttribute("lector", "Roman");

pageContext.setAttribute("lector", "Roman");

%>

Subject: ${subject}

Topic: ${topic}

Lector: ${lector}

Less visible

JavaBeans

public class Person implements Serializable {

private String name;

public Person() {}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Implements Serializable

Public default constructor

getX and setX methods

for each property X

JavaBeans in EL

Person person = new Person();

person.setName("Roman");

request.setAttribute("person", person);

<p>Person: ${person.name}</p>

Java Standard Tag Library

(JSTL) Set of standard tools for JSP <%

List<String> lectors = Arrays.asList("Siim", "Roman", "Margus");

pageContext.setAttribute("lectors", lectors);

%>

<c:set var="guestLector" value="Margus" />

<c:forEach var="lector" items="${lectors}">

Name: ${lector}

<c:if test="${lector eq guestLector}“>(guest)</c:if>

<br />

</c:forEach>

Problem with JSP

Writing Java in JSP is hideous

<p>Current time: <%= currentDate() %></p>

Example

Servlet + JSP

JSP on puhtam

Kihid on eraldatud

Korduvkasutatavus

Kuid kas saab paremini?

Page 14: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

14

Model-View-Controller (MVC)

http://java.sun.com/blueprints/patterns/MVC-detailed.html

Servlet controller, JSP view

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

req.setAttribute("currentDate", new Date());

req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req, resp);

}

Model data

Controller gets invoked

Servlet controller, JSP view

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

req.setAttribute("currentDate", new Date());

req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req, resp);

} Select and invoke view

Controller gets invoked

Servlet controller, JSP view

WEB-INF/jsp/hello.jsp

<html>

...

<body>

<p>Current time: ${currentDate}</p>

</body>

</html>

View uses the

data from model

Filters

Allows you to do something before, after or

instead of servlet invocation.

http://docs.oracle.com/javaee/5/tutorial/doc/bnagb.html

Filter chain

Filter example

public class LoggingFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

long start = System.currentTimeMillis();

chain.doFilter(request, response);

long end = System.currentTimeMillis();

System.out.println("Time spent: " + (end - start));

}

}

Page 15: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

15

Filter example

public class LoggingFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

long start = System.currentTimeMillis();

chain.doFilter(request, response);

long end = System.currentTimeMillis();

System.out.println("Time spent: " + (end - start));

}

}

Invoke next filter in

chain or the servlet

if this was the last filter

Filter declaration

Before Servlet 3.0 in web.xml

<filter>

<filter-name>loggingFilter</filter-name>

<filter-class>example.LoggingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>hello</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

Filter declaration

In Servlet 3.0 via annotation

@WebFilter("/*")

public class LoggingFilter implements Filter {

...

Life cycle event listeners

javax.servlet.ServletContextListener

javax.servlet.ServletContextAttributeListener

javax.servlet.ServletRequestListener

javax.servlet.ServletRequestAttributeListener

javax.servlet.http.HttpSessionListener

javax.servlet.http.HttpSessionAttributeListener

Listener example

public class LoggingRequestListener implements ServletRequestListener {

@Override

public void requestInitialized(ServletRequestEvent event) {

System.out.println("Received request from " + event.getServletRequest().getRemoteAddr());

}

@Override

public void requestDestroyed(ServletRequestEvent event) {}

}

Listener declaration

Before Servlet 3.0 in web.xml

<listener>

<listener-class>

example.LoggingRequestListener

</listener-class>

</listener>

Page 16: Web Container Servlet Servlet, JSP JSP JAVA URL rewriting Java HttpSession HttpSession is a common interface for accessing session context Actual implementation is provided by a Web

13.04.2015

16

Listener declaration

In Servlet 3.0 via annotation

@WebListener

public class LoggingRequestListener implements ServletRequestListener {

...

Should I bother?

• There are a lot of fancy Java web

frameworks that simplify application

building.

• Should I still learn these basic

technologies, will I ever use them?

Should I bother?

• You are still going to deploy your

application to a web container.

• Most traditional frameworks use JSP

as the view technology.

Should I bother?

http://en.wikipedia.org/wiki/Java_servlet

What about servlets?

• Most frameworks are based on the Servlet API

• You will probably still encounter things like

HttpSession, HttpServletRequest etc inside your

code.

• You might want to write filters and listeners.

• You probably won’t write much servlets. But

sometimes they can still be handy for simple

tasks.

• AngularJS and REST (Representational State

Transfer)

Sources of wisdom

Tutorial http://docs.oracle.com/javaee/7/tutorial/

http://www.coreservlets.com/java-8-tutorial/

API http://docs.oracle.com/javaee/7/api/


Recommended