Está en la página 1de 43

!

" # $ %&

'

()

! "# $ "%

) ******************************************************************************************************************************** +

$&'($

,% -(,. -. . $ (/

0-&-0 $&1
'$% - $

* ******************************************************************************************************************* +

$&'($

,0-

. $ (/

* ******************************************************************************************************* +

$&'($

"% . -2$% -($ . $ (/

&"0 "&- . $ "%

$&'($

************************************************************************************** 3

********************************************************************************************************************** 4

$&'($

2# /. / . $( 0,0(/ . $ ',. - ******************************************************************************************************************** 5

78************************************************************************************************************************************** 5

********************************************************************************************************************************* 9

******************************************************************************************************************************** 9

-! "$ $

-'-: * $&'($

*; < -'-: * $&'($ *=

*; ********************************************************************** >

( ,

***************************************************************************************************************************** >

( 0

= @

**************************************************************************************************************************

( 0

& AB

( 0

& @

( 0

*********************************************************************************************************************** D

( 0

E ******************************************************************************************************************** D

$F

( 0

******************************************************************************************************************** C
***************************************************************************************************************** C

$ ,0,I %

&$ "$

E ********************************************************** 3

******************************************************************************************************************** 3

7&$! "$
- 7&$

8 -( $&'($ =

/% $8 . $(

$&'($

************************************************************************************************ 4
=

$ $2 (/ . $ 2/. $(/ $ ,0,I % J&$ "$

***************************************************************************************** 5
- ******************************************************************************************

0&$-0,I % ****************************************************************************************************************************************************CK
=

,/%

********************************************************************************************************************************************CK

G ********************************************************************************************************CK

******************************************************************************************************************************C3

G ***********************************************************************************************************C3

= @

(
2
= @

= @

**************************************************************************************************************C4
B

*********************************************************************************C4
G *********************************************************************************C4

************************************************************************************************************C4

= @

= @

*******************************************************************************************************C4

************************************************************************************************C5
!

,% $& -0$ $&'($ 0/% $: *****************************************************************************************************************C9


2-% $ / . $ $'$% / ********************************************************************************************************************************D >

E (

E -

"

***********************************************************************************************D >
B (

****************************************************************************D >

"
- , ,( &/ *************************************************************************************************************************************************D D

E*

E*

****************************************************************************************************************D D

E*

0M

********************************************************************************************************************D +

*****************************************************************************************************************************D D

&

-% / -0,/% $ ********************************************************************************************************************************************D 3
&/0$ -2,$% / - 1% 0&/% / ******************************************************************************************************************D 5
&-H 2$% /

$L **************************************************************************************************************************************+>

/ &/ **********************************************************************************************************************************************************+>
$ $2 (/ ****************************************************************************************************************************************************+>
$ $2 (/ C****************************************************************************************************************************************************+

Contenedor / Servidor
"
F B G
@

AB

@
@

B
@

@
*$

"

?
G

@
?

B
*

F B G @

@
B
6 @

@
@

@
F B G @
"
$$

AB

@
$ L

B
$$

O
@

F
F B G

P
@

AB

F B

$L @

0
F B

B
B

FB

8
*

* .
AB

B @

@
B AB
AB

AB
*
G

$$

** *
0
B

-@

'2
@

G
$$
* B

@
*$ B B
@
@
B
-: Q . L 0Q 2

-@@
@

-@@

AB
@

--

*
0
@

-@@
AB

0
@

$ L @
7$ L 8

@ @
F B
@

@
B

*
@

Servlet: Introduccin a los Servlets


Qu es un Servlet?
'
R

O"

B F

G
R

AB

AB

T
B

AB

G *(

@ AB U

AB
B

@B

@@

@@

F B

AB

*%

AB M

AB

*(

F B
R

F B

F B

*P

AB

S
R

@
@

@*

?
(

S
?

8 AB
M

@B

AB

@B

B
F

@
@B

@*

7
@

AB

F B

@B

Finalidad de los Servlets.


-B AB
@

@B

B AB
*

@
M

= @*
(

@ AB
*

0B
B
= @

F
@

E*

E*

*M
6

B
- ,

B
H

M
F

@8 @B
* (
=

Caractersticas de los servlets.


(

B
F B
G B

AB
S
@

@
B

AB
G J

7 '28
F B
@B

*
B

@
B AB

B
@

B AB

@
@

* .

@@

AB

"

@
7

AB

AB

AB

F B

*
(

@B
8

F B

*
0

&"%

@M

L $-

- B

- ,

@ 7@ AB
7

= @

& AB

= @

&

E*

*M

8
& AB
&

= @
@B

@8

7M

@
$

@ AB @

7M

@ @B

AB M

o
"

8
@

*$

@
G

= @
7

@
6

S
M

= @

@
@

6
6

8V
H

78
78

H$

@*

AB

H$

"&(

AB

7! B

H$

"&(

@ B

AB
6

AB

B
?

$E

@*

*$

H$ *

AB

@B

"

B
B

7@

@ AB

@8

. $($ $ 7@

8*

Ventajas fundamentales de los Servlets


'()(*+)(,
o

,
@

@
G

$F B G

(
B

o
o

@
F B

B M

B @

B
@

M
B

B
B @
AB

0H ,

*
AB B

'

@
@

*
@

6
@

+ M

* 0
=

0
M @
0
@
@

B
B

AB

* 0

M6

B
AB
B

*(
0H ,

@
@

*-./(0 ,0
AB
7

8
B

- ,

M AB

- ,

@B
$$ AB

*
B

+1*-/,)(2+ 3 41*+)(, 0* 5, 65,1,'4/7 ,8


,

* (
0
@

4/1,9 5*
(

B - ,

:1*+;(9(5(0,0 < '5*: (9(5(0,0


( - ,

E
7
G **

8* (

*
@

W*

Estructura de un servlet
$

* *;Q

E*

*;Q

E*

*M

@B

@*;Q

= @

V
@B
@
M

$E

= @

& AB

AB

= @

&

8
S

,/$E

V***
X
X

*
C*

D*

6
H

AB

= @
AB

8*

H
*

$%

Ciclo de Vida de los Servlets


"
B

?
B

S
B

@B

B
@
* $
@
M
B
7

0B
B

F B G
B

B
B

J
@

G
G 8

*
B
?

@
E

8
6

G J&

@B

?
6

$
(

6
6 @B
*

@
F

AB

@
B M

*
P AB

Mtodos del ciclo de Vida

6
M

$
.
@B

@
@

B 7S

*E

8 @B
@

B
@B

78

AB

B
B

B
AB

@
G *
@B6 AB

M
G

@
6
*

78
7
,

0
7
7
NX

78

8* $
8 AB
0

6
B

8V

G *

78V
NX
"
@
@

? AB

S
S

?
?

?
B AB

@B

*
G @
6

? AB

G @

$
6
B B
*
$
AB

@
@

$
6
= @
B

&

& AB

G *
= @
@

@
*

7= @

F
@

& AB

= @
6

AB

= @

&

& AB
H

8V

**X

@
*

@
B

?*

AB

@B

API de los Servlets

Paquetes javax.servlets.* y javax.servlet.http.*


$

- ,@

@ AB
E*

*;

E*

*M

@*;

@7

G B 8

"#
@

AB

*
$

AB

*
=
=
7 F

@B
F

E*
F E*
G B 8

*H

@
*M

@*= @

@
@

*
@

@
?
@

26

?
?

@
B

7
0
@

? AB

*/=5*1 4+'(- AB
S

7
$

& AB

26

*>.*;1
*;64+;* &

F B

B
G

8
B

& AB

@ B

@
B

G
AB

B
7

& @

AB
& @

@B

*
@ B

G 8

8*

G
@B

78
0

? AB

@
@

B
S

?
E

@B

B
@

F B G *

B
B

G 8*$

BF

6
G

***

M
@

**

% &'
0
(
6

AB M
= @
H

AB
@
"

@
6

?
@

resp)

26

*;.7 *+
protected

void 04 *5*1*(= @
,
@

protected

= @

void 04@ *1(= @

& AB

&
8@

&
M @

= @

req,

&

resp)

8@

H$

void 04$ *,0(= @

void

req,

. $($ $

protected

& AB

protected

?1404;

& AB

G =

service

04 61(4+;(= @

= @

req,

&

=$-.
M
& AB

resp)
AB

req,

M
= @

AB

*
&

resp)

,
B

protected

& AB

protected

& AB

resp)

8@

= @

req,

&

resp)

8@

"

void 04 /,)*(= @
,

&-0$

& AB

= @

req,
7

& AB
@

= @

&

? AB

*
= @

req,

resp)

& AB
B

req)
B

& AB

void ;*/=()*(= @

&
8 @

long -*1 ,;1 40('(*0(= @


.

protected

protected

&

void 04 .1(= @
B

= @

req,

8@

,/%

void 04 4;1(= @
,

protected

&

resp)

@B

:::

void

;*/=()*(
&

$
0

'
0
0

( )*

'

( &

&

req,

AB
AB

AB

& AB

@ B

@ B

@
6

@B

G
@R

res)
*

'

$
@

26

"
G

*;.7 *+ 0* 54; 7 ?1404;


java.lang.String

-*1 +(1 ,/,7 *1*/(java.lang.String name)


.

AB

T@

ZY@

YJ

ZYJ@

B
$ B

T@

F
E

0
F B

java.lang.String

? AB @

F B

26

*1A40
java.lang.Object

-*1 */=5*1 ,7 *()


.

ZYJ

-*1 */=5*1 4+1*:1()

$ B

'

AB

* (

-*1 +(1 ,/,7 *1*/ ,7 *;()


.

java.util.Enumeration

.7 7 ,/<

-*1 11/(9.1*(java.lang.String name)


.

java.util.Enumeration -*1 11/(9.1* ,7 *;()


.
B

B
@

$ B
*

AB

$ B

-*1 4+1*:1(java.lang.String uripath)

"&,

AB

java.lang.String

-*1 +(1 ,/,7 *1*/(java.lang.String name)


.

B
@

AB

@
S

*E

E T@

ZY@

Z AB

B *

java.util.Enumeration -*1 +(1 ,/,7 *1*/ ,7 *;()


.

E 7S

*E

int

$ B

$ B

-*1 ,B4/ */;(4+()


.

java.lang.String

- , AB

*$

@ 2,2$

@ 2,2$

int

B *

-*1 (+4/ */;(4+()


.
- ,&
. @

- ,*

& AB

. @

AB

-*1 *,5 ,1A(java.lang.String path)


B

@
M

@@

. @

-*1 ,7 *0 (;6,1)A*/(java.lang.String name)


B S

java.lang.String

& AB

C*D

-*1 (7 * <6*(java.lang.String file)


.

& AB

OP

-*1 *>.*;1 (;6,1)A*/(java.lang.String path)


.
B
*

B
@@

B
@

& AB
B

. @
B

AB

@ MJ B

java.net.URL

-*1 *;4./)*(java.lang.String path)


.
B

java.io.InputStream

"&( AB

B
@

-*1 */=*/ +'4()


.

G
AB

-*1 */=5*1 4+1*:1 ,7 *()


.

AB

G S

54-(java.lang.String message,
java.lang.Throwable throwable)
$
$E

E@
*

/*7 4=* 11/(9.1*(java.lang.String name)


$
0

void

54-(java.lang.String msg)
$

void

AB

@
@

void

, @B

void

-*1 *;4./)* ,1A;(java.lang.String path)


.

java.lang.String

java.lang.String

-*1 *;4./)* ; 1/*,7 (java.lang.String path)


.

java.util.Set

@ M

B
E *

;*1 11/(9.1*(java.lang.String name,


java.lang.Object object)
$
0

B
E *

&

6.95() =4(0

- '

"

* B *@

7[

* B *@

7[%

* B *@

[\
]

7['
B]

$E

78[8Q

$ B

8 1A/4C ;

'

7[ @

@
*

[8Q

[\@

788Q

8Q

78Q

][[Q

C A(5* 7

B*M

788V

]7

[\

B*

E $

* B *@

7[%

* B *@
*
,

7['

78Q
@

[\

8Q

88Q

X
0

E]

]PPQ

* B *@

7['

XJJ

E*

[\@

E 78Q

7[0B
0

8Q

78

'
AB
6

0
@

[8Q

Manejo de peticiones y respuestas


Peticin (request) al Servlet HTTP
0B

? = @

@
@

G
$

& AB

G
B

26
B

&

26
@

G 7 G

6
@

, @B
AB

B
@

= @
?F

@ B
@ B

7 G

& AB
*

E*

7 G

*=
H $ 8*

& AB

G
@

B
,
? G
$ B @
@
G
$ @
@
G
$
$
&
G
@
G 7. @
@
@
@
@

= @

& AB

/ F

M
M

8
AB

6
B

8
B

B
R

AB
M

*
F

*B

*$ B

B
7

AB

, @B

$ @

8*
?

8*

!B

26
AB

&

B
6

?
B LB

AB
/

$
$

& AB *
' B *
%
*

?
B
@

78

B
@

8
B

G AB

G *
@

M @

F
@

*B *2 @
G *

2 @78
' B

B
@
0

M78

=
F

*B
*B

B
8

,
@

=
@

%
@

@*

2
H$

78
G *

7
M

=
B

G * *

B
M

*$ B

"&( AB

M
F

B
B

*$ B

78

E
E

M @
0
G *

M 78
" *

= @
@
G

78
G

7
@

= @
G

G Q @

G
*

G *

B *

Respuesta (response) del Servlet HTTP


? $ 116 */=5*1 *;64+;* @

(
0

26

@
@

= 2(

@
?

= 2(*

@
S

@
6

AB
B

@B
F

&

?
@

,
@

$E

= 2(

8 AB
8*

G
@

/B @B

@
6

@ 2,2$ 72B @B @
@
7 E
B

B
AB

"
AB

B
@

AB

/B @B

*
0
AB

/B @B
S

@ AB

@B

@B6
M

@B
@

R
F

* *

78

= @

&

* *,/$E

F
AB

@B
@

AB
@

@ 7
*
@

B
[

E J@
@

^ 70

@ [ E JM
S
@
]" T5[ @
AB

^ 8

@B

Q M

B
B

]" T5[ @
T5 @
AB
*

"
AB
@B

U
@B

@
7

Q M

^
B 8

B
*=

@ 8

AB
AB

B B

@
0

B
*

@ B

@B

*
&
6
=
F

*B
*B
B

*0

Z
@B

*0

Y
$

B 8 @

M
F

"&(7
*2

&

"&( @
@
B

B
=

M
%

78

@
6

=
M

@*

@B

*
&

/B @B
/B @B

/B @B
Q

*+

78
F

,*

"&(*
B

@
AB

- * &+

.(

0 1

Ejemplo de modelo peticin/respuesta


@
E

G
/

H$

H$

"&(

AB

o
6

7! B
@

8
@

"&(*

@ B

AB

@*

o
B

/
B
? @

AB
6

B G
G
B
*-(;1/4 A17 5*

F
B

B
G

@
/

* $

H$ *

B
@

B
@B

AB

*( @

*-(;1/4 A17 5*
YM

YM

ZY

Z&

,.

2$ =/. ][ /

JM

[ -0 ,/% ][J

J&

[Z

YM Z
YMCZ
Y

Z&

Y,% " % -2$][%

Z
[ '-("$][[ZY

Y,% " % -2$][0

Y,% "

< $] B

YJ

[ '-("$][[ ZY

' B ] [$

Z
Z

[Z

YJMCZ
Y

YJ

YJM

AB
B

*-(;1/4 B,=,

* *;Q

E*

*;Q

E*

*M

@B

&

@*;Q
E

= @

V
@B
M

7= @
S

$E

& AB
,/$E

A = @

&

V
*

@ 7[
B ]

JJ(

E JM

[8Q

78Q

@
]7

A*

G
7O%

P8Q

]7
JJ2

@
7[YM

Z[8Q

B *@

7[YM

Z[8Q

B *@

7[Y

Z&

B *@

7[YJM

B *@

7[Y

B *@

7[.

B *@

7[YMCZ%

B *@

7[YMCZ0

B *@

7[YJ

Z[8Q

B *@

7[YJM

Z[8Q

78Q JJ

A*

7O0

P8Q

@B

B *@

B *
X

YJ

Z[8Q

Z[8Q
Z[8Q
[ 8Q
[\
[\

\[YJMCZ[8Q
\[YJMCZ[8Q

AB

Escribiendo un Servlet sencillo


@
B

B
@

B
B
B

@
?

AB
AB

B
@

AB
G *
@

B
G

<html>
<head> <title>Ejemplo de servlet</title> </head>
<body>
<h1>Introduzca su nombre y pulse el boton de enviar</h1>
<form action="miaplicacion/HolaServlet" method="post">
Nombre:<input type="text" name="nombre" size="30">
<input type="submit" name="enviar" value="Enviar">
</form>
</body> </html>
-

B G
B
G
import java.io.*;

import javax.servlets.*;
import javax.servlets.http.*;
public class HolaServlet extends HttpServlet {
/** Redefinicin del
parmetros de inicio*/

metodo

init

configuracin

de

los

public void init(ServletConfig config) throws ServletException {


/**
Llamada
la metodo
init()
de
la
superclase.Esto
es
imprescindible para la correcta inicializacin del servlet y
debe realizarse antes que cualquier otra accin*/
super.init(config);
System.out.println("HolaServlet arrancado a las " + new Date());
}
/** Redefinicin del metodo destroy sin tareas a realizar en
este caso*/
public void destroy() {
System.out.println("HolaServlet detenido a las " + new Date());
}
/** En este caso se ha optado por redefinir el metodo
doPost(),pudindose igualmente haberse optado por redefinir

service().Lo que sera incorrecto es redefinir doGet() ya que la


peticion se realizar por el mtodo post*/
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
/** Se obtiene el valor del parametro enviado*/
String name = request.getParameter("nombre");
/** Se establece el contenido MIME de la respuesta*/
response.setContentType("text/html");
/** Se obtiene un flujo de salida para la respuesta*/
PrintWriter out;
try {
out = response.getWriter();
}catch (IOException e){
System.out.println("Error
en
el
canal
de
"+e.toString());
}
/**Se escribe la respuesta en HTML estndar*/
out.println("<html>");

salida:

out.println("<head>");
out.println("<title> Respuesta de HolaServlet </title>");
out.println("<head>");
out.println("<body>");
out.println("<h1>Funcion!:El
pagina</h1>");

servlet

ha

generado

la

out.println("<br>");
out.println("<font color="red">");
out.println("<h2>Hola " + name + "</h2>");
out.println("</font>");
out.println("</body>");
out.println("</html>");
/** Se fuerza del volcado del buffer de la salida y se cierra
el canal*/
out.flush();
out.close();
} //fin doPost()
}//fin clase

Sesin y estado
@

@ ?

@ ?
B
AB

EG
B *
M

B
0

- ,
G B ?
B
^
B

^
$F

@
AB

AB

@
AB
G *

^
OF

P@
@

!B

!B

M
@

"&(*

^
6

@B6
@

7=

@ JJS S S *F B *

Y @B

@ ]P=

]D D D D D D
]PB D P

B ]P

PZ

^
0

^ ]+*C 0

^ *

2 E-

^ *

@*

^ 7

E*

*M

$ - ,

7[*B D *
0

@*0
@

= @

^ 7[

73> 8Q JJ

B
F

B @
E

AB
G

- B

*=

!B

[ [F B [8Q
@

3>

[8Q

^ 8Q
^

@
*

^
B

AB
@

78Q

AB

B
@
B
S

Creacin
(

G
B

G
B

AB

@ ?

= @

* (

B
6

= @& AB
26
.

78

B *

= @

B
]

A*

78Q

HttpSession
$

@ B

G *

AB

EG

*0

M
@B

B B

B
G

B @

26
0

78

2 E,

AB

AB

@
@

AB

B
Y
B

B Z

E B

G *
,

AB
B

B B

'

78

M
G@

2 E,

, 78

M
G

78

78

*E
G

J
B

.
.

*E

G Y

Z*

AB

= @

B@

AB

AB

E@

G *

26
-

B
E

/ F

@
P* ,

AB

F
6

@B

G *
B

AB
@

AB
B

@
7

@
?

B
O

78

*
B

?
@B

8*
?

$E

@B

= @

7= @

G *

26
0
8
.

7= @

0B AB
@

@B

@
@

@
B 7S

*E

8*

B
B

6
G

G
B

E@

YJ

!
$

"

Z2 $

B M

YJ

% &'
B

@B

0
? @

= @

G *

26
.

7= @

B
7= @

G @B

@B6

G *

*%

*E

% &'
$

@B

= @

78 @

G *

% &'
(

1*

$ 116 *;;(4+ (+0(+- (;1*+*/

M
6

8 B

@B

B
= @

AB

G 7

*B

*$

26
B L B

78

AB

B " L B

78

AB

E@

% &'
(

G *

1*

$ 116 *;;(4+ 11/(9.1* (;1*+*/D

F
B

G *

@B

= @

7= @

*B

*$

26
B

G
&

7= @

8
B

G *
& @

7= @

0B

% &'

& @

@B

= @

G
L

B
$

G *
= @

26
%

78

B
.

' B 78

B
B

78

@ ?
B

/ F

= @

AB
B

G
B

@ ?

Contexto de Servlet
=

- ,
O0

B
@

7M

AB

B
AB
B @

B G
?

AB

AB

B
B

*E

JZ

T @@Z

T @@Z

G
E

G *

B
B R

B
@

B
*

0B

* -

@
@B

* 7$

'28*

Interface ServletContext
$

@ B

"

@ @B
0

.
B

E
G

E@B

E 78Q

* $
G

@B

26

@B

/ F

@B

$ B

@B
@B

G *
0

E
-

B
-

B
-

8
B

7
B

78
/ F

Manejo de Eventos
!

"

"

'

G
*.

AB

B AB

@B

G *

E (

*B

26
E ,

E $

8
0

E $

78

AB

"

*
S

*E

'

E .

+0

1*

@B

B
0

E -

E
E

*
F

*B

26
$
B

E -

B M

B
E

& @

E -

8
B
8

&

E -

B
U

La interface RequestDispatcher
$

@ B

? @

J
@B

6
S
B

AB

AB

B
,

B = 2(
B

@B

@B

*$

@B
@B
$F

@B
* $

@
& AB
A. *

& AB
A. *

. @

. @
B

A.
A

M
7

A*

& AB

. @

7[

A*

& AB

. @

7[J

[8Q

@8Q

A.
A

@8

@ J

F *F @[8Q

Filtros
"

@B

AB

$ L **8*

AB

@
?

* %

?G

@B

B
,

B T

AB

@B6

@
AB

AB

@
AB

78
G *

78

*
"

AB

* $

*"
@
.
Y

@
@

6
78 AB

Y
Y

0
Z

YJ
0

ZFM *

T@

YJ
YJ

YJ
0

Z
T

YJ

Z
Y@

Y@

T@

Z@

YJ@

B Z

YJ@

B Z

YJ

Z
T

@@
Y

Z
T

78

Z
T

AB
@

*E

AB

G
S

AB

E*

78
@
*

YB T@
YJ

Z;*M

@@

YJB T@

AB
AB

*E

AB

7S

AB

G *

API Filtro
0

+3

34

26
$
,

*$
B

& AB
&

0M

*2

@
@

0M
@

AB

78

+3

@
M

B
*

34

"

26
%

78

78

*E

@
B

E 78

$ B
*

%B

G *
B

E
@

G *

+3

34

$5

7
6

0B

78*
B

B
B

B R

B *

@B

& AB

&

@
M

0M

,/$E
@
F
@

AB

SQ

(7 64/1 F

* *,/$E

(7 64/1 F

E*

(7 64/1 F

E*

0M

(7 64/1 F

E*

(7 64/1 F

E*

(7 64/1 F

E*

$E

(7 64/1 F

E*

& AB

(7 64/1 F

E*

&

6.95() )5,;;

1A(;*

Q
Q
E Q
@

Q
Q
Q

(7 65*7 *+1;
B

6.95() =4(0

JJ

E
Q

0
]

8V
Q

S
$E

$F

G *

6.95() =4(0

& AB
&

0M
JJ

0
0

AB
@
8 1A /4C ; ,/$E

E
0

JJ '

$E

G
E

E 78Q

JJ $

('7

] 7,

7[

[8Q

]] +.558 V

] +*C ,

7> 8Q

X
] +*C ,

0
0

JJ

7[

78 VX

AB

8Q

' B 78 \ 8Q
0

@
7

6.95() =4(0

8Q
AB

AB

JSR 315: Servlet 3.0


@

G
&D K

D *>

G C*K

D *>

Anotaciones
2B

*E

*(

G 7

AB

B
&D K

@B

"&(

M
D *>

*
(

B
_

`.

@B

]P2

P B

@ "
@B

= @

]V[J

7= @

[ [J

& AB

[X8

= @

A= @

V
&

@
8V

X
(

AB

AB6 @

AB

G B
_

][2

@
@

"&(

7
$$ 3 7AB

][ 2
@

_
_

[X8

[ B

G D *>

E
B AB

]V[J2

_
=

[ B

@ G

/ /7

T.

B
7OJ

/ F
*.
P8

@
= @

6
8

@
@

]V[J 2

J;[X8

G
* $

8
$$ 3

B
*

javax.servlet.Filter.

@B

@B

V
7= @

& AB

A = @

&

@
8V

***
X
X
_

`.

B (

E*

E (

E*

E -

E*

& AB

E*

& AB

E*

*M

@*= @

E*

*M

@*= @

(
B

@B

2 (

@B

E ,
0

?
E

0
[ [

[
2 @@

E $

7[

E (

8V
E 78Q

*2

7[

[
[

T 8Q
V

[JB @

J;[ X8Q

X
X
_

` .

@
_

7
]V_
B ]['

B
][0

AB

7
,

][@
7

G *

*
B

[8 _

]V[J0

B ]['

C[8X8

[
][@

C[

*E

<servlet>
<servlet-name>ConfigurableServlet</servlet-name>

[X

<servlet-class>tidw.ConfigurableServlet</servlet-class>
<init-param>
<param-name>parametro1</param-name>
<param-value>Valor1</param-value>
</init-param>
<init-param>
<param-name>parametro2</param-name>
<param-value>Valor2</param-value>
</init-param>
</servlet>
$

AB @

* (
@

*E

G
B

@ *

Procesamiento asncrono
"
@

D *>
*=
AB

AB
AB
@ M

*-

B
AB

B
R

M
AB

AB
@ @

@B

@
AB

F
B

AB
B

AB

B
*$

AB
@
M
B

AB

B G @

@
AB @
M

D *>
B

B @
@

AB

U
AB

B
B

B @

6
@

B
@

AB

AB

T B@@

Z B YJ
T B@@
B@@
] B 8
B@@
7
8

B
$
2
-

AB

S
G@

*K
@

import
import
import
import
import
import
import
import
import

*E
_

S
G

B
B

Y
7
*

B MB

- ,

java.io.IOException;
javax.servlet.ServletException;
javax.servlet.annotation.WebServlet;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
tidw.asincservlet.MiClaseAsincrona;
java.util.concurrent.ScheduledThreadPoolExecutor;
javax.servlet.AsyncContext;

@WebServlet(name = "/MiPrimerServletAsincrono", urlPatterns = {


"/asincrono" }, asyncSupported = true)
public class MiPrimerServletAsincrono extends HttpServlet {
private static final long serialVersionUID = 1L;
public MiPrimerServletAsincrono() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
procesandoElRequest(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
procesandoElRequest(request, response);
}
protected void procesandoElRequest(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
AsyncContext aCtx = request.startAsync(request, response);
ScheduledThreadPoolExecutor executor = new
ScheduledThreadPoolExecutor(10);
executor.execute(new MiClaseAsincrona(aCtx));
}
}
package tidw.asincservlet;
import javax.servlet.AsyncContext;
public class MiClaseAsincrona implements Runnable {
AsyncContext ctx;
@Override
public void run() {
try {
// Ejecutaremos este hilo cada 6 segundos
Thread.sleep(6000);
System.out.println("Se lanza cada 6 segundos");
} catch (Exception ex) {
ex.printStackTrace();
}
ctx.complete();
}
public MiClaseAsincrona(AsyncContext ctx) {
this.ctx = ctx;
}
}

Fragmentos web
/

S
@

G
-M
B
$

B
B

S
@
-& AB

@
J

AB
T @

*E

B
G S

2$ -T,%

B
B

@
S

S
B

*E

*E
*-

Z
Y
Y

T
T

YJ
Y

Z2
Z S *2

YJ

YJ

Z
Z
Y

YJ
YJS T
$

*E

YS

*E
B

@
G
F @

G *

M
AB @

AB

-&
$
O
@

S
B

AB

Z2 (

YJ

Z
Z

@
@

B@

Otros.
$

U
0

AB
?

G Q

@
U

@B
^
6

@
= @/
AB

AB
@

E@B
0

Ejemplo 1
@WebServlet(name="CabecerasServlet", urlPatterns={"/cabeceras"})
public class CabecerasServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try{
out.println("<html>");

@
E

out.println("<head>");
out.println("<title>Cabeceras Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Cabeceras: </h1>");
out.println("<ul>");
Enumeration<String> nombresDeCabeceras =
request.getHeaderNames();
while (nombresDeCabeceras.hasMoreElements()) {
String cabecera = nombresDeCabeceras.nextElement();
out.println("<li><b>" + cabecera + ": </b>"
+ request.getHeader(cabecera) + "</li>");
}
out.println("</ul>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}

}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
processRequest(request, response);
}
}

Ejemplo 2
B@

= 2(

<form method="get" action="/solicitud" name="datos">


Nombre: <input name="nombre"><br>
Apellidos: <input name="apellidos"><br>
Edad:
<select name="edad">
<option>Menor de 18</option>
<option>De 18 a 30</option>
<option>De 30 a 55</option>
<option>Mayor de 55</option>
</select>
<br>
Hobbies:<br>
<input name="hobbies" value="lectura"
type="checkbox">lectura<br>
<input name="hobbies" value="futbol"
type="checkbox">verfutbol<br>
<input name="hobbies" value="deporte" type="checkbox">jugar
tenis<br>
<br>
<button>Enviar</button></form>

@WebServlet(name=" FormularioServlet ", urlPatterns={"/solicitud"})


public class FormularioServlet extends HttpServlet {

protected void processRequest(HttpServletRequest request,


HttpServletResponse response)
throws ServletException,
IOException {
String nombre = request.getParameter("nombre");
String apellidos = request.getParameter("apellidos");
String edad = request.getParameter("edad");
String[] hobbies = request.getParameterValues("hobbies");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet que procesa una
solicitud</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + "Hola " + nombre + " " + apellidos+
"</h1>");
out.println("Tu Franja de edad es " + edad + " y tus
hobbies son:");

out.println("<ul>");
for (String hobby : hobbies) {
out.println("<li>" + hobby + "</li>");
}
out.println("</ul>");
out.println("Esta solicitud ha sido invocado con Los
siguientes parametros:<br/>");
out.println(request.getQueryString());
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}

También podría gustarte