Publicado el 31 de Julio del 2017
719 visualizaciones desde el 31 de Julio del 2017
223,6 KB
21 paginas
Creado hace 17a (10/05/2007)
Java Servlets
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y Computación
Universidad Complutense de Madrid
10 de mayo de 2007
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
¿Qué es un programa?
En pascal:
pro gram h o l a M u n d o ( input , output );
var
nombre : String ;
begin
readLn ( nombre );
wri teLn ( ’ 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
ProgramainputoutputUn servlet
input −→ HttpServletRequest
output −→ HttpServletResponse
import javax . ser vlet .*;
import javax . ser vlet . http .*;
import java . io .*;
public class H o l a M u n d o ext ends 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 = req uest . 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 . pri ntln ( " <p > Hola Mundo </ p > " );
} else {
out . pri ntln ( " <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
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)
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 ext ends H t t p S e r v l e t {
pri vate 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 . . . . . . . . . . . .
pri vate 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 " );
out . pri ntln ( " <p > Numero de acc esos : " + 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
pri vate S e r v l e t C o n f i g config ;
pri vate final static String s t r F i c h e r o = " fic hero " ;
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 fic hero = 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 ( fic hero )));
c o n t a d o r = Int eger . 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 des troy () {
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 fic hero = 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 ( fic hero ));
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 / web apps / 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
| - - cla sses
|
|
|
|
|
|
|
|
| - - lib
| - - 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
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
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Aplicación Hola II
‘-- web . xml
Fichero web.xml
<? xml ve rsio n = " 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 >
< serv let >
< servlet - name > hola </ servlet - name >
< servlet - class > H o l a M u n d o </ servlet - class >
</ se rvle t >
< serv let >
< 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 > fic hero </ param - name >
< param - value > c o n t a d o r . txt </ param - value >
</ init - param >
</ se rvle t >
< servlet - mapp ing >
< servlet - name > inv oker </ servlet - name >
< url - patt ern >/ http /* </ url - pa tter n >
</ servlet - ma ppin g >
< servlet - mapp ing >
< servlet - name > inv oker </ servlet - name >
28
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
Aplicación Hola III
< url - patt ern >/ ser vlet /* </ url - pa tter n >
</ servlet - ma ppin g >
</ web - app >
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 = req uest . 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 );
Int eger n u m A c c e s o s = ( Int eger ) 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 Int eger (0);
}
sesion . s e t A t t r i b u t e ( strNumAccesos , new Int eger ( 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 Madrid
Java Servlets
Sesiones
Reescritura de URL
Cookies
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Sesiones
Toda URL debe ser codificada. Funciona tanto si tiene como si no
tiene las cookies habilitadas.
pri vate S t r i n g B u f f e r
f o r m u l a r i o C o n t i n u a ( 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 ) {
S t r i n g B u f f e r sb = new S t r i n g B u f f e r ();
sb . append ( " < form type =\" get \" action =\" " )
/* Se c o d i f i c a la URL , para que sea
i n d e p e n d i e n t e de las c o o k i e s */
<p > < button name =\" c o n t i n u a r \" type =\" submit \" > " );
sb . append ( r e s p o n s e . e n c o d e U R L ( config . g e t S e r v l e t N a m e ()));
sb . append ( " \" >\ n " );
sb . append ( "
sb . append ( " Continuar </ button > </ p >\ n " );
sb . append ( "
sb . append ( s t r B o r r a S e s i o n );
sb . append ( " \" type =\" submit \" > Borrar sesion </ button > </ p >\ n " );
sb . append ( " </ form >\ n " );
return sb ;
<p > < button name =\" " );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
Java Servlets
Atributos
Se pueden guardar atributos
public void s e t A t t r i b u t e ( String name , Object o );
public void r e m o v e A t t r i b u t e ( String name );
public Object g e t A t t r i b u t e ( String name );
public E n u m e r a t i o n g e t A t t r i b u t e N a m e s ();
1
2
3
4
ServletRequest Atributos que sólo viven en una petición
Comentarios de: Java servlets (0)
No hay comentarios