Publicado el 25 de Abril del 2017
830 visualizaciones desde el 25 de Abril del 2017
356,6 KB
40 paginas
Creado hace 17a (22/04/2008)
Java Servlets
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y Computación
Universidad Complutense de Madrid
22 de abril de 2008
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
¿Qué es un programa?
input
Programa
output
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
¿Qué es un programa?
input
Programa
output
En pascal:
program h o l a M u n d o ( input , output );
var
nombre : String ;
begin
readLn ( nombre );
writeLn ( ’ Hola ’ , nombre );
end .
1
2
3
4
5
6
7
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Un servlet
input −→ HttpServletRequest.
output −→ HttpServletResponse (X)HTML, XML.
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Un servlet
input −→ HttpServletRequest.
output −→ HttpServletResponse (X)HTML, XML.
import javax . servlet .*;
import javax . servlet . http .*;
import java . io .*;
public class H o l a M u n d o extends H t t p S e r v l e t {
public final void doGet ( final H t t p S e r v l e t R e q u e s t request ,
final H t t p S e r v l e t R e s p o n s e r e s p o n s e )
throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {
S e r v l e t O u t p u t S t r e a m out = r e s p o n s e . g e t O u t p u t S t r e a m ();
String nombre = request . g e t P a r a m t e r ( " nombre " );
r e s p o n s e . s e t C o n t e n t T y p e ( " text / html ; charset = UTF -8 " );
if ( nombre == null ) {
out . println ( " <p > Hola Mundo </ p > " );
} else {
out . println ( " <p > Hola " + nombre + " </p > " );
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servidor de aplicaciones: Tomcat
Los severlet son controlados por servidor de aplicaciones.
Tomcat: http://jakarta.apache.org/tomcat/index.html
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servidor de aplicaciones: Tomcat
Los severlet son controlados por servidor de aplicaciones.
Tomcat: http://jakarta.apache.org/tomcat/index.html
Cuando una petición llega
1 Si el objeto de la clase no ha sido creado
1 Carga la clase
2 Crea el objeto
3 Invoca el método init.
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servidor de aplicaciones: Tomcat
Los severlet son controlados por servidor de aplicaciones.
Tomcat: http://jakarta.apache.org/tomcat/index.html
Cuando una petición llega
1 Si el objeto de la clase no ha sido creado
1 Carga la clase
2 Crea el objeto
3 Invoca el método init.
2 Llama al método service.
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servidor de aplicaciones: Tomcat
Los severlet son controlados por servidor de aplicaciones.
Tomcat: http://jakarta.apache.org/tomcat/index.html
Cuando una petición llega
1 Si el objeto de la clase no ha sido creado
1 Carga la clase
2 Crea el objeto
3 Invoca el método init.
2 Llama al método service.
Si debe eliminar al servlet llama al método destroy.
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Interfaz javax.servlet.Servlet
void destroy()
void init(ServletConfig config)
void service(ServletRequest req, ServletResponse res)
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Interfaz javax.servlet.Servlet
void destroy()
void init(ServletConfig config)
void service(ServletRequest req, ServletResponse res)
Clase javax.servlet.http.HttpServlet
void doGet(HttpServletRequest req, HttpServletResponse resp)
void doPost(HttpServletRequest req, HttpServletResponse resp)
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador I
public class C o n t a d o r extends H t t p S e r v l e t {
private int c o n t a d o r ;
/*
*/
M e t o d o s para g u a r d a r el c o n t a d o r a n t e s de
f i n a l i z a r y l e e r l o al e m p e z a r . . . . . . . . . . . .
private s y n c h r o n i z e d int i n c r e m e n t a () {
c o n t a d o r ++;
return c o n t a d o r ;
}
public final void doGet ( final H t t p S e r v l e t R e q u e s t request ,
final H t t p S e r v l e t R e s p o n s e r e s p o n s e )
throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {
int n = i n c r e m e n t a ();
S e r v l e t O u t p u t S t r e a m out = r e s p o n s e . g e t O u t p u t S t r e a m ();
r e s p o n s e . s e t C o n t e n t T y p e ( " text / html ; charset = UTF -8 " );
out . println ( " <p > Numero de accesos : " + n + " </p > " );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador II
private S e r v l e t C o n f i g config ;
private final static String s t r F i c h e r o = " fichero " ;
public final void init ( final S e r v l e t C o n f i g c )
throws S e r v l e t E x c e p t i o n {
config = c ;
S e r v l e t C o n t e x t ctx = config . g e t S e r v l e t C o n t e x t ();
String fichero = config . g e t I n i t P a r a m e t e r ( s t r F i c h e r o );
try {
B u f f e r e d R e a d e r f
= new B u f f e r e d R e a d e r (
new F i l e R e a d e r ( ctx . g e t R e a l P a t h ( fichero )));
c o n t a d o r = Integer . p a r s e I n t ( f . r e a d L i n e ());
f . close ();
} catch ( F i l e N o t F o u n d E x c e p t i o n e ) {
c o n t a d o r = 0;
} catch ( I O E x c e p t i o n e ) {
c o n t a d o r = 0;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador III
public final void destroy () {
S e r v l e t C o n t e x t ctx = config . g e t S e r v l e t C o n t e x t ();
String fichero = config . g e t I n i t P a r a m e t e r ( s t r F i c h e r o );
try {
F i l e W r i t e r f = new F i l e W r i t e r ( ctx . g e t R e a l P a t h ( fichero ));
f . write ( c o n t a d o r + " \ n " );
f . close ();
} catch ( I O E x c e p t i o n e ) {
throw new R u n t i m e E x c e p t i o n ( e . g e t L o c a l i z e d M e s s a g e ());
}
}
1
2
3
4
5
6
7
8
9
10
11
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Aplicación Hola I
T O M C A T _ H O M E / webapps / hola
| - - c a b e c e r a . html
‘-- pie . html
| - - build . xml
| - - c o n t a d o r . txt
| - - html
|
|
| - - prj . el
| - - src
|
|
|
|
|
|
|
|
‘-- WEB - INF
| - - C o n t a d o r . java
| - - Debug . java
| - - E n v o l t o r i o H T M L . java
| - - Fecha . java
| - - H o l a M u n d o . java
| - - I n c l u y e F i c h e r o . java
| - - Login . java
‘-- Sesion . java
| - - C o n t a d o r . class
| - - Debug . class
| - - E n v o l t o r i o H T M L . class
| - - Fecha . class
| - - H o l a M u n d o . class
| - - I n c l u y e F i c h e r o . class
| - - Login . class
‘-- Sesion . class
| - - classes
|
|
|
|
|
|
|
|
| - - lib
‘-- web . xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Aplicación Hola II
Fichero web.xml
<? xml version = " 1.0 " e n c o d i n g = " utf -8 " ? >
< web - app >
< display - name > S e r v l e t s de prueba </ display - name >
< servlet >
< servlet - name > hola </ servlet - name >
< servlet - class > H o l a M u n d o </ servlet - class >
</ servlet >
< servlet >
< servlet - name > c o n t a d o r </ servlet - name >
< servlet - class > C o n t a d o r </ servlet - class >
< init - param >
< param - name > fichero </ param - name >
< param - value > c o n t a d o r . txt </ param - value >
</ init - param >
</ servlet >
< servlet - mapping >
< servlet - name > invoker </ servlet - name >
< url - pattern >/ http /* </ url - pattern >
</ servlet - mapping >
< servlet - mapping >
< servlet - name > invoker </ servlet - name >
< url - pattern >/ servlet /* </ url - pattern >
</ servlet - mapping >
</ web - app >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Sesiones
Memoria entre diferentes invocaciones a servlets.
H t t p S e s s i o n sesion = request . g e t S e s s i o n ();
String nombre =( String ) sesion . g e t A t t r i b u t e ( s t r N o m b r e );
Integer n u m A c c e s o s = ( Integer ) sesion . g e t A t t r i b u t e ( s t r N u m A c c e s o s );
if ( n u m A c c e s o s == null ) {
n u m A c c e s o s = new Integer (0);
}
sesion . s e t A t t r i b u t e ( strNumAccesos , new Integer ( n u m A c c e s o s . i n t V a l u e ()+1));
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
if ( b o r r o S e s i o n != null ) {
c o n t e n i d o . append ( s e s i o n B o r r a d a ( r e s p o n s e ));
sesion . r e m o v e A t t r i b u t e ( s t r N u m A c c e s o s );
sesion . r e m o v e A t t r i b u t e ( s t r N o m b r e );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madr
Comentarios de: Java Servlets (0)
No hay comentarios