Publicado el 31 de Julio del 2017
732 visualizaciones desde el 31 de Julio del 2017
227,2 KB
23 paginas
Creado hace 19a (17/04/2006)
Java Servlets
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y Programación
Universidad Complutense de Madrid
17 de abril de 2006
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
input, output
En pascal input, output
p r o g r a m h o l a M u n d o ( input , output );
var
nombre : String ;
begin
readLn ( nombre );
w r i t e L n ( ’ Hola ’ , nombre );
end .
1
2
3
4
5
6
7
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
input, output
HttpServletRequest, HttpServletResponse
import javax . s e r v l e t .*;
import javax . s e r v l e t . http .*;
import java . io .*;
public class H o l a M u n d o e x t e n d s 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 = r e q u e s t . 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 " );
if ( nombre == null ) {
out . p r i n t l n ( " <p > Hola Mundo </ p > " );
} else {
out . p r i n t l n ( " <p > Hola " + nombre + " </p > " );
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y Programació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 ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador I
public class C o n t a d o r e x t e n d s H t t p S e r v l e t {
p r i v a t e int c o n t a d o r ;
/*
*/
M é 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 . . . . . . . . . . . . . . . . . . . . . . . . .
p r i v a t e 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 ();
String nombre = r e q u e s t . g e t P a r a m e 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 " );
out . p r i n t l n ( " <p > Número de a c c e s o s : " + n + " </p > " );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador II
p r i v a t e S e r v l e t C o n f i g config ;
p r i v a t e final static String s t r F i c h e r o = " f i c h e r o " ;
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 f i c h e r o = 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 ( f i c h e r o )));
c o n t a d o r = I n t e g e r . 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 ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Servlet contador III
public final void d e s t r o y () {
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 f i c h e r o = 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 ( f i c h e r o ));
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 ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Aplicación Hola I
T O M C A T _ H O M E / w e b a p p s / 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
| - - c l a s s e s
|
|
|
|
|
|
|
|
| - - 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 ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Aplicación Hola II (fichero web.xml)
<? xml v e r s i o n = " 1.0 " e n c o d i n g = " ISO -8859 -1 " ? >
< web - app >
< display - name > S e r v l e t s de prueba </ display - name >
< s e r v l e t >
< servlet - name > hola </ servlet - name >
< servlet - class > H o l a M u n d o </ servlet - class >
</ s e r v l e t >
< s e r v l e t >
< 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 > f i c h e r o </ param - name >
< param - value > c o n t a d o r . txt </ param - value >
</ init - param >
</ s e r v l e t >
< servlet - m a p p i n g >
< servlet - name > i n v o k e r </ servlet - name >
< url - p a t t e r n >/ http /* </ url - p a t t e r n >
</ servlet - m a p p i n g >
< servlet - m a p p i n g >
< servlet - name > i n v o k e r </ servlet - name >
< url - p a t t e r n >/ s e r v l e t /* </ url - p a t t e r n >
</ servlet - m a p p i n g >
</ 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 ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Filtros I
Transformar la salida del servlet
Filtro 1
Filtro 2
Servlet
Aplicaciones:
autentificación,
cifrado,
transformaciones XML,
lo que se quiera....
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Filtros II
public class E n v o l t o r i o H T M L i m p l e m e n t s Filter {
p r i v a t e static final String c a b e c e r a = " html / c a b e c e r a . html " ;
p r i v a t e static final String pie = " html / pie . html " ;
p r i v a t e static final String s t r T i t u l o = " titulo " ;
p r i v a t e F i l t e r C o n f i g conf ;
public void init ( F i l t e r C o n f i g f i l t e r C o n f i g ) throws S e r v l e t E x c e p t i o n {
conf = f i l t e r C o n f i g ;
}
public void d e s t r o y () {
conf = null ;
}
public void d o F i l t e r ( S e r v l e t R e q u e s t request ,
S e r v l e t R e s p o n s e response ,
F i l t e r C h a i n f i l t e r C h a i n )
throws IOException , S e r v l e t E x c e p t i o n {
String f i c h e r o = conf . g e t S e r v l e t C o n t e x t (). g e t R e a l P a t h ( c a b e c e r a );
String c a b e c e r a = I n c l u y e F i c h e r o . i n c l u y e ( f i c h e r o );
String titulo =
conf . g e t I n i t P a r a m e t e r ( s t r T i t u l o );
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 ();
c a b e c e r a = c a b e c e r a . r e p l a c e A l l ( " < title > " ," < title > " + titulo );
out . p r i n t l n ( c a b e c e r a );
f i l t e r C h a i n . d o F i l t e r ( request , r e s p o n s e );
f i c h e r o = conf . g e t S e r v l e t C o n t e x t (). g e t R e a l P a t h ( pie );
out . p r i n t l n ( I n c l u y e F i c h e r o . i n c l u y e ( f i c h e r o ));
}
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
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Filtros III
html/cabecera.html
<! D O C T Y P E HTML PUBLIC " -// W3C // DTD HTML 4.01// EN " >
< html >
< head >
< meta http - equiv = " Content - Type " c o n t e n t = " text / html ; c h a r s e t = iso -8859 -15 " >
< title > </ title >
</ head >
< body >
html/pie.html
< hr >
< a d d r e s s >
<a href = " mailto : l u i s @ r a m o n v a z q u e z . net " >
Luis F e r n a n d o Llana Díaz
</ a >
</ a d d r e s s >
</ body >
</ html >
1
2
3
4
5
6
7
1
2
3
4
5
6
7
8
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Java Servlets
Filtros IV (fichero web.xml)
..... p a r a m e t r o s g l o b a l e s de la a p l i c a c i o n
< filter >
< filter - name > e n v o l t o r i o H o l a </ filter - name >
< filter - class > E n v o l t o r i o H T M L </ filter - class >
< init - param >
< para
Comentarios de: Java Servlets (0)
No hay comentarios