Está en la página 1de 91

!

u



8C?LC1C llnAL uL 8ASL uL uA1CS ? 8CC8AMAClCn
!"#"
%& '()*+( ,-(- .+
.)/0&/)12 0-2 345 6
76489:
or:
L.l. Ale[andro lsrael Mercado Lpez
L L C C n C C l M l L n 1 C S L C C M A 8 1 L


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !

C8!L1lvC:
Ll alumno, deber reallzar un proyecLo de Llpo web. Ll proyecLo se basara en la creacln de un
blog de esLudlo, donde el usuarlo podr crear sus proplos Lemas a parLlr de una caLegorla
ofreclda por el usuarlo admlnlsLraLlvo. Ln cada Lema Lodos los usuarlos lnscrlLos a la pglna
podrn emlLlr sus oplnlones o dlscuLlr de manera sana del Lema en cuesLln. LsLa pglna ser
personallzada por usuarlo, esLo qulere declr que aparecern sus nombres y proplos Lemas
denLro del slsLema.




lC8MA uL 18A8A!C:
Ll alumno deber crear paso a paso, segun las lnsLrucclones del manual la apllcacln. Se debe
Lomar en cuenLa que las expllcaclones se harn denLro del mlsmo manual o, denLro de la clase
donde el docenLe reflnara las cuesLlones que el alumno valla Lomando a lo largo de la creacln
de esLe.




1LCnCLCClAS A u1lLlZA8:
ara la creacln de esLe pequeno e[emplo de paglna web, uLlllzaremos varlas Lecnologlas enLre
las cuales se encuenLran: !S( la comblnacln de [ava con hLml que nos permlLlr crear paglnas
dlnmlcas), !S([ava scrlpL el cual es uLlllzado para proporclonar a la pglna algo de efecLos
vlsuales), CSS ( cascade sLyle sheeL que permlLe darle formaLo a los componenLes del hLml),
MySCL (mane[ador de base de daLos graLulLo que nos permlLlr guardar a nuesLros usuarlos,
caLegorlas, Lemas, comenLarlos y admlnlsLradores. uenLro del lengua[e [ava uLlllzaremos
!AvA8LAnS para conecLar nuesLra apllcacln con nuesLra base de daLos y asl poder hacer
consulLas y SL8vLL1S que nos permlLlrn lnserLar y modlflcar daLos de nuesLra base de daLos
con los elemenLos Lomados de un formularlo.






9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? C


PL88AMlLn1AS A u1lLlZA8:
Ls necesarlo como programadores poder Lener una herramlenLa que nos faclllLe la creacln de
apllcaclones y que nos permlLa darle esLrucLura a nuesLro proyecLo, por Lal moLlvo
uLlllzaremos un luL que faclllLe la Larea de ordenar LanLos archlvos de programacln y asl
poder ahorrar Llempo.
LxlsLen mulLlples luLs que podemos uLlllzar en el desarrollo de apllcaclones que Lengan que
ver con el lengua[e [ava Lales como:
1. Lcllpse.
2. neLbeans.
3. !ueveloper.
4. lnLelll! luLA.
Ln nuesLro caso uLlllzaremos neLbeans, lo cual no qulere declr que sea el me[or, recuerden
que solo es un elemenLo que nos faclllLara la programacln por lo cual, al ser la ldea el
ayudarnos en nuesLro Lraba[o cualqulera de los anLerlores resulLa excelenLe.
Adems algo de lo ms lmporLanLe es que uLlllzaremos !"#$$ &'()*+, -./.0 para manlpular
nuesLra base de daLos medlanLe el phpmyadmln.

Lxpllcacln del cdlgo:

1)23 4 2563) 73) 6'89) ':;7*<3<*5,') ')23(9, 5(6',363) ;5( <575(
65,6'=

Ll color ___ represenLara Lodas la llamadas de archlvos exLernos a nuesLra
pglna o archlvo web. LsLos pueden ser css o [s dependlendo de la
ocasln.
Ll color ___ represenLara Lodos los requesL.geLarameLers que Lengamos
en nuesLros arhlvos.
Ll color ___ represenLan las peLlclones [avabean que Lengamos en nuesLro
archlvo.
Ll color ___ represenLa los componenLes hLml que Lengamos en nuesLra
pglna.
Ll color ___ represenLa los boLones de nuesLra apllcacln.

Ll color ___ represenLa los meLodos de consulLas que hagamos en la
pallacln.
Ll color ___ represenLa Lodas las consulLa sql que Lengamos en cada
archlvo


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? D

lnulCL:
1. lnS1ALAClCn uL xAM....................................3
2. 8LA8AClCn uL xAM A8A 18A8A!A8 CCn lnnou8..................8
3. C8LAClCn uL LA 8ASL uL uA1CS A u1lLlZA8........................9
4. lnSL8ClCn uL lnlC8AMClCn A LA 8ASL uL uA1CS....................12
3. lnlClC uLL 8C?LC1C WL8..................................22














































9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? E

lnS1ALAClCn uL xAM:

uespues de descargar el lnsLalador de xAM podemos proceder a lnsLalarlo.

1.-lnS1ALAClCn uL xAM
1.1 rocura Lener Lodos los exploradores de lnLerneL cerrados e lncluso Lu neLbeans apagado.
1.2 Ahora da doble cllc en el lcono o lnsLalador de exampp.

1.3 1e aparecer el ayudanLe de lnsLalacln de xampp:

1.4 ua cllc en nexL y selecclona el lugar donde quleres que se lnsLalen las carpeLas y archlvos
de xampp.
noLa: lo me[or es de[ar la ruLa predeflnlda:

1.3 Ahora da cllc en nexL, y selecclona las opclones de lnsLall apache" e "lnsLall sql". 1al como
se muesLra en la slgulenLe lmagen.


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? F


1.6 or ulLlmo da cllc en lnsLall para que se emplece a lnsLalar la apllcacln.
uespues de lnsLalar xAM podr enconLrarlo en lnlclo > rogramas > xAM. Alll enconLrar
el anel de ConLrol de xAM, a Lraves del cual podr lnlclar y parar el servldor e lnsLalar y
deslnsLalar servlclos.

Ahora comprobaremos que xAM fue lnsLalado correcLamenLe:

1. Abra una venLana del navegador.
2. Lscrlba localhosL o 127.0.0.1
3. ver una pglna como la slgulenLe:


llg 2. robando xAM

4. Selecclone el ldloma que preflera y esLar en la pglna de admlnlsLracln del xAM.


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? G



llg 3. AdmlnlsLracln xAM

uespues de esLo esLamos llsLos para conflgurar M?SCL. LsLe proceso es senclllo y nos permlLlr
preparar la base de daLos que uLlllzaremos.


















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? H

nA8ILI1Ak INNCD8:

lnnou8 es una Lecnologla de almacenamlenLo de daLos para MySCL que soporLa Lransacclones
del Llpo AClu.

ara hablllLar lnnou8 (por e[emplo en xampp), se debe edlLar el archlvo de conflguracln de
MySCL my.cfg.

Ln el caso parLlcular de xampp (muy uLlllzado hoy en dla como dlsLrlbucln de servldor Web),
el archlvo a edlLar se encuenLra en la slgulenLe ruLa.

C:\xampp\mysql\bln\my.cnf
1) ComenLar la llnea que dlce ( sl ya esLa comenLada de[ala como esLa):
Sklp-lnnodb




2) ues comenLar las slgulenLes cuaLro llneas, (sl las llneas ya esLn des comenLadas no
reallces esLe paso):
#lnnodb_daLa_home_dlr = C:/apachefrlends/xampp/mysql/
#lnnodb_daLa_flle_paLh = lbdaLa1:10M:auLoexLend
#lnnodb_log_group_home_dlr = C:/apachefrlends/xampp/mysql/
#lnnodb_log_arch_dlr = C:/apachefrlends/xampp/mysql/

3) 8elnlclar el servlclo de MySCL.

LlsLo, Ahora ser poslble conflgurar las Lablas de su base de daLos para usar lnnou8.
or e[emplo, sl dlspone de phpmyadmln lnsLalado en su servldor web, puede lr a
alguna base de daLos, y luego cllc en alguna Labla en parLlcular.
Luego en el Lab Cperaclones sl Lodo sall blen vern dlsponlble la opcln de lnnou8.











9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? I

CkLACICN DL LA 8ASL DL DA1CS:
Creacln del usuarlo y conLrasena de nuesLra base de daLos:
AnLes de empezar es lmporLanLe crear un usuarlo y una conLrasena para poder acceder a
nuesLra base de daLos desde la apllcacln, para lo cual reallzaremos los slgulenLes pasos:
1.-Abre Lu explorador de lnLerneL favorlLo y en el buscador coloca localhosL" y da enLer.

2.- ue la venLana emergenLe selecclona phpmyadmln como se muesLre en la slgulenLe
venLana:

3.- Ahora selecclona la pesLana prlvlleglos
4.-ua cllc en agregar un usuarlo
3.-Ahora colocaremos el nombre de usuarlo y la conLrasena. ara efecLos de que no se nos
olvlde nuesLro usuarlo y conLrasena usaremos como usuar|o: usuar|o y como password:
usuar|o. Colcalos como se muesLra en la slgulenLe lmagen:

6.- Ahora selecclonaremos los prlvlleglos que el usuarlo, usuarlo va a Lener, para manlpular la
base de daLos y su conLenldo. Como nosoLros somos los que vamos a programar es necesarlo
Lener un usuarlo Llpo admlnlsLrador, para eso selecclona las opclones que se muesLran en la
slgulenLe venLa:


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #"


7.- or ulLlmo da cllc en conLlnuar para que nuesLro usuarlo quede generado de manera
correcLa y con los prlvlleglos necesarlos para poder manlpular nuesLra base de daLos.

C8LAClCn uL LA 8ASL uL uA1CS:
AnLes de meLer los cdlgos necesarlos para crear nuesLras Lablas y llenarlas de lnformacln
hay que crear una base de daLos o esquema que nos permlLa conLener Loda esa programacln
que lnLroduclremos ms delanLe. or lo LanLo los pasos para crear una base de daLos son:
1.- ua cllc en la pglna de lnlclo, como se muesLra a conLlnuacln:
ua cllc en esLe lcono.
2.- Ahora en la seccln acclones/MySCL localhosL/ crear una base de daLos", en el campo
vaclo coloca: bd_b|og y da cllc en crear como se muesLra en la slgulenLe lmagen:

Con esLo Lenemos creada nuesLra base de daLos y por lo LanLo esLamos llsLos para lnLroduclr
los cdlgos necesarlos para modelarla. LsLe modelado esLa creado segun la planeacln del
alumno.




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? ##

ara lnserLar los cdlgos prlmero selecclonamos la base de daLos bd_blog. uespues da cllc en
la pesLana sql para poder lnLroduclr los cdlgos.

















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #!

IN1kCDUCCICN DL CCDIGC:

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generaci!n: 06-05-2010 a las 15:09:41
-- Versi!n del servidor: 5.1.41
-- Versi!n de PHP: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `bd_blog`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `admin`
--

CREATE TABLE IF NOT EXISTS `admin` (
`id_admin` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`correo` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`apodo` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`avatar` blob,
PRIMARY KEY (`id_admin`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla `admin`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `admin_cat`
--

CREATE TABLE IF NOT EXISTS `admin_cat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_admin` int(11) NOT NULL,
`id_cat` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_admin` (`id_admin`),
KEY `id_cat` (`id_cat`)


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #C

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla `admin_cat`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `categoria`
--

CREATE TABLE IF NOT EXISTS `categoria` (
`id_cat` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`fecha` date NOT NULL,
`imagen` blob NOT NULL,
PRIMARY KEY (`id_cat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=6 ;

--
-- Volcar la base de datos para la tabla `categoria`
--

INSERT INTO `categoria` (`id_cat`, `nombre`, `fecha`, `imagen`) VALUES
(1, 'Deportes', '2010-03-10', ''),
(2, 'Musica', '2010-03-10', ''),
(3, 'teatro', '2010-03-11', ''),
(4, 'jsp', '2010-03-11', ''),
(5, 'Escuela', '2010-03-11', '');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `mensajes`
--

CREATE TABLE IF NOT EXISTS `mensajes` (
`id_mensaje` int(11) NOT NULL AUTO_INCREMENT,
`fecha` date DEFAULT NULL,
`mensaje` longblob,
`hora` time DEFAULT NULL,
PRIMARY KEY (`id_mensaje`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=42 ;

--
-- Volcar la base de datos para la tabla `mensajes`
--

INSERT INTO `mensajes` (`id_mensaje`, `fecha`, `mensaje`, `hora`)
VALUES
(1, '2010-03-26',
0x4573746520657320656c20756c74696d6f20636f6e63696572746f2064652073636f
7270696f6e73206e6f207465206c6f20707565646573207065726465722e0d0a456c20
37206465205365707469656d62726520646520657374652061c3b16f20656e206c6120
636975646164206465206d657869636f, '01:00:00'),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #D

(2, '2010-03-26',
0x556e6f206465206c6f73206d656a6f726573206a756761646f726573206861207265
73756c7461646f20616469636f742e0d0a0d0a526f6e616c646f20636f6e20646f7069
6e6720706f73697469766f2e206a616a616a616a612e, '12:00:00'),
(3, '2010-03-26',
0x70617261206d616e646172206120756e6120706167696e612078206465736465206a
617661207365207574696c697a6120656c20636f6d616e646f20726573706f6e73652e
73656e6452656469726563742822706167696e612061206c6c616d61722229,
'09:50:00'),
(4, '2010-03-26',
0x456e206a737020706f64656d6f73206372656172207661726961626c657320646520
736573696f6e20636f6d6f20736520766520656e20656c207369677569656e74652065
6a656d706c6f2073657373696f6e2e7365744174747269627574652822757375617269
6f222c207573756172696f293b, '11:30:00'),
(14, '2010-04-09',
0x67726163696120706f722074752061706f72746520616c657820, '09:09:00'),
(15, '2010-04-09',
0x6772616369617320706f722074752061706f72746520706572206d656a6f72206461
6e6f7320756e20656a656d706c6f207061726120656e74656e646572206d6173206772
6163696173, '09:13:00'),
(16, '2010-04-09', 0x6173646661736466617364666173646673616664,
'10:29:00'),
(17, '2010-04-09', 0x6772616369617320706f722074752061706f72746520,
'11:03:00'),
(18, '2010-04-09', 0x6275656e20, '15:05:00'),
(19, '2010-04-09', 0x707275656261206d696c6e6f20736520717565,
'15:17:00'),
(20, '2010-04-09', 0x686f6c61, '15:24:00'),
(21, '2010-04-09',
0x7373737373737373737373737373737373737373737373737373, '15:49:00'),
(22, '2010-04-09', 0x65786c656e7465206170756e7465, '15:55:00'),
(23, '2010-04-09', 0x616473666173646661736466, '15:57:00'),
(24, '2010-04-09', 0x65786c65656e74652061706f7274652067726163696173,
'15:59:00'),
(25, '2010-04-09',
0x6275656e6f20636f6d6f2071756520796120626173746120646520656c6f67696173
, '16:35:00'),
(26, '2010-04-09', 0x736970, '16:37:00'),
(27, '2010-04-09',
0x6573746520657320756e61206d616e65726561206465206861636572206c61732063
6f736173206d617320666163696c6573, '16:40:00'),
(28, '2010-04-09',
0x5920646520717565207469706f20657320656c20636f6e63696572746f2061637573
74696f3f20636f6d6f20656c206465206c6973626f6120, '17:59:00'),
(29, '2010-04-09', '', '18:01:00'),
(30, '2010-04-09',
0x61736920657320636f6d6f207369656d7072652067616e6120656c20737570657269
6f72, '18:01:00'),
(31, '2010-04-15',
0x4372656f20717565206c6f7320656c656d656e746f73206465206c656e6775616a65
206a73702070726163746963616d656e746520736f6e206c6f73206d69736d6f207175
65206c6f73206465206a61766120657374727563747572617320646520636f6e74726f
6c2065746320616c676f20706f7220656c20657374696c6f, '12:38:00'),
(32, '2010-04-15',
0x416c677569656e2070756564652064656369726d6520636f6d6f2063726561722075
6e20736572766c6574207920636f6d6f2066756e63696f6e61, '12:40:00'),
(33, '2010-04-15', 0x61736b64666ac383c2b16173666a64c383c2b161736b6664,
'12:45:00'),
(34, '2010-04-15', 0x3c68313e686f6c613c2f68313e, '12:49:00'),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #E

(35, '2010-04-15',
0x616c677569656e20707565646520706f6e6572206c61207461626c61747572612064
652077696e64206f66206368616e6765, '13:33:00'),
(36, '2010-04-15', 0x706173656e206c6120726f6c61, '13:57:00'),
(37, '2010-04-15',
0x617175692065737461206c6120726f6c6120687474703a2f2f7777772e7a61702d63
69667261732e636f6d2f63696672612f343837342f, '13:57:00'),
(38, '2010-04-15',
0x6666666666666666666666666666660d0a666666666666666666666666660d0a6666
66666666666666666666666666660d0a66666666666666666666666666666666660d0a
666666666666666666666666666666666666660d0a6666666666666666666666666666
666666666666660d0a6666666666666666666666666666666666666666660d0a666666
6666666666666666666666666666666666666666, '13:58:00'),
(39, '2010-04-15',
0x66666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
66, '13:58:00'),
(40, '2010-04-15',
0x4120656e67726173617220657361732065737472656d696461646573207665746572
616e6f73, '17:06:00'),
(41, '2010-04-19', 0x6e756c6c, '14:47:00');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `mensaje_tema`
--

CREATE TABLE IF NOT EXISTS `mensaje_tema` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_tema` int(11) NOT NULL,
`id_mensaje` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_tema` (`id_tema`),
KEY `id_mensaje` (`id_mensaje`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=34 ;

--
-- Volcar la base de datos para la tabla `mensaje_tema`
--

INSERT INTO `mensaje_tema` (`id`, `id_tema`, `id_mensaje`) VALUES
(1, 1, 1),
(2, 2, 2),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #F

(3, 3, 3),
(4, 4, 4),
(6, 3, 14),
(7, 3, 15),
(8, 3, 16),
(9, 3, 17),
(10, 3, 18),
(11, 3, 19),
(12, 4, 20),
(13, 3, 21),
(14, 4, 22),
(15, 4, 23),
(16, 4, 24),
(17, 3, 25),
(18, 4, 26),
(19, 3, 27),
(20, 1, 28),
(21, 5, 29),
(22, 5, 30),
(23, 7, 31),
(24, 6, 32),
(25, 7, 33),
(26, 1, 34),
(27, 11, 35),
(28, 11, 36),
(29, 11, 37),
(30, 11, 38),
(31, 11, 39),
(32, 12, 40),
(33, 3, 41);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `password`
--




CREATE TABLE IF NOT EXISTS `password` (
`id_password` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id_password`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `password`
--

INSERT INTO `password` (`id_password`, `password`) VALUES
(1, 'superalex'),
(2, 'punipero');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tema`
--



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #G

CREATE TABLE IF NOT EXISTS `tema` (
`id_tema` int(11) NOT NULL AUTO_INCREMENT,
`tema` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`fecha` date DEFAULT NULL,
PRIMARY KEY (`id_tema`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=13 ;

--
-- Volcar la base de datos para la tabla `tema`
--

INSERT INTO `tema` (`id_tema`, `tema`, `fecha`) VALUES
(1, 'Ultimo concierto de ', '2010-03-23'),
(2, 'ronaldo doping', '2010-03-23'),
(3, 'Tips del programa de', '2010-03-23'),
(4, 'Como pasar parametro', '2010-03-22'),
(5, 'Ganan las chivas ', '2010-03-22'),
(6, 'como crear un servlet', '2010-04-15'),
(7, 'Elementos de jsp', '2010-04-15'),
(8, 'hhhh', '2010-04-15'),
(9, 'como html y java m= jsp', '2010-04-15'),
(10, 'ejercicios jsp', '2010-04-15'),
(11, 'tablatura de wind of chage de scorpions', '2010-04-15'),
(12, 'Maana cbtc veteranos ', '2010-04-15');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tema_cat`
--

CREATE TABLE IF NOT EXISTS `tema_cat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_cat` int(11) NOT NULL,
`id_tema` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_cat` (`id_cat`),
KEY `id_mensaje` (`id_tema`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=13 ;

--
-- Volcar la base de datos para la tabla `tema_cat`
--

INSERT INTO `tema_cat` (`id`, `id_cat`, `id_tema`) VALUES
(1, 2, 1),
(2, 1, 2),
(3, 4, 3),
(4, 4, 4),
(5, 1, 5),
(6, 4, 6),
(7, 4, 7),
(8, 4, 8),
(9, 4, 9),
(10, 4, 10),
(11, 2, 11),
(12, 1, 12);

-- --------------------------------------------------------


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #H


--
-- Estructura de tabla para la tabla `usuario`
--

CREATE TABLE IF NOT EXISTS `usuario` (
`id_usuario` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`dir` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL,
`apodo` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`correo` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`fecha` date DEFAULT NULL,
`avatar` blob ,
PRIMARY KEY (`id_usuario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `usuario`
--

INSERT INTO `usuario` (`id_usuario`, `nom`, `dir`, `apodo`, `correo`,
`fecha`, `avatar`) VALUES
(1, 'Alejandro Isreael', 'lkjlkj', 'alex', 'alex@hotmail.com', '2010-
03-09',NULL);
INSERT INTO `usuario` (`id_usuario`, `nom`, `dir`, `apodo`, `correo`,
`fecha`, `avatar`) VALUES
(2, 'francisco romero javier punipero riamirez gonzalez', 'alksdjf',
'panchito', 'panchitopunipero@hotmail.com', '2010-03-09',NULL);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usu_mensaje`
--




CREATE TABLE IF NOT EXISTS `usu_mensaje` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_usu` int(11) NOT NULL,
`id_mens` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_usu` (`id_usu`),
KEY `id_mens` (`id_mens`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=31 ;

--
-- Volcar la base de datos para la tabla `usu_mensaje`
--

INSERT INTO `usu_mensaje` (`id`, `id_usu`, `id_mens`) VALUES
(1, 1, 1),
(2, 2, 2),
(3, 1, 3),
(4, 1, 4),
(5, 1, 14),
(6, 1, 15),
(7, 1, 18),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? #I

(8, 1, 19),
(9, 1, 20),
(10, 1, 21),
(11, 1, 22),
(12, 1, 23),
(13, 1, 24),
(14, 1, 25),
(15, 1, 26),
(16, 1, 27),
(17, 1, 28),
(18, 1, 29),
(19, 1, 30),
(20, 1, 31),
(21, 1, 32),
(22, 1, 33),
(23, 1, 34),
(24, 1, 35),
(25, 1, 36),
(26, 1, 37),
(27, 1, 38),
(28, 1, 39),
(29, 1, 40),
(30, 1, 41);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usu_pass`
--

CREATE TABLE IF NOT EXISTS `usu_pass` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_usu` int(11) NOT NULL,
`id_pass` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_usu` (`id_usu`),
KEY `id_pass` (`id_pass`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `usu_pass`
--

INSERT INTO `usu_pass` (`id`, `id_usu`, `id_pass`) VALUES
(1, 1, 1),
(2, 2, 2);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usu_tema`
--

CREATE TABLE IF NOT EXISTS `usu_tema` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_usu` int(11) DEFAULT NULL,
`id_tema` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_usu` (`id_usu`),
KEY `id_tema` (`id_tema`)


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !"

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=8 ;

--
-- Volcar la base de datos para la tabla `usu_tema`
--

INSERT INTO `usu_tema` (`id`, `id_usu`, `id_tema`) VALUES
(1, 1, 6),
(2, 1, 7),
(3, 1, 8),
(4, 1, 9),
(5, 1, 10),
(6, 1, 11),
(7, 1, 12);

--
-- Filtros para las tablas descargadas (dump)
--

--
-- Filtros para la tabla `admin_cat`
--
ALTER TABLE `admin_cat`
ADD CONSTRAINT `admin_cat_ibfk_1` FOREIGN KEY (`id_admin`)
REFERENCES `admin` (`id_admin`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `admin_cat_ibfk_2` FOREIGN KEY (`id_cat`) REFERENCES
`categoria` (`id_cat`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `mensaje_tema`
--
ALTER TABLE `mensaje_tema`
ADD CONSTRAINT `mensaje_tema_ibfk_1` FOREIGN KEY (`id_tema`)
REFERENCES `tema` (`id_tema`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `mensaje_tema_ibfk_2` FOREIGN KEY (`id_mensaje`)
REFERENCES `mensajes` (`id_mensaje`) ON DELETE CASCADE ON UPDATE
CASCADE;

--
-- Filtros para la tabla `tema_cat`
--
ALTER TABLE `tema_cat`
ADD CONSTRAINT `tema_cat_ibfk_1` FOREIGN KEY (`id_cat`) REFERENCES
`categoria` (`id_cat`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `tema_cat_ibfk_2` FOREIGN KEY (`id_tema`) REFERENCES
`tema` (`id_tema`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Filtros para la tabla `usu_mensaje`
--
ALTER TABLE `usu_mensaje`
ADD CONSTRAINT `usu_mensaje_ibfk_1` FOREIGN KEY (`id_usu`)
REFERENCES `usuario` (`id_usuario`) ON DELETE CASCADE ON UPDATE
CASCADE,
ADD CONSTRAINT `usu_mensaje_ibfk_2` FOREIGN KEY (`id_mens`)
REFERENCES `mensajes` (`id_mensaje`) ON DELETE CASCADE ON UPDATE
CASCADE;

--
-- Filtros para la tabla `usu_pass`


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !#

--
ALTER TABLE `usu_pass`
ADD CONSTRAINT `usu_pass_ibfk_1` FOREIGN KEY (`id_usu`) REFERENCES
`usuario` (`id_usuario`),
ADD CONSTRAINT `usu_pass_ibfk_2` FOREIGN KEY (`id_pass`) REFERENCES
`password` (`id_password`);

--
-- Filtros para la tabla `usu_tema`
--
ALTER TABLE `usu_tema`
ADD CONSTRAINT `usu_tema_ibfk_1` FOREIGN KEY (`id_usu`) REFERENCES
`usuario` (`id_usuario`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `usu_tema_ibfk_2` FOREIGN KEY (`id_tema`) REFERENCES
`tema` (`id_tema`) ON DELETE CASCADE ON UPDATE CASCADE;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;



nC1A: Sl L8LS un LxL81C uL 8ASL uL uA1CS 1L uA8AS CuLn1A CuL LA 8u nC LS1A
nC8MALlZAuA, LS lMC81An1L ACLA8A8 CuL LS un MCuuLC uL A8LnulZA!L, CuL LL
L8Ml1L AL ALuMnC AuLn18A8SL AL MunuC uL LAS 8ASLS uL uA1CS u1lLlZAnuC LAS
SLn1LnClAS MAS uSuALLS.
















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !!

C8LAClnC uLL 8C?LC1C WL8:

Ahora que ya Lenemos nuesLra base de daLos creada segun lo vlsLo a lo largo del semesLre en
clase y en las prcLlcas, crearemos nuesLro proyecLo medlanLe los slgulenLes pasos:

1.- lnsLala el neLbeans 6.1., esLe lo pueden descargar de la slgulenLe url:
hLLp://neLbeans.org/downloads/6.1/lndex.hLml y selecclona la opcln all" que es la que
conLlene Lodos los elemenLos necesarlos para poder crear la apllcacln.

1.1.- AnLes de lnsLalar el neLbeans es necesarlo descargar el modulo [dk de la slgulenLe paglna:
hLLp://www.nakldo.com/74u3124A1AC8uCl17l26lA8L48833629l2l38232,
1.2.- lnsLala [dk.
1.3.- una vez lnsLalado [dk, lnsLala el neLbeans y recuerda selecclonar los dos Llpos de
servldores que esLe conLlene, que es el glassflsh v2 ur2 y el apache LomcaL 6.0.16.
2.- Creacln de un proyecLo web:
?a que lnsLalasLe el [dk y el neLbeans procederemos a e[ecuLarlo(recuerda que para e[ecuLarlo
lremos a lnlclo/Lodos los programas/neLbeans/neLbeans 6.1.
2.1.- Crea una nueva apllcacln llle/new ro[ecL
2.2.- 1e aparecer la slgulenLe venLana, en la cual selecclonaras la caLegorla web y como Llpo
de proyecLo web appllcaLlon. 1al como se muesLra conLlnuaclon.


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !C


2.3.- ua cllc en nexL.
2.4.- ue la slgulenLe venLa que Le aparecer, en el aparLado ro[ecL name, lnLroduclrs el
nombre de Lu apllcacln, en esLe caso, lnLroduce blog_Lunombre, como e[emplo podemos ver
en la venLana lnferlor que dlce blog_alex donde susLlLulmos Lunombre pro alex. Pazlo Lu con Lu
proplo nombre.



2.3 Ahora da cllc en nexL.
2.6.- en la slgulenLe venLana selecclona en el aparLado Server la opcln apache LomcaL 6.0.16 y
da cllc en nexL. LsLe ser el servldor donde se desplegaran los archlvos de nuesLra pglna web,
o como comun menLe se dlce: es donde se hace el deploy para que la apllcacln quede llsLa
para usarse.



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !D


2.3.- ua cllc en nexL. 1e aparecer la slgulenLe venLa donde seremos capaces de selecclonar un
Llpo de framework que es una meLodologla para la creacln de apllcaclones web.
or ahora como nuesLro ob[eLlvo es crear una apllcacln web slmple de[aremos de lado los
frameworks y daremos cllc en flnlsh.

2.6.- Cuando Lu apllcacln quede creada veras la paleLa de pro[ecLs como se ve en la slgulenLe
lmagen. Sl no Llenes desplegada la carpeLa web pages hazlo, pues ahl es donde Lenemos
nuesLro archlvo lndex.[sp. uenLro de esLe archlvo empezaremos nuesLra pequena apllcacln.




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !E

Cbserva la esLrucLura del cdlgo, vers que es archlvo slmple de hLml.

2.7.- vamos a crear la esLrucLura de nuesLra pglna web medlanLe frames. ara esLo es
necesarlo que borres del cdlgo anLerlor el segmenLo body esLo es desde <body>, su
conLenldo y </body>.
una vez que lo borres coloca el slgulenLe cdlgo:
<frameseL rows="30,*" cols="*">
<frame name="frm_Lop" src="frm_Lop.[sp" scrolllng="no" noreslze
bordercolor="#030000"lndex.[sp></frame>
<frame name="frm_cenLral" src="conLra.[sp" scrolllng="auLo">
</frameseL>
<noframes></noframes>

8len, en el cdlgo <frameseL rows="30,*" cols="*"> hemos deflnldo el rea donde se crearn
nuesLros dos frames los cuales sern Llpo horlzonLal o de Llpo rengln, noLen la palabra rows
en la senLencla frame, esLe es la que hace que Lome el efecLo de rengln. ue forma graflca la
llnea ro[a dellmlLa la accln del frameseL lo que esL denLro de esLe los expllcamos a
conLlnuacln.






9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !F

1) <frame name="frm_Lop" src="frm_Lop.[sp" scrolllng="no" noreslze bordercolor="#030000"
lndex.[sp></frame>. LsLe es el prlmer frame que vemos se llama frm_Lop_src el cual mandar
llamar la pglna frm_Lop.[sp. Scrolllng="no" hace que la pglna no Lenga la barra laLeral de
desplazamlenLo que por lo regular Llenen Lodas las venLanas. noreslze hace que el frame no
camble nunca de Lamano.

2) <frame name="frm_cenLral" src="conLra.[sp" scrolllng="auLo">. LsLe es el Segundo frame el
cual se llama frm_cenLral y manda llamar la pglna conLra.[sp. Scrolllng = auLo hace que la
pglna pueda Lener barra laLeral sl el conLenldo de esLa excede el rea vlslble de la paglna.



2.8 Ahora al haber creado los frames pasados Le pudlsLe haber dado cuenLa que mandamos
llamar a dos paglnas.[sp: frm_Lop.[sp y la paglna conLra.[sp, por Lal moLlvo Lendremos que
crearlas para hacer que esLos frames Lenga conLenldo.

2.8.1.- ua cllc derecho en Webages de Lu proyecLo en el menu emergenLe selecclona new y
despues en [sp.



2.8.2.- 1e aparecer la slgulenLe venLana donde Lendrs que poner el nombre de Lu paglna [sp
el cual ser frm_Lop. 1al como se muesLra a conLlnuacln.
lrm_Lop_src manda
llamar a lrm_Lop.[sp
lrm_cenLral
manda llamar la
pglna conLra.[sp


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !G



2.8.3.- ahora da cllc en flnlsh.

2.9 .- Ll archlvo que se genero lo modlflcaras Lal y como se muesLra a conLlnuacln.

<[page conLenL1ype="LexL/hLml" pageLncodlng="u1l-8">
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln"
"hLLp://www.w3.org/18/hLml4/loose.dLd">

<hLml>
<head>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=u1l-8">
<llnk rel="sLylesheeL" href="css/css/maln.css" Lype="LexL/css" />
<LlLle>Lop</LlLle>
</head>
<body>
<dlv ld="wrap">
<dlv ld="logo">
<h1><a href="#">PACL8 1u 8ClC 8LCC LS Mu? lAClL</a></h1>
<p>C8: ALLx</p>
</dlv>

<dlv ld="explore">
<a href="#" ld="explore-llnk">Lxplore</a>
</dlv>

<dlv ld="menu">
<dlv ld="menu-lefL"></dlv>
<ul>
<ll><a class="currenL" href="lndex1.[sp"
LargeL="frm_cenLral"><span>lnlClC</span></a></ll>
<ll><a href="#"><span>8LClS18A1L</span></a></ll>
<ll><a href="#"><span>CA1LCC8lA</span></a></ll>
<ll><a href="#"><span>AbouL us</span></a></ll>
<ll><a href="#"><span>ConLacL us</span></a></ll>
</ul>
<dlv ld="menu-rlghL"></dlv>
</dlv>
</body>
</hLml>



noLa: en el cdlgo anLerlor esLamos exporLando un css (sLyle sheeL cascade) que nos permlLlr
darle formaLo a nuesLra pglna. LsLe css esLa marcado con amarlllo y leLras ro[as.


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !H

LsLa llnea de cdlgo dlce que haremos una llga (llnk rel="sLylesheeL") o mandaremos llamar a
una ho[a de esLllo. Ll cdlgo href="css/css/maln.css", hace referencla a un archlvo llamado
maln.css que esL en la ruLa css/css de nuesLro dlrecLorlo ralz, el cual lo Lendremos que
generar nosoLros de la slgulenLe manera.

2.10.- ve a la carpeLa donde se guardan los proyecLos de neLbeans, por lo regular esL en mls
documenLos. La ruLa quedarla de la slgulenLe manera C:\uocumenLs and SeLLlngs\Lu usuarlo\
Mls documenLos\ neL8eansro[ecLs\ blog_Lunombre\web o sl Llenes un slsLema operaLlvo
como Wlndows vlsLa o 7 solo ve a Lus documenLos y slgue la slgulenLe ruLa: neL8eansro[ecLs\
blog_Lunombre\web.

2.10.1.- Ahora crea la carpeLa css, accede a ella y crea oLra carpeLa llamada css. una vez ms
accede a esLa.

2.11.-ues pues de que creasLe Lus carpeLas ve al neLbeans y en el rea de pro[ecLs ve que
aparece ya la capeLa css.
uespllega la carpeLa css dando cllc en el + para poder ver la oLra carpeLa que se creo con el
mlsmo nombre.

2.10. Ln esLa ulLlma carpeLa css da cllc derecho y selecclona new y despues da cllc en oLher
como se muesLra en la slgulenLe lmagen. noLa como los pasos esLn marcados con ro[o.




2.11.- Selecclona la caLegorla web y en el aparLado flle Lypes selecclona Cascadlng SLyle SheeL
y da cllc en nexL.


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? !I



2.12.- Ln el aparLado css flle name coloca maln como se muesLra en la lmagen slgulenLe. ua cllc
en flnlsh cuando hayas Lermlnado.


2.13.- una vez cargado el archlvo css veras en el area de cdlgo lo slgulenLe.











9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? C"

2.14.- 8orra Lodo el cdlgo y susLlLuyelo por el slgulenLe:

*[margln:0,paddlng:0,:focus,:acLlve [ouLllne:0ul,ol[llsL-sLyle:noneh1,h2,h3,h4,h3,h6,pre,code
[fonL-slze:1em,a lmg[border:0
body [ fonL: .7em "1rebucheL MS", 1ahoma, Arlal, Sans-Serlf, background: #eee
url(../lmages/bg.glf) repeaL-x, color: #777,
a [ LexL-decoraLlon: none, color: #6796CL,
a:hover [ color: #43134A,
p [ margln: 0 0 13px, llne-helghL: 1.64em,
#wrap [ margln: 20px auLo 0, wldLh: 979px,

.clear [ clear: boLh,

#logo [ floaL: lefL, margln: 33px 0 0 20px, helghL: 89px,
#logo a:hover [ border-boLLom: 1px solld #222,
#logo p [ paddlng: 2px 0 0 4px, fonL-slze: .9em, color: #333,
#logo h1 [ fonL-slze: 2.6em, margln: 0, LexL-shadow: 1px 1px 1px #000,
#logo h1 a [ color: #fff,

#explore [ floaL: rlghL, margln: 130px 3px 0 0,
#explore-llnk [ floaL: lefL, helghL: 23px, paddlng: 9px 0 0 20px, wldLh:
106px, color: #808080, background: url(../lmages/explore.glf) no-repeaL,
#explore-llnk:hover [ color: #fff,

#menu [ clear: lefL, floaL: lefL, helghL: 43px, margln: 0 0 0 3px,
background: url(../lmages/menu.glf) repeaL-x,
#menu-lefL [ background: url(../lmages/menu-corners.glf) no-repeaL
lefL Lop, floaL: lefL, wldLh: 9px, helghL: 43px,
#menu-rlghL [ background: url(../lmages/menu-corners.glf) no-repeaL
lefL boLLom, floaL: rlghL, wldLh: 9px, helghL: 43px,

#menu ul [ floaL: lefL, paddlng: 3px 0,
#menu ll [ dlsplay: lnllne, LexL-Lransform: uppercase,
#menu ll a [ floaL: lefL, margln: 0 3px 0 0, paddlng: 12px 0 13px 20px,
color: #777, poslLlon: relaLlve, z-lndex: 2,
#menu ll a span [ paddlng: 12px 20px 13px 0,
#menu ll a:hover, #menu ll a:focus [ color: #1293L4,
#menu ll a.currenL [ background: url(../lmages/LablefL.glf) no-repeaL,
color: #000, fonL-welghL: bold,
#menu ll a.currenL span [ background:
url(../lmages/LabrlghL.glf) no-repeaL rlghL Lop,

#conLenL-Lop [ clear: boLh, helghL: 26px, background:
url(../lmages/conLenL-Lop.glf) no-repeaL, poslLlon: relaLlve, margln: 0 !lmporLanL, margln: -
14px 0 0,
#conLenL-mlddle [ paddlng: 0 23px 23px, background:
url(../lmages/conLenL-mlddle.glf) repeaL-y,
#conLenL-boLLom [ clear: boLh, paddlng: 6px 0 7px, background:
url(../lmages/conLenL-boLLom.glf) no-repeaL lefL boLLom,
#plLch [ LexL-shadow: 1px 1px 1px #3l6AA2, background:
url(../lmages/plLch.[pg) no-repeaL, helghL: 139px, paddlng: 30px 40px 0 30px, poslLlon:
relaLlve, margln: 0 -7px 30px, fonL-slze: 1.3em, fonL-sLyle: lLallc, color: #fff,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? C#

#plLch h1 [ floaL: lefL, llne-helghL: 1.3em, fonL-sLyle: normal, fonL-slze:
1.7em, wldLh: 260px, paddlng: 0 40px 0 0, helghL: 130px, fonL-welghL: normal, LexL-Lransform:
uppercase,
#plLch h1 span [ fonL-slze: 1.2em, LexL-Lransform: lowercase,
fonL-slze: .6em, fonL-sLyle: lLallc, color: #l4LuC1,

h3 [ fonL-slze: 1.3em, fonL: bold 1.3em Arlal, color: #222, margln: 0 0 10px,

.column [ floaL: lefL, wldLh: 200px, margln: 0 80px 0 0, llne-helghL: 2.2em,
.column.lasL [ margln-rlghL: 0,



.column lmg [ paddlng: 10px, border: 1px solld #ddd, margln: 0 0 3px,
.more a [ background: url(../lmages/bulleL.glf) no-repeaL 0 7px, paddlng:
0 0 0 8px, color: #672A6u, fonL-welghL: bold, fonL-slze: .9em,

#fooLer [ paddlng: 20px, color: #999,
#llnks [ floaL: rlghL,
#llnks a [ margln: 0 0 0 13px,



nC1A: LS1L CSS LS u1lLlZAuC A8A uA8 lC8MA A nuLS18C MLnu CuL LS1A8A
uLSLLCAuC Ln LA AClnA frm_[Lop.[sp. Como nuesLro ob[eLlvo es solo el [sp y el mysql no
expllcaremos el funclonamlenLo del cdlgo css.


2.13.- Ln el edmodo esLa un archlvo Llpo Zlp, llamado lmgenes.zlp descrgalo y descomprlme
la carpeLa que conLlene el Zlp en la carpeLa \web\css, de Lu proyecLo.

2.16.- Ahora vamos a crear la pglna conLral.[sp de la slgulenLe manera:

2.16.1 Crea una archlvo en Lu proyecLo, dando cllc derecho a Web ages, selecclona el
aparLado new y del menu emergenLe selecclona [sp, como se muesLra en la slgulenLe venLana.



2.16.2 1e aparecer la slgulenLe venLana, donde colocaremos como nombre de nuesLra:
conLra. ua cllc en flnlsh para que esLa se cree. CulaLe en la slgulenLe lmagen:


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? C!




2.16.3 SusLlLuye Lu cdlgo por el slgulenLe:

<[ page conLenL1ype="LexL/hLml, charseL=lso-8839-1" language="[ava" lmporL="[ava.sql.*"
errorage="" >
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln"
"hLLp://www.w3.org/18/hLml4/loose.dLd">
<hLml>
<head>
<LlLle>uocumenLo sln LlacuLe,Lulo</LlLle>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=lso-8839-1">
<llnk rel="sLylesheeL" href="css/conLra.css" Lype="LexL/css"/>
<sLyle Lype="LexL/css">
<!--
body [
background-color: #000000,

-->
</sLyle>
< SLrlng caL = requesL.geLarameLer("caLegorla"),
SLrlng sLaL= requesL.geLarameLer("sLaL"),



SLrlng usuarlo,
SLrlng conLra,

>

<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
</head>

<body>




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CC

<form name="conLra" meLhod="posL" acLlon="sesslon.[sp">
<dlv class="conLenedor">
<dlv ld="cabecera" >
</dlv>
<dlv class="prlnclpal" >
<dlv class="lL"></dlv>
<dlv class="lbox">
<h2>lnLroduce Lu usuarlo y <span class="yellow">assword</span></h2>
<dlv class="Lhumb">

<lmg src="lmg/llaves_mall.[pg" alL="llaves" wldLh="133" helghL="146"/></dlv>

<p>ara poder ver el conLenldo de cualqulera de las caLegorlas de esLe blog
debes reglsLrarLe, sl ya esLas reglsLrado lnLroduce Lu usuarlo y
conLrasena.
<p>usuarlonbsp,nbsp,nbsp,nbsp, <lnpuL Lype="LexL" name="usu_LexL"
ld="usu"></p>
<p>asswordnbsp,<lnpuL Lype="password" name="pass_LexL" ld="pass"></p>
</p>nbsp,nbsp,nbsp,nbsp, nbsp,nbsp,nbsp,nbsp,nbsp,nbsp,
nbsp,nbsp,nbsp,nbsp,nbsp,nbsp,nbsp, nbsp,nbsp,nbsp,nbsp,
nbsp,nbsp,nbsp,nbsp,
<lnpuL Lype="submlL" name="SubmlL" value="Lnvlar" class="buLLon">
<dlv allgn="cenLer"></dlv>
<p>1e sugerlmos que sl nunca haz enLrado a esLa paglna Le <a
href="#">reglsLres</a></p>
<p>nbsp,</p>
<p>nbsp,</p>
</dlv>

</dlv>
</dlv>
<lnpuL name="caLe" Lype="hldden" ld="caLe" value="<=caL>">



</form>


</body>
</hLml>










9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CD

2.16.4 Lxpllcacln del cdlgo:

1)23 4 2563) 73) 6'89) ':;7*<3<*5,') ')23(9, 5(6',363) ;5( <575( 65,6'=

Ll cdlgo color ___ esL lmporLando los funclonamlenLos del archlvo conLra.css que permlLlr
darle formaLo o forma a nuesLra pglna conLra.[sp. uonde:

<llnk rel="sLylesheeL"
Ll aLrlbuLo 8LL se usa para deflnlr la relacln enLre el archlvo enlazado y el documenLo P1ML.
8LL=SLyleSheeL especlflca un esLllo perslsLenLe o preferldo mlenLras que 8LL="AlLernaLe
SLyleSheeL" deflne un esLllo alLerno. un esLllo perslsLenLe es aquel que slempre se apllca sl
esLn acLlvas las ho[as de esLllo.
href="css/conLra.css"
LsLe es la ruLa donde se encuenLra el archlve css. Ln esLe caso Lenemos que conLra.css esL
denLro de la carpeLa css que a su vez esLa en la carpeLa web de Lu proyecLo.
Lype="LexL/css"/>
Con esLa llnea de cdlgo lndlcamos que el Llpo de archlvo lmporLado es CSS.
< SLrlng caL = requesL.geLarameLer("caLegorla"),
SLrlng sLaL= requesL.geLarameLer("sLaL"),

LsLa funcln nos permlLe obLener el valor de un componenLe, donde el componenLe debe
Lener un ld que nos permlLlr hacer referencla a el y poder obLener su valor.

<form name="conLra" meLhod="posL" acLlon="sesslon.[sp">

Ln la declaraclon del form podemos darnos cuanLa de Lres aLrlbuLos:

name: permlLe darle nombre a nuesLro formularlo(form), en esLe caso se llamara conLra.

MeLhod: esLe nos permlLe uLlllzar dos meLodos el posL y el geL. Ln nuesLro caso el meLodo posL
los que hace es encapsular el conLenldo del formularlo, esLo es, el ld y el valor de cualquler
componenLe que hayamos lncorporado a nuesLra paglna lo agrupa para poder ser envlado a
oLra paglna o archlvo de programaclon.

AcLlon: LsLe aLrlbuLo nos dlce a que archlvo, paglna o clase mandaremos lo que el posL
encapsulo. una vez que se mande llamar la paglna nueva denLro de esLa podremos requerlr los
daLos que el meLodo posL envlo con el requesL.geLarameLer(nombre del componenLe).


<lnpuL Lype="LexL" name="usu_LexL" ld="usu">
<lnpuL Lype="password" name="pass_LexL" ld="pass">






9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CE

Ln esLas llneas de cdlgo slmples podemos ver que el lmpuL Llene varlos aLrlbuLos:

1ype: es el Llpo de componenLe que se va a presenLar e[emplo (LexL,radlo,password).
name: LsLe es el nombre del componenLe
ld: Con el ld podemos ldenLlflcar esLe componenLe en oLra pglna con un
requesL.geLarameLer(). Ln general es el aLrlbuLo que lo ldenLlflca.

<lnpuL Lype="submlL" name="SubmlL" value="Lnvlar" class="buLLon">

ComponenL Llpo lmpuL:

1ype: Ll aLrlbuLo es de Llpo submlL lo que nos permlLe acLlvar el meLhod posL de nuesLro form
y mandar Lodo el conLenldo de nuesLro formularlo.
name: LsLe aLrlbuLo es para darle nombre al componenLe.
value: el aLrlbuLo value va a ser el nombre que va a parecer en el boLn en nuesLra paglna
Class: la clase es Llpo boLn para que Lenga funclonalldad de boLn


nC1A: Sl Ledas cuenLa con la expllcacln anLerlor sabemos que el conLenldo de esLe formularlo
va a ser envlado a la pglna sessln.[s. Ln la cual crearemos las varlables de sesln para que
despues de 20, 10 , 13 o 30 mlnuLos de lnacLlvldad esLas se borren y el usuarlo no pueda ver el
conLenldo de la pglna por lo cual el slgulenLe paso es crear esLa pglna.























9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CF

2.16.3 Creacln de la pglna sesslon.[sp

1.- Ln el neLbeans ve a la paleLa pro[ecLs y en Lu proyecLo da cllc derecho en web pages, del
menu conLexLual que salga selecclona la opcln new y despues da cllc en [sp. CulaLe en la
slgulenLe lmagen.



2.- ue la venLana emergenLe en el aparLado !S llle name, colocaras la palabra sesslon y vas a
dar cllc en flnallzar. 1al y como se muesLra en la slgulenLe lmagen.




3.- una vez que se haya cargado la pglna Le aparecer en el rea de codlflcacln y en esLe
momenLo es cuando Lendrs que modlflcarla y de[arla Lal como se muesLra a conLlnuacln.

<--
uocumenL : sesslon
CreaLed on : 23/03/2010, 12:13:39 M
AuLhor : alexgra[o
-->

<[page conLenL1ype="LexL/hLml" pageLncodlng="u1l-8">
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln"
"hLLp://www.w3.org/18/hLml4/loose.dLd">

<hLml>
<head>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=u1l-8">
<LlLle>!S age</LlLle>
<


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CG

lnL band=0,
SLrlng usuarlo = requesL.geLarameLer("usu_LexL"),
SLrlng pass= requesL.geLarameLer("pass_LexL"),
SLrlng caL = requesL.geLarameLer("caLegorla"),
SLrlng consulLa ="SLLLC1 counL(*) l8CM usuarlo usuarlo lnnL8 !Cln usu_pass
usu_pass Cn usuarlo.ld_usuarlo = usu_pass.ld_usu lnnL8 !Cln password password Cn
usu_pass.ld_pass = password.ld_password WPL8L usuarlo.correo = "+usuarlo+" Anu
password.password = "+pass+" Anu usuarlo.ld_usuarlo = usu_pass.ld_usu Anu
password.ld_password = ld_pass ",
SLrlng consulLa2 ="SLLLC1 usuarlo.correo AS usuarlo_correo, password.password
AS password_password l8CM usuarlo usuarlo lnnL8 !Cln usu_pass usu_pass Cn
usuarlo.ld_usuarlo = usu_pass.ld_usu lnnL8 !Cln password password Cn
usu_pass.ld_pass = password.ld_password WPL8L usuarlo.correo = "+usuarlo+" Anu
password.password = "+pass+" Anu usuarlo.ld_usuarlo = usu_pass.ld_usu Anu
password.ld_password = ld_pass ",
>
<[sp:use8ean ld="conex" class="beans.conexlon" scope="page"/>
</head>
<body>
<[sp:seLroperLy name="conex" properLy="consulLa" value= "<=consulLa>"/>
<
whlle (conex.geL8esulLado().nexL()) [
SLrlng exlsLe = conex.geL8esulLado().geLSLrlng("counL(*)"),
lf (exlsLe.compare1o("0") == 0) [
band++,


lf (band == 0) [
SLrlng sLaLus = "1",
sesslon.seLALLrlbuLe("usuarlo", usuarlo),
sesslon.seLALLrlbuLe("caL", caL),
sesslon.seLALLrlbuLe("sLaLus", sLaLus),
response.send8edlrecL("lndex1.[sp"),
else [
response.send8edlrecL("error"),

>
</body>
</hLml>











9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CH

2.16.6 Lxpllcacln del cdlgo:

1 SLrlng usuarlo = requesL.geLarameLer("usu_LexL"),
SLrlng pass= requesL.geLarameLer("pass_LexL"),
SLrlng caL = requesL.geLarameLer("caLegorla"),

Ln esLas Lres llneas de cdlgo, esLamos pldlendo los valores de los componenLes usu_LexL que conLlene el usuarlo
que qulere accede al slsLema, pass_LexL que conLlene el password del usuarlo y caLegorla que conLlene el Llpo de
caLegorla a la cual accede el usuarlo. LsLe ulLlmo no es uLlllzado.

2 SLrlng consulLa ="SLLLC1 counL(*) l8CM usuarlo usuarlo lnnL8 !Cln usu_pass usu_pass Cn
usuarlo.ld_usuarlo = usu_pass.ld_usu lnnL8 !Cln password password Cn usu_pass.ld_pass =
password.ld_password WPL8L usuarlo.correo = "+usuarlo+" Anu password.password = "+pass+" Anu
usuarlo.ld_usuarlo = usu_pass.ld_usu Anu password.ld_password = ld_pass ",
L
LsLa es una consulLa que ser guardada en la varlable o consulLa la cual ser uLlllzada posLerlormenLe. LsLa
consulLa reLorna la suma de los reglsLros que cumplan con los parmeLros de la clausula where, esLo es:

Sl exlsLe un usuarlo con el correo y el password correcLos esLa consulLa nos deber reLornar un uno y de esLa
manera podremos saber que el usuarlo exlsLe y que Llene la conLrasena correcLa y que por lo LanLo puede acceder a
nuesLra apllcacln web.

3 <[sp:use8ean ld="conex" class="beans.conexlon" scope="page"/> (Con esLe cdlgo hacemos la conexln con el
8ean)
<[sp:seLroperLy name="conex" properLy="consulLa" value= "<=consulLa>"/> (una vez creada la conexln con el
8ean le mandamos la consulLa.

uenLro de !S exlsLen dlferenLes acclones una de ellas es la que hace uso de los 8eans y se
ldenLlflca con el nombre [sp:use8ean y se descrlbe como a conLlnuacln se hace:

<[sp:use8ean ld=nombre class=paqueLe.clase />

LsLo permlLe obLener una referencla a un 8ean (componenLe !ava), las lnsLanclas de los componenLes pueden ser
comparLldas. Las clases de los 8eans deben esLar en el CLASSA1P del servldor.

lnlclallzacln del bean:
<[sp:use8ean ... >
Cuerpo
</[sp:use8ean>
Cuerpo: cdlgo !S e[ecuLable la prlmera vez que se lnsLancla el 8ean.
|d: nombre de la varlable que conLendr la referencla al 8ean.
c|ass: lndlca la clase del 8ean
scope (opclonal): lndlca el conLexLo en el que el bean esLar dlsponlble:
page (por defaulL): dlsponlble slo para la pglna.
requesL: dlsponlble slo para la peLlcln.
sesslon: dlsponlble duranLe la sesln.
appllcaLlon: para las pglnas que comparLan ServleLConLexL
va|ue: esLe es un valor que mandamos en caso de que nuesLro [avabean Lenga que reclblr parmeLros para
funclonar. Como en nuesLro caso, uLlllzaremos el [avabean para reallzar la consulLa que se expllco anLerlormenLe


4 whlle (conex.geL8esulLado().nexL()) [
SLrlng exlsLe = conex.geL8esulLado().geLSLrlng("counL(*)"),
lf (exlsLe.compare1o("0") == 0) [
band++,

Ln esLa llnea de cdlgo hacemos referencla a <5,': >?' ') '7 ,58@(' 6' ,?')2(5 A3&3@'3, &' 37 ;?,25 - 6' ')23
':;7*<3<*+,.



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? CI

Cuando el 8ean esL en accln esLe e[ecuLa la consulLa que le mandamos y por lo LanLo conLlene los resulLados que
podremos obLener medlanLe la funcln B'2C')?72365DE.,':2DE.
Ln la slgulenLe llnea de cdlgo declaremos la varlable exlsLe como Llpo SLrlng, la cual conLendr el valor que haya
obLenldo nuesLro vean en el campo couLn.

Connex.geL8esulLado es una funcln Llpo resulseL que nos reLorna medlanLe su meLodos lnLernos una especle de
maLrlz con la lnformacln que se obLlene de la consulLa.

Connex.geL8esulLado.geLSLrlng(campo) es una funcln que nos permlLe obLener el un valor del resulseL medlanLe la
funcln geLSLrlng. Lo que lleva enLre parenLesls el geLSLrlng es el campo que se plde en la consulLa o los valores que
deseamos que nos reLorne en caso de que esLa sea exlLosa.

Ahora en las slgulenLes llneas de cdlgo pondremos una bandera que nos dlga sl realmenLe exlsLl un usuarlo en
caso de que no exlsLa la bandera aumenLara su valor con el operador unarlo ++.


3 lf (band == 0) [
SLrlng sLaLus = "1",
sesslon.seLALLrlbuLe("usuarlo", usuarlo),
sesslon.seLALLrlbuLe("caL", caL),
sesslon.seLALLrlbuLe("sLaLus", sLaLus),
response.send8edlrecL("lndex1.[sp"),
else [
response.send8edlrecL("error"),


Sl exlsLl realmenLe un valor band quedara en cero por lo cual pregunLamos sl band es lgual a cero, crearemos las
varlables de sesln necesarlas para nuesLro proyecLo.

Sl Lodo sall correcLamenLe medlanLe la llnea response.send8edlrecL nos permlLlr re dlrecclonar la apllcacln a la
pglna lndex1.[sp. ero sl Lodo sall mal nos re dlrecclonar a la paglna error que en esLe caso la Lendrs que hacer
por Ll mlsmo slgulendo los paso que hemos hecho anLerlormenLe. Ll dlseno es llbre y al ser un error solo es
demosLraLlvo.

ara generar una sesln se uLlllza la funcln sesslon.seLALLrlbuLe(nombre de sesln, varlable de sesln). La duracln
de nuesLra varlable de sesln se manlpulara desde nuesLro web.xml de nuesLro proyecLo, Lal como se muesLra en la
slgulenLe lmagen.












9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? D"

2.16.7 Creacln de un !ava8ean

Ln la expllcacln pasada esLbamos hablando de una !ava8ean, el cual es Llempo de crearlo y expllcarlo.

1.- rlmero ve al neLbeans y da cllc en el nombre de Lu proyecLo en la pesLana pro[ecLs.
2.- uespues locallza Source ackages y despllegalo, noLa que Lendrs un paqueLe en grls que dlr defaulL package.
3.- Ahora da cllc derecho en Source ackages y del menu emergenLe selecclona new.
4.- Ahora da cllc en !ava ackage.
noLa: gulaLe con la slgulenLe lmagen.



3.- 1e aparecer una venLana como la slgulenLe:


6.- Ln el campo package name pondrs el nombre de beans.
7.- ua cllc en flnlsh y veras como se ha creado un nuevo paqueLe llamado beans.
8.- uespues de esLo da cllc derecho en el nuevo paqueLe llamado beans.
9.- uel menu emergenLe selecclona la opcln new.
10.- ? selecclona la opcln [ava class.
noLa: gulaLe con la lmagen slgulenLe:


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? D#



11.- 1e aparecer una venLana como la slgulenLe, donde colocara en el aparLado Calss name el nombre conexln,
Lal como se muesLra en la slgulenLe flgura:


12.- ua cllc en flnlsh para que se crea la clase la cual, una vez Lermlnada aparecer en Lu rea de codlflcacln de
neLbeans.
13.- A esLe archlvo lo modlflcaremos de la slgulenLe manera. Modlflca Lu archlvo Lal cual esLa el slgulenLe cdlgo
para que no Lengas problemas:







/*
* 1o change Lhls LemplaLe, choose 1ools 1emplaLes
* and open Lhe LemplaLe ln Lhe edlLor.
*/

package beans,
lmporL [ava.sql.ConnecLlon,
lmporL [ava.sql.urlverManager,
lmporL [ava.sql.8esulLSeL,
lmporL [ava.sql.SCLLxcepLlon,
lmporL [ava.lo.Serlallzable,
lmporL [ava.sql.SLaLemenL,
lmporL [ava.uLll.logglng.Level,
lmporL [ava.uLll.logglng.Logger,
/**
*


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? D!

* [auLhor alexgra[o
*/
publlc class conexlon lmplemenLs Serlallzable[
prlvaLe SLrlng bd="bd_blog",
prlvaLe sLaLlc SLrlng logln = "usuarlo",
prlvaLe sLaLlc SLrlng password = "usuarlo",
prlvaLe sLaLlc SLrlng url = "[dbc:mysql://localhosL/",
prlvaLe 8esulLSeL a, b,d, e,
prlvaLe ConnecLlon conn=null,
prlvaLe SLrlng consulLa,c,

publlc conexlon()[
Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = urlverManager.geLConnecLlon(url + bd, logln, password),
caLch (lnsLanLlaLlonLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),
caLch (lllegalAccessLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),
caLch (ClassnoLloundLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),



publlc 8esulLSeL geL8esulLado()[
reLurn a,


publlc 8esulLSeL geL8esulLado2()[
reLurn b,


publlc 8esulLSeL geL8esulLado3()[
reLurn d,


publlc 8esulLSeL geL8esulLado4()[
reLurn e,


publlc vold seLConsulLa(SLrlng sql)[
consulLa = sql,
lnlclar_conexlon(),


publlc vold seLConsulLa2(SLrlng sql)[
consulLa = sql,
lnlclar_conexlon3(),


publlc vold seLConsulLa3(SLrlng sql)[
consulLa = sql,
lnlclar_conexlon4(),


publlc vold seLConsulLa4(SLrlng sql)[
consulLa = sql,
lnlclar_conexlon3(),


1
2
3
6


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DC

publlc vold seLupdaLe(SLrlng sql)[
consulLa = sql,
lnlclar_conexlon2(),



publlc vold lnlclar_conexlon() [

lf (conn != null) [
Lry [
SLaLemenL sLm = conn.creaLeSLaLemenL(),
a = sLm.execuLeCuery(consulLa),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),






publlc vold lnlclar_conexlon2() [


lf (conn != null) [
Lry [
SLaLemenL sLm = conn.creaLeSLaLemenL(),
sLm.execuLeupdaLe(consulLa),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),







publlc vold lnlclar_conexlon3() [


lf (conn != null) [
Lry [
SLaLemenL sLm = conn.creaLeSLaLemenL(),
b = sLm.execuLeCuery(consulLa),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),






publlc vold lnlclar_conexlon4() [


lf (conn != null) [
Lry [
SLaLemenL sLm = conn.creaLeSLaLemenL(),
d = sLm.execuLeCuery(consulLa),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),



4


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DD




publlc vold lnlclar_conexlon3() [


lf (conn != null) [
Lry [
SLaLemenL sLm = conn.creaLeSLaLemenL(),
//sLm.execuLe("SL1 nAMLS uLf8"),
//sLm.execuLe("SL1 CPA8AC1L8 SL1 uLf8"),
e = sLm.execuLeCuery(consulLa),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),







publlc vold seLMaLar(SLrlng c)[
Lhls.c=c,
cerrar_conexlon(),


publlc vold cerrar_conexlon()[
Lry [
conn.close(),
caLch (SCLLxcepLlon ex) [
Logger.geLLogger(conexlon.class.geLname()).log(Level.SLvL8L, null, ex),










Sl Le puedes dar cuenLa el cdlgo que lnLrodu[lsLe a Lu clase conexln esL dlvldldo en 6 parLes segun su e[ecucln.
Con el uno lnlclamos la e[ecucln del programa y Lermlnamos en el 6. LsLo suena lglco pero para aquellos que no
sepan nl que es lglco pues slrve.

Lmpecemos a descrlblr cmo funclona esLe !ava8ean,

Aqul Lenemos la declaracln de nuesLras varlables como en Lodo programa.

pr|vate Str|ng bd="bd_b|og",
-Ln esLe caso bd conLlene el nombre de nuesLra base de daLos que creamos al prlnclplo de esLe manual
pr|vate stat|c Str|ng |og|n = "usuar|o",
-La varlable logln conLlene el nombre del usuarlo que creamos al lnlclo con los permlsos de admlnlsLrador
pr|vate stat|c Str|ng password = "usuar|o",
-La varlable password conLlene la conLrasena del usuarlo creado en la base de daLos.
pr|vate stat|c Str|ng ur| = "[dbc:mysq|:]]|oca|host]",
-LsLa es la url donde se encuenLra alo[ada nuesLra base de daLos, por lo regular esLa compuesLa por el
hosL, uerLo y nombre de la base de daLos. Ln esLe caso solo colocamos localhosL lndlcando que nuesLra
base de daLos esLa alo[ada en nuesLra maqulna.
pr|vate kesu|tSet a, b,d, e,
-ueclaramos Lres varlables del Llpo resulseL que mas delanLe expllcaremos.
pr|vate Connect|on conn=nu||,
3
1


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DE

-varlable Llpo connecLlon que nos permlLe guardar una conexln en caso de que se haya hecho de manera
correcLa.
pr|vate Str|ng consu|ta,c,
Ln esLa slmple varlable guardaremos la consulLa que se manda desde nuesLras pglnas que mande llamar
nuesLro !ava8ean.


una vez que hemos declarado nuesLras varlables podemos crear nuesLra conexln de la slgulenLe manera

pub||c conex|on(){
-LsLa es la clase con la cual lnlclamos nuesLra conexlon
try {
-Al LraLar de conecLarse a una base de daLos es muy probable que puedan surglr errores de
lnsLanclamlenLo, de acceso llegal encase de que nuesLras credenclales esLen lncorrecLas, errores del
mlsmo lengua[e sql (slnLaxls de sql) y slmplemenLe que la clase coneccLlon no exlsLa.

C|ass.forName("com.mysq|.[dbc.Dr|ver").newInstance(),

Cargar el conLrolador !u8C
ara Lraba[ar con el Al !u8C se Llene que lmporLar el paqueLe [ava.sql, Lal y como se lndlca a conLlnuacln:
lmporL [ava.sql.*,
Ln esLe paqueLe se deflnen los ob[eLos que proporclonan Loda la funclonalldad que se requlere para el acceso a
bases de daLos.

Ll slgulenLe paso despues de lmporLar el paqueLe [ava.sql conslsLe en cargar el conLrolador !u8C, es declr un ob[eLo
urlver especlflco para una base de daLos que deflne cmo se e[ecuLan las lnsLrucclones para esa base de daLos en
parLlcular.

Pay varlas formas de hacerlo, pero la ms sencllla es uLlllzar el meLodo forname() de la clase Class:
Class.forname("ConLrolador !u8C"),

para el caso parLlcular del conLrolador para MySCL, ConnecLor/!, se Llene lo slgulenLe:
Class.forname("com.mysql.[dbc.urlver"),



conn = Dr|verManager.getConnect|on(ur| + bd, |og|n, password),

- ?a que esL cargado el conLrolador [dbc procedemos a hacer la conexln a la base de daLos. 8ecuerda
que declaramos una varlable conn Llpo coneccLlon, pues esLe es el momenLo de uLlllzarla para
guardar esLa conexln.

LsLablecer la conexln

una vez reglsLrado el conLrolador con el urlverManager, se debe especlflcar la fuenLe de daLos a la
que se desea acceder. Ln !u8C, una fuenLe de daLos se especlflca por medlo de un u8L con el prefl[o
de proLocolo [dbc: , la slnLaxls y la esLrucLura del proLocolo es la slgulenLe:

[dbc:[subproLocolo:[subnombre

Ll [subproLocolo expresa el Llpo de conLrolador, normalmenLe es el nombre del slsLema de base de
daLos, como db2, oracle o mysql.

Ll conLenldo y la slnLaxls de [subnombre dependen del [subproLocolo, pero en general lndlcan el
nombre y la ublcacln de la fuenLe de daLos.

2


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DF

or e[emplo, para acceder a una base de daLos denomlnada producLos en un slsLema Cracle local, el
u8L serla de la slgulenLe manera:
-
- SLrlng url = "[dbc:oracle:producLos",
-
Sl la mlsma base de daLos esLuvlera en un slsLema u82 en un servldor llamado dbserver.lbm.com, el
u8L serla el slgulenLe:
- SLrlng url = "[dbc:db2:dbserver.lbm.com/producLos",


Ll formaLo general para conecLarse a MySCL es:


[dbc:mysql://servldor:puerLo/base_de_daLosparam1=valor1param2=valor2...

ara la base de daLos bd_blog creada anLerlormenLe, el u8L serla :

- SLrlng url = "[dbc:mysql://localhosL/bd_blog",

una vez que se ha deLermlnado el u8L, se puede esLablecer una conexln a una base de daLos.

Ll ob[eLo ConnecLlon es el prlnclpal ob[eLo uLlllzado para proporclonar un vlnculo enLre las bases de
daLos y una apllcacln en !ava. ConnecLlon proporclona meLodos para mane[ar el procesamlenLo de
Lransacclones, para crear ob[eLos y e[ecuLar lnsLrucclones SCL, y para crear ob[eLos para la e[ecucln
de procedlmlenLos almacenados.

Se puede emplear LanLo el ob[eLo urlver como el ob[eLo urlverManager para crear un ob[eLo
ConnecLlon. Se uLlllza el meLodo connecL() para el ob[eLo urlver, y el meLodo geLConnecLlon() para el
ob[eLo urlverManager.

Ll ob[eLo ConnecLlon proporclona una conexln esLLlca a la base de daLos. LsLo slgnlflca que hasLa
que se llame en forma expllclLa a su meLodo close() para cerrar la conexln o se desLruya el ob[eLo
ConnecLlon, la conexln a la base de daLos permanecer acLlva.

La manera ms usual de esLablecer una conexln a una base de daLos es lnvocando el meLodo
geLConnecLlon() de la clase urlverManager. A menudo, las bases de daLos esLn proLegldas con
nombres de usuarlo (logln) y conLrasenas (password) para resLrlnglr el acceso a las mlsmas. Ll
meLodo geLConnecLlon() permlLe que el nombre de usuarlo y la conLrasena se pasen Lamblen como
parmeLros.


or lo LanLo podremos Lener la slgulenLe llnea de cdlgo resulLanLe para poder esLablecer la
conexln con nuesLra base de daLos: conn = Dr|verManager.getConnect|on(ur| + bd, |og|n,
password),


} catch (Instant|at|onLxcept|on ex) {
Logger.getLogger(conex|on.c|ass.getName()).|og(Leve|.SLVLkL, nu||, ex),
} catch (I||ega|AccessLxcept|on ex) {
Logger.getLogger(conex|on.c|ass.getName()).|og(Leve|.SLVLkL, nu||, ex),
} catch (SLLxcept|on ex) {
Logger.getLogger(conex|on.c|ass.getName()).|og(Leve|.SLVLkL, nu||, ex),
} catch (C|assNotIoundLxcept|on ex) {
Logger.getLogger(conex|on.c|ass.getName()).|og(Leve|.SLVLkL, nu||, ex),
}
}

-LsLas llneas de cdlgo solo son para poder capLar los errores que se Lengan en la obLencln del [dbc y la conexln a
la base de daLos.




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DG


Ln esLas llneas de cdlgo es donde llega la consulLa que mandamos desde nuesLra pglna [sp (la cual es
<[sp:seLroperLy name="conex" properLy="consulLa" value= "<=consulLa>"/>) recuerda que consulLa
es una varlable que conLlene la senLencla sql que queremos que sea e[ecuLada en el !ava8ean (para
recordar ve a la creacln de la pglna sesslon.[sp).

ara ser especlflcos e lr al grano, la varlable consulLa va a ser mandada al meLodo consulLa de flnldo
medlanLe la propledad properLy="consulLa". LsLa varlable llega al !ava8ean al meLodo seLConsulLa en su
parmeLro sq|
1
como se ve aconLlnuaclon.

pub||c vo|d setConsu|ta(Str|ng sq|
1
){
consu|ta = sq|,
|n|c|ar_conex|on(),
}

A la varlable consulLa del meLodo seLconsulLa declarada anLerlormenLe le lgualamos lo que Lenga el
parmeLro sq|
1
y mandamos llamar al meLodo lnlclar_conexlon.

Sl nosoLros qulsleramos hacer dlferenLes consulLas al mlsmo Llempo en !ava8ean, lo que Lendrlamos que
hacer es lo slgulenLe: ueclarar el meLodo seLConsulLa2, seLConsulLa3 y seLConsulLa4, donde el
funclonamlenLo es el mlsmo que el expllcado anLerlormenLe.

pub||c vo|d setConsu|ta2(Str|ng sq|){
consu|ta = sq|,
|n|c|ar_conex|on3(),
}

pub||c vo|d setConsu|ta3(Str|ng sq|){
consu|ta = sq|,
|n|c|ar_conex|on4(),
}

pub||c vo|d setConsu|ta4(Str|ng sq|){
consu|ta = sq|,
|n|c|ar_conex|onS(),
}







Ln el meLodo pasado obLenlamos la consulLa que habla sldo envlada de nuesLra paglna [sp, esLa
consulLa es guardada en el parmeLro sql, despues lnLernamenLe en el meLodo seLConsulLa a la varlable consulLa le
lgualamos el valor del parameLro sql. or ulLlmo mandamos llamar el meLodo lnlclar_conexlon que es el que se va a
expllcar a conLlnuacln.





pub||c vo|d |n|c|ar_conex|on() {
-LsLe es el lnlclo del meLodo lnlclar conexln, esLe meLodo no reclbe nlngun parmeLro.

|f (conn != nu||) {
-Sl la conexln que se hlzo anLerlormenLe es dlferenLe a null enLramos a la condlcln.
Lry [





3
4


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DH

Statement stm = conn.createStatement(),




Creac|n de una Sentenc|a
Como se menclon en la seccln anLerlor, el ob[eLo ConnecLlon permlLe esLablecer una conexln a una base de
daLos. ara e[ecuLar lnsLrucclones SCL y procesar los resulLados de las mlsmas, se debe hacer uso de un ob[eLo
SLaLemenL.

Los ob[eLos SLaLemenL envlan comandos SCL a la base de daLos, y pueden ser de cualqulera de los Llpos slgulenLes:
1. execuLeCuery(SLrlng sql): SLLLC1. uevuelveun ob[eLo 8esulLSeL.
2. execuLeupdaLe(SLrlng sql) uML o uuL.uevuelve un lnL.
3. execuLe(SLrlng): cualquler senLencla SCL.uevuelve un valor boolean.

C dlcho de oLra manera pueden ser de:

un comando de deflnlcln de daLos como C8LA1L 1A8LL o C8LA1L lnuLx.
un comando de manlpulacln de daLos como lnSL81, uLLL1L o uuA1L.
un senLencla SLLLC1 para consulLa de daLos.
un comando de manlpulacln de daLos devuelve un conLador con el numero de fllas (reglsLros) afecLados, o
modlflcados, mlenLras una lnsLruccln SLLLC1 devuelve un con[unLo de reglsLros denomlnado con[unLo de
resulLados (resulL seL). La lnLerfaz SLaLemenL no Llene un consLrucLor , sln embargo, podemos obLener un ob[eLo
SLaLemenL al lnvocar el meLodo creaLeSLaLemenL() de un ob[eLo ConnecLlon.
conn = urlverManager.geLConnecLlon(url,logln,pasword),
SLaLemenL sLmL = conn.creaLeSLaLemenL(),
una vez creado el ob[eLo SLaLemenL, se puede emplear para envlar consulLas a la base de daLos usando los meLodos
execuLe(), execuLeupdaLe() o execuLeCuery(). La eleccln del meLodo depende del Llpo de consulLa que se va a
envlar al servldor de bases de daLos:
MeLodo uescrlpcln
execuLe( ) Se usa prlnclpalmenLe cuando una senLencla SCL regresa varlos
con[unLos de resulLados. LsLo ocurre prlnclpalmenLe cuando se esL
haclendo uso de procedlmlenLos almacenados.
execuLeupdaLe( ) LsLe meLodo se uLlllza con lnsLrucclones SCL de manlpulacln de daLos
Lales como lnSL81, uLLL1L o uuA1L.
execuLeCuery( ) Se usa en las lnsLrucclones del Llpo SLLLC1.
Ls recomendable que se clerren los ob[eLos ConnecLlon y SLaLemenL que se hayan creado cuando ya no se
neceslLen. Lo que sucede es que cuando en una apllcacln en !ava se esLn usando recursos exLernos, como es el
caso del acceso a bases de daLos con el Al !u8C, el recolecLor de basura de !ava (garbage collecLor) no Llene
manera de conocer cul es el esLado de esos recursos, y por lo LanLo, no es capaz de llberarlos en el caso de que ya
no sean uLlles. Lo que ocurre en esLos casos es que se pueden quedar almacenados en memorla grandes canLldades
de recursos relaclonados con la apllcacln de bases de daLos que se esL e[ecuLando. Ls por esLo que se recomlenda
que se clerren de manera expllclLa los ob[eLos ConnecLlon y SLaLemenL.

ue manera slmllar a ConnecLlon, la lnLerfaz SLaLemenL Llene un meLodo close() que permlLe cerrar de manera
expllclLa un ob[eLo SLaLemenL. Al cerrar un ob[eLo SLaLemenL se llberan los recursos que esLn en uso LanLo en la
apllcacln !ava como en el servldor de bases de daLos.
SLaLemenL sLmL = conn.creaLeSLaLemenL(),
sLmL.close(),




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? DI



a = stm.executeuery(consu|ta),
-Sl recordamos a es una varlable de Llpo 8esulSeL la cual puede almacenar el conLenldo que nos reLorne la
e[ecucln de la consulLa medlanLe la clase SLaLemenL.

8esulLSeL:
_ ManLlene un cursor apunLando a su flla de daLos acLual
_ roporclona meLodos para recuperar valores de columna


} catch (SLLxcept|on ex) {
Logger.getLogger(conex|on.c|ass.getName()).|og(Leve|.SLVLkL, nu||, ex),
}
}
-La llnea que conLlene el caLch nos permlLe aLrapar un error de Llpo SCLLxcepLlon en una varlable ex de
Llpo SCLLxcepLlon la cual podremos lmprlmlr denLro del bloque caLch.

A parLlr de la versln 1.4 de [ava2SL Sun mlcrosysLem agreg una funcln o concepLo que permlLe conLrolar, dar
formaLo y publlcar mensa[es a Lraves de los llamados reglsLros (log), perLeneclenLes al paqueLe [ava.uLll.logglng.

sLos pueden emplearse para dar mensa[es de lnformacln, esLados de los daLos o la programLlca o lncluslve
errores ocurrldos duranLe la e[ecucln.

ueden beneflclar a varlos empleadores de la apllcacln como programadores, personal a cargo de reallzar
pruebas y por oLra parLe Lamblen a usuarlos del slsLema lncluslve slno esL asoclado al cdlgo fuenLe.

or ulLlmo la clase Level que conLlene oLros nlveles:

!"#"$"
nlvel de mayor prlorldad, para lndlcar errores.
%&$'(')
Segundo nlvel, lndlcados para adverLenclas
('*+
lndlcados para mensa[es con flnes lnformaLlvos
,+'*()
ara mensa[es de conflguracln
*('"
ara lnformacln de la Lraza de la apllcacln
*('"$
ara lnformacln de rasLreo de la Lraza de la apllcacln
*('"!-
nlvel ms ba[o y de menor prlorldad






















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? E"

2.16.8 Creacln de la pglna "lndex1.[sp"

1.- ve neLbeans y en Lu proyecLo da cllc derecho en Webages, selecclona new y despues da cllc en !S. 1al como
se muesLra a conLlnuacln.



2.- Ahora en la venLana que emerge en el aparLa !S llle name lnLroduce la palabra lndex1 y da cllc en flnlsh. CulaLe
con la lmagen de aba[o.


3.- una vez que aparezca nuesLra rea de Lraba[o en la paleLa de cdlgo modlflca el archlvo para que quede Lal y
como esL el slgulenLe cdlgo:


<-- uocumenL : lndex CreaLed on : 11/02/2010, 06:41:06 M AuLhor : gra[o-->
<[page conLenL1ype="LexL/hLml" pageLncodlng="u1l-8">
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln" "hLLp://www.w3.org/18/hLml4/loose.dLd">
<hLml>
<head>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=u1l-8">
<LlLle>blog de alex</LlLle>
<SLrlng sLaLus= (SLrlng)sesslon.geLvalue("sLaLus"),
>
</head>

<lf( sLaLus == null)[

response.send8edlrecL("conLra.[sp"),
else[ >


<frameseL rows="*" cols="89,*">


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? E#

<frameseL rows="*" cols="18,*">
<frame name="frm_lefL" src="frm_lefL.[sp" scrolllng="auLo" noreslze
bordercolor="#030000">
<frame name="frm_cenLral1" src="frm_lnlclal.[sp" scrolllng="yes"
bordercolor="#030000">
</frameseL>
<frame name="frm_rlghL" src="[uego.hLml" scrolllng="no" noreslze
bordercolor="#030000">
</frameseL>

<noframes></noframes>

<


>
<body></body>
</hLml>

4.- Sl Le das cuenLa esLe cdlgo es parecldo al lndex prlnclpal de Lu proyecLo. Sl neceslLas repasar cmo funclonan
los frameseLs ve a la creacln de la pglna lndex.[sp al lnlclo del manual.

3.- LsLa archlvo lo que hace es dlvldlr nuesLra pglna en Lres parLes en la lzqulerda o en el frame lzqulerdo
mosLramos la paglna frm_lefL que Lendr un menu con las caLegorlas, Lemas o publlcldad de nuesLra pglna.
Ln el frame frm_cenLral1 desplegaremos la pglna frm_lnlclal.[sp y en el frame derecho mosLraremos la pglna
[uegos.hLml.

Lxpllcacln de las propledades ms lmporLanLes de esLe archlvo:

Scrolllng: nos permlLe hacer que nuesLra pglna Lenga una barra de desplazamlenLo en caso de que esLa lo neceslLe.
nuesLro aLrlbuLo Llene dos valores: no, para hacer que en la paglna nunca aparezca la barra de desplazamlenLo, y
yes, para hacer que aparezca la barra de desplazamlenLo.

noreslze: LsLo hace que la pglna no camble su Lamano predeLermlnado cuando el enLorno en que se muesLra es
ms pequeno o ms grande

8ordercolor: LsLe aLrlbuLo hace que el borde de nuesLro frameseL Lome el color que deseemos con valores
hexadeclmales.

Ln nuesLra pglna sesslon.[sp creamos unas varlables de sesln donde una de ellas era el sLaLus que le damos un
valor de uno (ver creacln de sesslon.[sp) bueno esLa varlable solo durara 30 mlnuLos y despues de que Lranscurra
esLe Llempo, la varlable quedar desLrulda, por lo cual hacemos un lf en esLe documenLo el cual dlce que sl el sLaLus
esL desLruldo nos redlrecclne a la pglna conLra.[sp.






















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? E!

2.16.9 CkLACICN DL LA AGINA frm_|eft.[sp

1.- ve al neLbeans y da cllc derecho en Webages.
2.-uel menu emergenLe selecclona new
3.- ua cllc e !S.
noLa: gulaLe en la lmagen de aba[o.


4.- 1e aparecer la slgulenLe venLana y en el aparLado !S llle name coloca: frm_lefL" y da cllc en flnlsh



3.- Aparecer el nuevo documenLo en el rea de desarrollo, el cual se modlflcar Lal como se muesLra en el cdlgo
slguenLe:

<--
uocumenL : frm_lefL
CreaLed on : 8/03/2010, 11:38:32 AM
AuLhor : alexgra[o
-->

<[page conLenL1ype="LexL/hLml" pageLncodlng="u1l-8">
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln"
"hLLp://www.w3.org/18/hLml4/loose.dLd">

<hLml>
<head>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=uLf-8">
<LlLle>!S age</LlLle>

<scrlpL Lype="LexL/[avascrlpL" src="hLLp://a[ax.googleapls.com/a[ax/llbs/[query/1.3.2/[query.mln.[s"></scrlpL>

<scrlpL Lype="LexL/[avascrlpL" src="[s/ddaccordlng.[s">


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EC


/***********************************************
* Accordlon ConLenL scrlpL- (c) uynamlc urlve uP1ML code llbrary (www.dynamlcdrlve.com)
* vlslL hLLp://www.dynamlcurlve.com for hundreds of uP1ML scrlpLs
* 1hls noLlce musL sLay lnLacL for legal use
***********************************************/

</scrlpL>


<scrlpL Lype="LexL/[avascrlpL">


ddaccordlon.lnlL([
headerclass: "submenuheader", //Shared CSS class name of headers group
conLenLclass: "submenu", //Shared CSS class name of conLenLs group
revealLype: "cllck", //8eveal conLenL when user cllcks or onmouseover Lhe header valld value: "cllck",
"cllckgo", or "mouseover"
mouseoverdelay: 200, //lf revealLype="mouseover", seL delay ln mllllseconds before header expands
onMouseover
collapseprev: Lrue, //Collapse prevlous conLenL (so only one open aL any Llme) Lrue/false
defaulLexpanded: , //lndex of conLenL(s) open by defaulL lndex1, lndex2, eLc denoLes no conLenL
onemusLopen: false, //Speclfy wheLher aL leasL one header should be open always (so never all headers
closed)
anlmaLedefaulL: false, //Should conLenLs open by defaulL be anlmaLed lnLo vlew
perslsLsLaLe: Lrue, //perslsL sLaLe of opened conLenLs wlLhln browser sesslon
Loggleclass: "", "", //1wo CSS classes Lo be applled Lo Lhe header when lLs collapsed and expanded,
respecLlvely "class1", "class2"
LogglehLml: "sufflx", "<lmg src=lmg/plus.glf class=sLaLuslcon />", "<lmg src=lmg/mlnus.glf
class=sLaLuslcon />", //AddlLlonal P1ML added Lo Lhe header when lLs collapsed and expanded, respecLlvely
"poslLlon", "hLml1", "hLml2" (see docs)
anlmaLespeed: "fasL", //speed of anlmaLlon: lnLeger ln mllllseconds (le: 200), or keywords "fasL", "normal",
or "slow"
onlnlL:funcLlon(headers, expandedlndlces)[ //cusLom code Lo run when headers have lnlLallzed
mylframe=wlndow.frames"mylframe"
lf (expandedlndlces.lengLh>0) //lf Lhere are 1 or more expanded headers
mylframe.locaLlon.replace(headersexpandedlndlces.pop().geLALLrlbuLe(href)) //CeL "href" aLLrlbuLe
of flnal expanded header Lo load lnLo ll8AML
,
onopenclose:funcLlon(header, lndex, sLaLe, lsuseracLlvaLed)[ //cusLom code Lo run whenever a header ls
opened or closed
lf (sLaLe=="block" lsuseracLlvaLed==Lrue)[ //lf header ls expanded and as Lhe resulL of Lhe user
lnlLlaLed acLlon
mylframe.locaLlon.replace(header.geLALLrlbuLe(href))


)


</scrlpL>


<sLyle Lype="LexL/css">

.glossymenu[
margln: 3px 0,
paddlng: 0,
wldLh: 170px, /*wldLh of menu*/
border: 1px solld #9A9A9A,
border-boLLom-wldLh: 0,


.glossymenu a.menulLem[


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? ED

background: black url(lmg/glossyback.glf) repeaL-x boLLom lefL,
fonL: bold 14px "Luclda Crande", "1rebucheL MS", verdana, PelveLlca, sans-serlf,
color: whlLe,
dlsplay: block,
poslLlon: relaLlve, /*1o help ln Lhe anchorlng of Lhe ".sLaLuslcon" lcon lmage*/
wldLh: auLo,
paddlng: 4px 0,
paddlng-lefL: 10px,
LexL-decoraLlon: none,



.glossymenu a.menulLem:vlslLed, .glossymenu .menulLem:acLlve[
color: whlLe,


.glossymenu a.menulLem .sLaLuslcon[ /*CSS for lcon lmage LhaL geLs dynamlcally added Lo headers*/
poslLlon: absoluLe,
Lop: 3px,
rlghL: 3px,
border: none,


.glossymenu a.menulLem:hover[
background-lmage: url(lmg/glossyback2.glf),


.glossymenu dlv.submenu[ /*ulv LhaL conLalns each sub menu*/
background: whlLe,


.glossymenu dlv.submenu ul[ /*uL of each sub menu*/
llsL-sLyle-Lype: none,
margln: 0,
paddlng: 0,


.glossymenu dlv.submenu ul ll[
border-boLLom: 1px solld blue,


.glossymenu dlv.submenu ul ll a[
dlsplay: block,
fonL: normal 13px "Luclda Crande", "1rebucheL MS", verdana, PelveLlca, sans-serlf,
color: black,
LexL-decoraLlon: none,
paddlng: 2px 0,
paddlng-lefL: 10px,


.glossymenu dlv.submenu ul ll a:hover[
background: #uluCC8,
colorz: whlLe,


body [
background-color: #AAAAAA,

</sLyle>
<
SLrlng caLegorla,
SLrlng sLaLus = (SLrlng)sesslon.geLvalue("sLaLus"),
SLrlng usuarlo = (SLrlng) sesslon.geLvalue("usuarlo"),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EE

lnL conL=0,
SLrlng consulLa1= "SLLLC1 nombre l8CM caLegorla,",

>
<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
</head>
<body>
<lf(sLaLus != null)[>
<dlv class="glossymenu">
<a class="menulLem" href="frm_lnlclal.[sp" LargeL="frm_cenLral1">aglna de lnlclo</a>
<a class="menulLem submenuheader" href="hLLp://www.dynamlcdrlve.com/sLyle/">CaLegorlas</a>
<dlv class="submenu">
<ul>
<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa1>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL++,
caLegorla = conex.geL8esulLado().geLSLrlng("nombre"),
>
<ll><a href="rnsa[es.[spcaLegorla=<=caLegorla>" LargeL="frm_cenLral">C. <=caLegorla></a></ll>
<>
</ul>
</dlv>
<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/[sref/" LargeL="frm_cenLral1">!avaScrlpL
8eference</a>
<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/domref/" LargeL="frm_cenLral1">uCM
8eference</a>
<a class="menulLem submenuheader" href="hLLp://www.cbLc.mx" LargeL="frm_cenLral1">AlCnAS
AMlCAS</a>
<dlv class="submenu">
<ul>
<ll><a href="hLLp://www.C81C.Mx" LargeL="frm_cenLral1">C81C</a></ll>
<ll><a href="hLLp://www.google.com" LargeL="frm_cenLral1">CCCCLL</a></ll>
<ll><a href="hLLp://www.edmodo.com" LargeL="frm_cenLral1">LuMCuC</a></ll>
<ll><a href="hLLp://www.superaporLes.blogspoL.com" LargeL="frm_cenLral1">SuL8AC81LS</a></ll>
<ll><a href="hLLp://www.meLroflog.com" LargeL="frm_cenLral1">ML18ClLCC</a></ll>
<ll><a href="hLLp://www.youLube.com" LargeL="frm_cenLral1">?Cu1u8L</a></ll>
</ul>
<lmg src="hLLp://l27.Llnyplc.com/sy7293.glf" sLyle="margln: 10px 3px" />
</dlv>
<a class="menulLem" href="hLLp://www.cbLc.mx/" sLyle="border-boLLom-wldLh: 0">Codlng lorums</a>
</dlv>

<p><lframe name="mylframe" sLyle="wldLh: 90, helghL: 300px, border:1px solld black"></lframe></p>

<p>Assumlng Lhe currenL page ls named "currenL.hLm", Lhe below llnks when navlgaLed Lo expands a parLlcular
header on LhaL page:</p>
<p>
- <a href="currenL.hLmsubmenuheader=0">Lxpand 1sL header wlLhln "submenuheader" header
group</a><br />
</p>

<p>Pelpful llnks: </p>
<p>
- <a href="hLLp://www.cbLc.mx">Addlng arblLrary llnks haL expand/ collapse Lhe conLenLs</a><br />
- <a href="hLLp://www.cbLc.mx">1aklng advanLage of Lhe onlnlL() and onopenclose() evenL handlers</a><br
/>
</p>
<else[
response.send8edlrecL("conLra.[sp"),
>
</body>
</hLml>



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EF


Lxpllcacln del cdlgo:

1)23 4 2563) 73) 6'89) ':;7*<3<*5,') ')23(9, 5(6',363) ;5( <575( 65,6'=

1.- L| co|or ___ representara todas |a ||amadas de arch|vos externos a nuestra pg|na o arch|vo web. Lstos pueden ser css o [s
dependlendo de la ocasln.

Ln esLe caso es lmporLanLe menclonar que para que una pglna web Lenga efecLos vlsuales es necesarlo hacer uso de un lengua[e
de programacln llamado [ava scrlpL (que no Llene nada que ver con el lengua[e [ava).

1odos los archlvos que Lengan algun Llpo de efecLo como menus desplegables Llenen que ver con el lengua[e [avascrlpL y para que
nuesLra pglna funclone hay que crear una carpeLa en llamada [s y descargar del edmodo un archlvo llamado [s.rar , pero eso lo
haremos mas delanLe.

Las slgulenLes llneas de cdlgo son uLlllzadas para mandar llamar un cdlgo [s para que lnLeracLue con nuesLro hLml.

<scr|pt type="text][avascr|pt" src="http:]]a[ax.goog|eap|s.com]a[ax]||bs][query]1.3.2][query.m|n.[s"><]scr|pt>

LsLa llnea de cdlgo lmporLa un scrlpL donde:
1ype="text][avascr|pt": lndlca que el Llpo de scrlpL que vamos a uLlllzar es un [ava scrlLp.
Src: esLe aLrlbuLo lndlca el lugar donde se encuenLra nuesLro [avaScrlpL. Sl Le das cuenLa esLe [ava scrlpL es un
cdlgo opensource que proporclona la empresa de Coogle. Ls lmporLanLe lnclulr el nombre del archlvo en esLa ruLa,
en esLe caso el archlvo se llama [query.mln.[s

<scrlpL Lype="LexL/[avascrlpL" src="[s/ddaccordlng.[s">
LsLa llnea de cdlgo Lraba[a con el mlsmo prlnclplo:
Ll Llpo de scrlpL esL deflnldo por el Lype="LexL/[avascrlpL" que como se ve hace referencla a un [ava scrlpL.
Ll camblo que Llene esLa llnea es que su orlgen esL en el mlsmo proyecLo y no en oLro domlnlo. LsLo es que
ddaccordlng.[s esL en la carpeLa [s de nuesLro proyecLo. LsLe archlvo ser creado ms delanLe.



2.- L| co|or ___ representara todos |os request.getarameters que tengamos en nuestros arch|vos. Sess|on.getVa|ue().

8len en esLas llneas de cdlgo prlmero:

SLrlng caLegorla,
-ueclaramos una varlable llamada caLegorla de Llpo sLrlng

SLrlng sLaLus = (SLrlng)sesslon.geLvalue("sLaLus"),
SLrlng usuarlo = (SLrlng) sesslon.geLvalue("usuarlo"),

-LsLas llneas de cdlgo son nuevas y las podemos desglosar de la slgulenLe manera:
1. 1enemos una declaracln de varlables sLaLus y usuarlo de Llpo sLrlng lo cual no debe de Lener
nlngun problema para enLenderse pues es una slmple declaracln de varlable.
2. Lo que esLa despues de nuesLro operador de aslgnacln es lo lmporLanLe.
La funcln sesslon.geLvalue(nombre de la varlable de sesln") nos permlLe obLener los valores
que les dlmos a las varlables de sesln en la pglna sesslon.[sp. LsLas varlables de sesln son de
Llpo ob[eL por lo que es necesarlo moldearlas o apllcarles un casLeo que las convlerLa a valores de
clase SLrlng y asl poder guardarlos en las varlables Llpo sLrlng.

3.- L| co|or ___ representan |as pet|c|ones [avabean que tengamos en nuestro arch|vo.

-Como se habla dlcho anLerlor menLe:

<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
Llnea de cdlgo uLlllzada para lnlclallzar nuesLro [avabean en nuesLra pglna.

<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa1>"/>

Con esLa llnea de cdlgo mandamos a nuesLro [avabean la varlable consulLa1 que conLlene el cdlgo sql para
obLener Lodas las caLegorlas de nuesLro programa. ara ahondar ms en esLe Lema ve a las expllcaclones que se
hlcleron al lnlclo de esLe manual.




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EG


4. L| co|or ___ representa |os componentes htm| que tengamos en nuestra pg|na.

Las slgulenLes llneas de cdlgo Llenen algo en comun y es que Llenen un href. LsLe href es una llga que nos mandara a la paglna
que esLa despues del slgno de aslgnacln (href=hLLp://www.cbLc.mx).

Ll aLrlbuLo LargeL hace que el navegador muesLre esLa lnformacln en nuesLro frame frm_cenLral1, esLa es el rea
cenLral de nuesLra pglna.

<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/[sref/" LargeL="frm_cenLral1">!avaScrlpL
<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/domref/" LargeL="frm_cenLral1">uCM
<a class="menulLem submenuheader" href="hLLp://www.cbLc.mx" LargeL="frm_cenLral1">AlCnAS
Sl Le das cuenLa Lodas las dems llneas de cdlgo con href y nos mandan a una pglna en
especlflco donde Lodas se mosLraran en el frame frm:cenLral1.
<ll><a href="hLLp://www.C81C.Mx" LargeL="frm_cenLral1">C81C</a></ll>
<ll><a href="hLLp://www.google.com" LargeL="frm_cenLral1">CCCCLL</a></ll>
<ll><a href="hLLp://www.edmodo.com" LargeL="frm_cenLral1">LuMCuC</a></ll>
<ll><a href="hLLp://www.superaporLes.blogspoL.com" LargeL="frm_cenLral1">SuL8AC81LS</a></ll>
<ll><a href="hLLp://www.meLroflog.com" LargeL="frm_cenLral1">ML18ClLCC</a></ll>
<ll><a href="hLLp://www.youLube.com" LargeL="frm_cenLral1">?Cu1u8L</a></ll>
</ul>


S. L| co|or ___ representa |os mtodos de consu|tas que hagamos en |a ap||cac|n.

una vez que nuesLro !ava8ean hace sus conexlones y e[ecuLa la senLencla sql podremos sacar la lnformacln del resulseL que
declaramos.
Conex.geL8esLulLado().nexL(): Ls una funcln que nos permlLe mover el apunLador del resulseL y poder acceder al slgulenLe
reglsLro que nos manda el [avabean medlanLe el resulseL.

Conex.geL8esulLado.geSLrlng(nombre del campo que se busco en el query"): esLe nos permlLe sacar del resulseL el valor y
guardarlo en la varlable caLegorla que es de Llpo sLrlng.



< whlle (conex.geL8esulLado().nexL()) [
conL++,
caLegorla = conex.geL8esulLado().geLSLrlng("nombre"),
>
<ll><a href="rnsa[es.[spcaLegorla=<=caLegorla>" LargeL="frm_cenLral">C. <=caLegorla></a></ll>

Ahora desglosemos la slgulenLe llnea de cdlgo:
nref="rnsa[es.[sp: esLo hace que se lmprlma una llga y que cuando demos clle en ella nos mande a rnsa[es.[sp

<a href="rnsa[es.[sp?categor|a=<=categor|a>" target="frm_centra|">C. <=categor|a><]a>: Ln esLa llnea de
cdlgo podemos ver despues de rnsa[es un slgno de lnLerrogacln. LsLe slgno de lnLerrogacln lndlca que a la
paglna rnsa[es le vamos a mandar un parmeLro llamado caLegorla con el conLenldo de la varlable caLegorla.

target="frm_centra|">: LsLe aLrlbuLo permlLe que la paglna rnsa[es.[sp se muesLre en el frame frm_cenLral

C. <=categor|a>: LsLa llnea de cdlgo hace que aparezca vlsualmenLe el nombre de la caLegorla como llnk para
que el usuarlo de cllc en ella y nos mande a rnsa[es.[sp

<>
</ul>








9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EH

6. L| co|or ___ representa todas |as consu|ta sq| que tengamos en cada arch|vo

SLrlng consulLa1= "SLLLC1 nombre l8CM caLegorla,",
LsLa es una consulLa o me[or llamada query. nos permlLe desplegar Lodas aquellas caLegorlas de la Labla caLegorla creada
anLerlormenLe. Craclas a esLa consulLa podremos hacer que se muesLre dlnmlcamenLe.



2.17 Creac|n de |a carpeta [s.


1.- ve al neLbeans
2.- ua cllc derecho en el aparLado Webages.
3.-Selecclona el aparLado new
4.- Ahora da cllc en folder.
CulaLe con la lmagen de aba[o.



3.- Aparecer la slgulenLe venLana en la cual en el aparLado lolder name pondremos como nombre [s
6.- ua cllc en flnlsh.










9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? EI

6.- vamos a ver que la carpeLa [s esLe denLro de nuesLro proyecLo.



2.17.1 Como crear un arch|vo [s

1.- ua cllc en la carpeLa [s
2.- Selecclona new
3.- ua cllc en oLher. CulaLe en la slgulenLe lmagen.




4.- uel aparLado caLegorles, selecclona oLher
3.- Ln el aparLado llle 1ypes, selecclona !avaScrlpL llle.
6.- ua cllc en nexL.









9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? F"

7.- Ahora en el aparLado llle name coloca el nombre ddaccord|ng".
8.- ua cllc en flnlsh.


9.- 1e aparecer una nueva area de desarrollo en la cual vas a lnLroduclr Lodo esLe cdlgo

//** Accordlon ConLenL scrlpL: 8y uynamlc urlve, aL hLLp://www.dynamlcdrlve.com
//** CreaLed: !an 7Lh, 08

//verslon 1.3: Aprll 3rd, 08:
//**1) ScrlpL now no longer confllcLs wlLh oLher !S frameworks
//**2) Adds cusLom onlnlL() and onopenclose() evenL handlers LhaL flre when Accordlon ConLenL lnsLance has
lnlLlallzed, plus whenever a header ls opened/closed
//**3) Adds supporL for expandlng header(s) uslng Lhe u8L parameLer (le:
hLLp://myslLe.com/accordlon.hLmheaderclass=0,1)

//Aprll 9Lh, 08: llxed "defaulLexpanded" seLLlng noL worklng when page flrsL loads

//verslon 1.4: !une 4Lh, 08:
//**1) Added opLlon Lo acLlvaLe a header "mouseover" lnsLead of Lhe defaulL "cllck"
//**2) 8ug perslsLence noL worklng when used wlLh [query 1.2.6

//verslon 1.3: !une 20Lh, 08:
//**1) Adds new "onemusLopen:Lrue/false" parameLer, whlch leLs you seL wheLher aL leasL one header should be
open aL all Llmes (so never all closed).
//**2) Changed cookle paLh Lo slLe wlde for perslsLence feaLure
//**3) llxed bug so "expandedlndlces" parameLer ln onlnlL(headers, expandedlndlces) reLurns empLy array
lnsLead of -1 when no expanded headers found

//**1) verslon 1.3.1: !une 27Lh, 08: llxed "defaulLexpanded" seLLlng noL worklng properly when used wlLh [query
1.2.6

//verslon 1.6: CcL 3rd, 08:
//**1) Adds new "mouseoverdelay" param LhaL seLs delay before headers are acLlvaLed when "revealLype" param ls
seL Lo "mouseover"
//**2) llxed bug wlLh "onemusLopen" param noL worklng properly when "revealLype" ls seL Lo "cllck"

//verslon 1.7: March 24Lh, 09: Adds a 3rd revealLype seLLlng "cllckgo", whlch causes browser Lo navlgaLe Lo u8L
speclfled lnslde Lhe header afLer expandlng lLs conLenLs.

//verslon 1.7.1: May 28Lh, 09: llxed lssue LhaL causes marglns/paddlngs ln accordlon ulvs Lo be losL ln lL8


var ddaccordlon=[



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? F#

conLenLclassname:[, //ob[ecL Lo sLore correspondlng conLenLclass name based on
headerclass

expandone:funcLlon(headerclass, selecLed)[ //u8LlC funcLlon Lo expand a parLlcular
header
Lhls.Loggleone(headerclass, selecLed, "expand")
,

collapseone:funcLlon(headerclass, selecLed)[ //u8LlC funcLlon Lo collapse a parLlcular
header
Lhls.Loggleone(headerclass, selecLed, "collapse")
,

expandall:funcLlon(headerclass)[ //u8LlC funcLlon Lo expand all headers based on Lhelr
shared CSS classname
var =[Cuery
var headers=(.+headerclass)
(.+Lhls.conLenLclassnameheaderclass+:hldden).each(funcLlon()[
headers.eq(parselnL((Lhls).aLLr(conLenLlndex))).Lrlgger("evL_accordlon")
)
,

collapseall:funcLlon(headerclass)[ //u8LlC funcLlon Lo collapse all headers based on Lhelr
shared CSS classname
var =[Cuery
var headers=(.+headerclass)
(.+Lhls.conLenLclassnameheaderclass+:vlslble).each(funcLlon()[
headers.eq(parselnL((Lhls).aLLr(conLenLlndex))).Lrlgger("evL_accordlon")
)
,

Loggleone:funcLlon(headerclass, selecLed, opLsLaLe)[ //u8LlC funcLlon Lo expand/
collapse a parLlcular header
var =[Cuery
var LargeLPeader=(.+headerclass).eq(selecLed)
var subconLenL=(.+Lhls.conLenLclassnameheaderclass).eq(selecLed)
lf (Lypeof opLsLaLe=="undeflned" opLsLaLe=="expand" subconLenL.ls(":hldden")
opLsLaLe=="collapse" subconLenL.ls(":vlslble"))
LargeLPeader.Lrlgger("evL_accordlon")
,

expandlL:funcLlon(LargeLPeader, LargeLConLenL, conflg, useracLlvaLed, dlrecLcllck)[
Lhls.LransformPeader(LargeLPeader, conflg, "expand")
LargeLConLenL.slldeuown(conflg.anlmaLespeed, funcLlon()[
conflg.onopenclose(LargeLPeader.geL(0),
parselnL(LargeLPeader.aLLr(headerlndex)), LargeLConLenL.css(dlsplay), useracLlvaLed)
lf (conflg.posLreveal=="goLourl" dlrecLcllck)[ //lf revealLype ls "Co Lo
Peader u8L upon cllck", and Lhls ls a dlrecL cllck on Lhe header
var LargeLLlnk=(LargeLPeader.ls("a")) LargeLPeader.geL(0) :
LargeLPeader.flnd(a:eq(0)).geL(0)
lf (LargeLLlnk) //lf Lhls header ls a llnk
seL1lmeouL(funcLlon()[locaLlon=LargeLLlnk.href, 200)
//lgnore llnk LargeL, as wlndow.open(LargeLLlnk, LargeLLlnk.LargeL) doesnL work ln ll lf popup blocker enabled

)
,

collapselL:funcLlon(LargeLPeader, LargeLConLenL, conflg, lsuseracLlvaLed)[
Lhls.LransformPeader(LargeLPeader, conflg, "collapse")
LargeLConLenL.slldeup(conflg.anlmaLespeed,
funcLlon()[conflg.onopenclose(LargeLPeader.geL(0), parselnL(LargeLPeader.aLLr(headerlndex)),
LargeLConLenL.css(dlsplay), lsuseracLlvaLed))
,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? F!


LransformPeader:funcLlon(LargeLPeader, conflg, sLaLe)[
LargeLPeader.addClass((sLaLe=="expand") conflg.cssclass.expand :
conflg.cssclass.collapse) //alLernaLe bLw "expand" and "collapse" CSS classes
.removeClass((sLaLe=="expand") conflg.cssclass.collapse : conflg.cssclass.expand)
lf (conflg.hLmlseLLlng.locaLlon==src)[ //Change header lmage (assumlng header ls an
lmage)
LargeLPeader=(LargeLPeader.ls("lmg")) LargeLPeader :
LargeLPeader.flnd(lmg).eq(0) //SeL LargeL Lo elLher header lLself, or flrsL lmage wlLhln header
LargeLPeader.aLLr(src, (sLaLe=="expand") conflg.hLmlseLLlng.expand :
conflg.hLmlseLLlng.collapse) //change header lmage

else lf (conflg.hLmlseLLlng.locaLlon=="preflx") //lf change "preflx" P1ML, locaLe
dynamlcally added ".accordpreflx" span Lag and change lL
LargeLPeader.flnd(.accordpreflx).hLml((sLaLe=="expand")
conflg.hLmlseLLlng.expand : conflg.hLmlseLLlng.collapse)
else lf (conflg.hLmlseLLlng.locaLlon=="sufflx")
LargeLPeader.flnd(.accordsufflx).hLml((sLaLe=="expand")
conflg.hLmlseLLlng.expand : conflg.hLmlseLLlng.collapse)
,

urlparamselecL:funcLlon(headerclass)[
var resulL=wlndow.locaLlon.search.maLch(new
8egLxp(headerclass+"=((\\d+)(,(\\d+))*)", "l")) //check for "headerclass=2,3,4" ln u8L
lf (resulL!=null)
resulL=8egLxp.1.spllL(,)
reLurn resulL //reLurns null, lndex, or lndex1,lndex2,eLc, where lndex are Lhe deslred
selecLed header lndlces
,

geLCookle:funcLlon(name)[
var re=new 8egLxp(name+"=,+", "l") //consLrucL 8L Lo search for LargeL name/value
palr
lf (documenL.cookle.maLch(re)) //lf cookle found
reLurn documenL.cookle.maLch(re)0.spllL("=")1 //reLurn lLs value
reLurn null
,

seLCookle:funcLlon(name, value)[
documenL.cookle = name + "=" + value + ", paLh=/"
,

lnlL:funcLlon(conflg)[
documenL.wrlLe(<sLyle Lype="LexL/css">\n)
documenL.wrlLe(.+conflg.conLenLclass+[dlsplay: none\n) //generaLe CSS Lo hlde
conLenLs
documenL.wrlLe(<\/sLyle>)
[Cuery(documenL).ready(funcLlon()[
ddaccordlon.urlparamselecL(conflg.headerclass)
var perslsLedheaders=ddaccordlon.geLCookle(conflg.headerclass)
ddaccordlon.conLenLclassnameconflg.headerclass=conflg.conLenLclass //remember
conLenLclass name based on headerclass
conflg.cssclass=[collapse: conflg.Loggleclass0, expand: conflg.Loggleclass1 //sLore
expand and conLracL CSS classes as ob[ecL properLles
conflg.revealLype=conflg.revealLype "cllck"
conflg.revealLype=conflg.revealLype.replace(/mouseover/l, "mouseenLer")
lf (conflg.revealLype=="cllckgo")[
conflg.posLreveal="goLourl" //remember added acLlon
conflg.revealLype="cllck" //overwrlLe revealLype Lo "cllck" keyword

lf (Lypeof conflg.LogglehLml=="undeflned")
conflg.hLmlseLLlng=[locaLlon: "none"
else


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FC

conflg.hLmlseLLlng=[locaLlon: conflg.LogglehLml0, collapse:
conflg.LogglehLml1, expand: conflg.LogglehLml2 //sLore P1ML seLLlngs as ob[ecL properLles
conflg.onlnlL=(Lypeof conflg.onlnlL=="undeflned") funcLlon()[ : conflg.onlnlL //aLLach
cusLom "onlnlL" evenL handler
conflg.onopenclose=(Lypeof conflg.onopenclose=="undeflned") funcLlon()[ :
conflg.onopenclose //aLLach cusLom "onopenclose" evenL handler
var lasLexpanded=[ //ob[ecL Lo hold reference Lo lasL expanded header and conLenL
([query ob[ecLs)
var expandedlndlces=ddaccordlon.urlparamselecL(conflg.headerclass)
((conflg.perslsLsLaLe perslsLedheaders!=null) perslsLedheaders : conflg.defaulLexpanded)
lf (Lypeof expandedlndlces==sLrlng) //LesL for sLrlng value (excepLlon ls
conflg.defaulLexpanded, whlch ls an array)
expandedlndlces=expandedlndlces.replace(/c/lg, ).spllL(,) //Lransform
sLrlng value Lo an array (le: "c1,c2,c3" becomes 1,2,3
var subconLenLs=(.+conflg"conLenLclass")
lf (expandedlndlces.lengLh==1 expandedlndlces0=="-1") //check for
expandedlndlces value of -1, lndlcaLlng perslsLence ls on and no conLenL expanded
expandedlndlces=
lf (conflg"collapseprev" expandedlndlces.lengLh>1) //only allow one conLenL
open
expandedlndlces=expandedlndlces.pop() //reLurn lasL array elemenL as an
array (for sake of [Cuery.lnArray())
lf (conflg"onemusLopen" expandedlndlces.lengLh==0) //lf aL leasL one conLenL
should be open aL all Llmes and none are, open 1sL header
expandedlndlces=0
(.+conflg"headerclass").each(funcLlon(lndex)[ //loop Lhrough all headers
lf (/(preflx)(sufflx)/l.LesL(conflg.hLmlseLLlng.locaLlon) (Lhls).hLml()!="")[
//add a SAn elemenL Lo header dependlng on user seLLlng and lf header ls a conLalner Lag
(<span class="accordpreflx"></span>).prepend1o(Lhls)
(<span class="accordsufflx"></span>).append1o(Lhls)

(Lhls).aLLr(headerlndex, lndex+h) //sLore poslLlon of Lhls header relaLlve Lo
lLs peers
subconLenLs.eq(lndex).aLLr(conLenLlndex, lndex+c) //sLore poslLlon of Lhls
conLenL relaLlve Lo lLs peers
var subconLenL=subconLenLs.eq(lndex)
var needle=(Lypeof expandedlndlces0=="number") lndex : lndex+ //check
for daLa Lype wlLhln expandedlndlces array- lndex should maLch LhaL Lype
lf ([Cuery.lnArray(needle, expandedlndlces)!=-1)[ //check for headers LhaL
should be expanded auLomaLlcally (converL lndex Lo sLrlng flrsL)
lf (conflg.anlmaLedefaulL==false)
subconLenL.show()
ddaccordlon.expandlL((Lhls), subconLenL, conflg, false) //LasL
param seLs lsuseracLlvaLed parameLer
lasLexpanded=[header:(Lhls), conLenL:subconLenL
//end check
else[
subconLenL.hlde()
conflg.onopenclose((Lhls).geL(0),
parselnL((Lhls).aLLr(headerlndex)), subconLenL.css(dlsplay), false) //LasL 8oolean value seLs lsuseracLlvaLed
parameLer
ddaccordlon.LransformPeader((Lhls), conflg, "collapse")

)
(.+conflg"headerclass").blnd("evL_accordlon", funcLlon(e, lsdlrecLcllck)[ //asslgn
cusLom evenL handler LhaL expands/ conLacLs a header
var
subconLenL=subconLenLs.eq(parselnL((Lhls).aLLr(headerlndex))) //geL subconLenL LhaL should be
expanded/collapsed
lf (subconLenL.css(dlsplay)=="none")[
ddaccordlon.expandlL((Lhls), subconLenL, conflg, Lrue,
lsdlrecLcllck) //2nd lasL param seLs lsuseracLlvaLed parameLer


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FD

lf (conflg"collapseprev" lasLexpanded.header
(Lhls).geL(0)!=lasLexpanded.header.geL(0))[ //collapse prevlous conLenL
ddaccordlon.collapselL(lasLexpanded.header,
lasLexpanded.conLenL, conflg, Lrue) //LasL 8oolean value seLs lsuseracLlvaLed parameLer

lasLexpanded=[header:(Lhls), conLenL:subconLenL

else lf (!conflg"onemusLopen" conflg"onemusLopen"
lasLexpanded.header (Lhls).geL(0)!=lasLexpanded.header.geL(0))[
ddaccordlon.collapselL((Lhls), subconLenL, conflg, Lrue)
//LasL 8oolean value seLs lsuseracLlvaLed parameLer

)
(.+conflg"headerclass").blnd(conflg.revealLype, funcLlon()[
lf (conflg.revealLype=="mouseenLer")[
clear1lmeouL(conflg.revealdelay)
var headerlndex=parselnL((Lhls).aLLr("headerlndex"))

conflg.revealdelay=seL1lmeouL(funcLlon()[ddaccordlon.expandone(conflg"headerclass",
headerlndex), conflg.mouseoverdelay 0)

else[
(Lhls).Lrlgger("evL_accordlon", Lrue)
reLurn false //cancel defaulL cllck behavlor

)
(.+conflg"headerclass").blnd("mouseleave", funcLlon()[
clear1lmeouL(conflg.revealdelay)
)
conflg.onlnlL((.+conflg"headerclass").geL(), expandedlndlces)
(wlndow).blnd(unload, funcLlon()[ //clean up and perslsL on page unload
(.+conflg"headerclass").unblnd()
var expandedlndlces=
(.+conflg"conLenLclass"+":vlslble").each(funcLlon(lndex)[ //geL lndlces of
expanded headers
expandedlndlces.push((Lhls).aLLr(conLenLlndex))
)
lf (conflg.perslsLsLaLe==Lrue (.+conflg"headerclass").lengLh>0)[
//perslsL sLaLe
expandedlndlces=(expandedlndlces.lengLh==0) -1c :
expandedlndlces //no conLenLs expanded, lndlcaLe LhaL wlLh dummy -1c value
ddaccordlon.seLCookle(conflg.headerclass, expandedlndlces)

)
)




















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FE

2.17.2 Co|ocac|n de |os arch|vos fa|tantes de| proyecto

1.- enLra al edmodo



2.- Selecclona Lu maLerla de laboraLorlo de slsLemas


3.- uescarga los archlvos del slgulenLe posL:


noLa: uescarga Lodos los archlvos el css el [s y el lmgusu.

4.- Ahora dlrlgeLe a mlsdocumenLos



3.-Selecclona la carpeLa neL8eansro[ecLs

6.- Ahora selecclona Lu proyecLo llamado blog_Lunombre, donde la palabra Lu_nombre" la susLlLuyes por Lu
nombre.









9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FF

7.- Ahora accede a la paglna web de Lu proyecLo.

8.- aqul deben de aparecer Lres carpeLas css, lmgusu y [s hasLa esLe momenLo debes de Lener dos css y [s. ue Lodos
sl Le falLa cualqulera de las Lreas carpeLas creala.


9.- Ahora descomprlme el conLenldo del archlvo, dando doble cllc en el y Le debe de aparecer una venLana como la
slgulenLe ( en caso de que Lengas wlnrar lnsLalado).



10.- Ahora solo arrasLra la carpeLa css a Lu carpeLa web de Lu proyecLo, sl Le plde que susLlLuyas los archlvos dl que
sl.

11.- ahora descomprlme el archlvo [s.rar dando doble cllc en el, Le aparecer la slgulenLe venLana.

12.- ahora solo vuelve a arrasLra la carpeLa [s a Lu carpeLa web, sl Le plde que susLlLuyas los archlvos de que sl.














9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FG

13.-ua doble cllc sobre el archlvo lmgusu.rar, al hacer esLo de debe aparecer la slgulenLe venLana:

14.- con la mlsma mecnlca arrasLra la carpeLa lmgusu a la carpeLa web de Lu proyecLo. 8ecuerda que sl Le plde
susLlLulr el conLenldo dlle que sl.

Con esLo Lendremos Lodos los css y archlvos [s cargados asl como las lmgenes y cuanLa cosa sea necesarla denLro
de nuesLra apllcacln.













































9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FH








NC1A:


ACCN1INUACICN 1CDCS LCS kCCLDIMILN1CS DL CkLACICN DL
AGINAS C AkCnIVCS DLN1kC DLL kCLC1C, SL ASUML UL SL nA
LN1LNDIC CCMC CkLAkLCS, Ck LC UL NCS 8kINCAkLMCS LCS
ASC. LL MC1IVC LS UL kAC1IULS AkLNDAS C MLMCkISLS CCN
LS1L MANUAL NC SCLC nAGAS LC UL DICL.



AkA LCS CCDIGCS AN1LkICkMLN1L LkLICADCS SL ALICAkA LC
MISMC SI 1ILNLS ALGUNA DUDA DL8LS kLGkLSAk1L A CUALUILkA DL
LAS Ak1LS DCNDL SL LkLICC.
























9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? FI

2.17.3 CkLACICN DL LA AGINA frm_|n|c|a|.[sp

1. Crea una paglna [sp llamada frm_lnlclal en Lu proyecLo.
2. Ahora susLlLuye el cdlgo que Le aparece por el slgulenLe:

<--
uocumenL : frm_lnlclal
CreaLed on : 8/03/2010, 11:46:00 AM
AuLhor : alexgra[o
-->

<[page conLenL1ype="LexL/hLml" pageLncodlng="u1l-8">
<!uCC1?L P1ML u8LlC "-//W3C//u1u P1ML 4.01 1ranslLlonal//Ln"
"hLLp://www.w3.org/18/hLml4/loose.dLd">

<hLml>
<head>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=u1l-8">
<llnk rel="sLylesheeL" href="css/css/maln.css" Lype="LexL/css" />
<LlLle>!S age</LlLle>
<
SLrlng caLegorla="",
SLrlng sLaLus = (SLrlng)sesslon.geLvalue("sLaLus"),
SLrlng usuarlo = (SLrlng) sesslon.geLvalue("usuarlo"),
lnL conL =0,
lnL Lop =0,
SLrlng consulLa1= "SLLLC1 nombre l8CM caLegorla,",
SLrlng consulLa2 = "selecL counL(*) from caLegorla",
SLrlng ld,
>
<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
</head>
<body>
<lf (sLaLus != null)[>
<dlv ld="conLenL-Lop"></dlv>
<dlv ld="conLenL-mlddle">
<dlv ld="plLch">
<h1>LsLe es ml prlmer blog espero que Le gusLe<br /><span>C81C</span></h1>
<p>Ln esLe blog podras crear Lus porplos Lemas dependlendo de la caLegorla en la que esLe. odras dlscuLlr
sobre cual quler cosa slempre y cuando no excedas los Lermlnos o reglas de esLe blog. 8lenvenldo a ml proyecLo
flnal de preparaLorla, espero que les gusLe</p>
</dlv>

<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa2>"/>
<
lnL band = 0,
whlle (conex.geL8esulLado().nexL()) [
SLrlng exlsLe = conex.geL8esulLado().geLSLrlng("counL(*)"),

lf (exlsLe.compare1o("0") == 0) [
band++,

lnLeger Lop1 = new lnLeger(exlsLe),
Lop = Lop1.lnLvalue(),
>

<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa1>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL++,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? G"

caLegorla = conex.geL8esulLado().geLSLrlng("nombre"),
lnL res = conL 2,
lf (conL != Lop) [
>
<dlv class="column ">
<h3>CaLegorla de "<=caLegorla>" </h3>
<lmg src="css/lmages/Lhumb.glf" alL="1humb" />
<p class="more"><a href="rnsa[es.[spcaLegorla=<=caLegorla>" LargeL="frm_cenLral">LnLrar a
"<=caLegorla>"</a></p>
</dlv>
< else [>
<dlv class="column lasL">
<h3>CaLegorla de "<=caLegorla>" </h3>
<lmg src="css/lmages/Lhumb.glf" alL="1humb" />
<p class="more"><a href="rnsa[es.[spcaLegorla=<=caLegorla>" LargeL="frm_cenLral">LnLrar a
"<=caLegorla>"</a></p>
</dlv>

<
>

<dlv class="clear"></dlv>
</dlv>

<dlv ld="conLenL-boLLom"></dlv>

<dlv ld="fooLer">
<p ld="llnks">
<a href="#">Lema:</a>
<a href="#">Ll conoclmlenLo es unlversal</a>
<a href="#">comparLelo</a>
</p>
<p>CopyrlghL copy, Cra[o666blog mlddoL, ueslgn: gra[o666, <a href="hLLp://www.cbLc.com"
LlLle="Soluclones academlcas">Soluclones Academlcas</a></p>
</dlv>
<else[
response.send8edlrecL("conLra.[sp"),
>>
</body>

</hLml>


3. kecuarda |os cd|gos pasados, s| te das cuenta todos |os arch|vos [sp que estamos tratando son
seme[antes so|o tendremos que |nterpretar su func|onam|ento con |os nuevos parmetros.




















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? G#

2.17.3 CkLACICN DL LA AGINA [uego.htm|


1.- LLa es una pglna que en su exLenclon Llene hLml, el moLlvo es que no esLamos uLlllzando nlngun Llpo de
lengua[e [ava denLro de ella por lo que no es necesarlo uLlllzarla como [sp.


2.- crea en Lu proyecLo la paglna frm_rlghL como archlvo hLml.



3.- susLlLuye su cdlgo por el slgulenLe:





<hLml>
<head>
</head>
<body bgcolor="#000000" LexL="#ffffff" sLyle="LexL-allgn: cenLer">
<Lable summary="" border="4">
<Lr>
<Ld>
<cenLer>
<lframe wldLh=123 helghL=313
src="hLLp://www.losrecursosgraLls.com/servlclosvls/[uegos/menu2/menu[uegos2.hLm" frameborder=0
scrolllng=no>
</lframe>
</cenLer>
</Ld>
</Lr>
</Lable>

</body>
</hLml>



4.- LsLa paglna solo manda llamar una paglna exLerna la cual no hemos creado nosoLros, esLo es que sl queremos
cargar paglnas de oLras personas en nuesLra proyecLo web, esLa serla una de las formas que podemos uLlllzar.






















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? G!

2.17.4 CkLACICN DL LA AGINA rnsa[es.[sp


LsLe cdlgo lo que permlLe es ver los Lemas que esLn dados de alLa en las dlferenLes caLegorla, podremos
selecclonar uno de ellos para poder parLlclpar en los que comenLarlos que se esLen generando.


1.- Crea una pglna llamada rnsa[es.[sp en Lu proyecLo web

2.- SusLlLuye el cdlgo que Llenes por el que se Le muesLra a conLlnuaclon

<[ page conLenL1ype="LexL/hLml, charseL=lso-8839-1" language="[ava" lmporL="[ava.sql.*" errorage="" >
<!uCC1?L hLml u8LlC "-//W3C//u1u xP1ML 1.0 1ranslLlonal//Ln" "hLLp://www.w3.org/18/xhLml1/u1u/xhLml1-
LranslLlonal.dLd">
<hLml xmlns="hLLp://www.w3.org/1999/xhLml">
<head>
<LlLle>uocumenLo sln LlacuLe,Lulo</LlLle>
<meLa hLLp-equlv="ConLenL-1ype" conLenL="LexL/hLml, charseL=lso-8839-1" />
<llnk rel="sLylesheeL" href="css/cssdlvs.css" Lype="LexL/css"/>
<llnk rel="sLylesheeL" href="css/menulzq.css" Lype="LexL/css"/>
<llnk rel="sLylesheeL" href="css/Lablas.css" Lype="LexL/css"/>

<scrlpL Lype="LexL/[avascrlpL" src="hLLp://a[ax.googleapls.com/a[ax/llbs/[query/1.3.2/[query.mln.[s"></scrlpL>
<scrlpL Lype="LexL/[avascrlpL" src="[s/ddaccordlng.[s"></scrlpL>
<scrlpL Lype="LexL/[avascrlpL">
ddaccordlon.lnlL([
headerclass: "submenuheader", //Shared CSS class name of headers group
conLenLclass: "submenu", //Shared CSS class name of conLenLs group
revealLype: "cllck", //8eveal conLenL when user cllcks or onmouseover Lhe header valld value: "cllck",
"cllckgo", or "mouseover"
mouseoverdelay: 200, //lf revealLype="mouseover", seL delay ln mllllseconds before header expands
onMouseover
collapseprev: Lrue, //Collapse prevlous conLenL (so only one open aL any Llme) Lrue/false
defaulLexpanded: , //lndex of conLenL(s) open by defaulL lndex1, lndex2, eLc denoLes no conLenL
onemusLopen: false, //Speclfy wheLher aL leasL one header should be open always (so never all headers
closed)
anlmaLedefaulL: false, //Should conLenLs open by defaulL be anlmaLed lnLo vlew
perslsLsLaLe: Lrue, //perslsL sLaLe of opened conLenLs wlLhln browser sesslon
Loggleclass: "", "", //1wo CSS classes Lo be applled Lo Lhe header when lLs collapsed and expanded,
respecLlvely "class1", "class2"
LogglehLml: "sufflx", "<lmg src=lmg/plus.glf class=sLaLuslcon />", "<lmg src=lmg/mlnus.glf
class=sLaLuslcon />", //AddlLlonal P1ML added Lo Lhe header when lLs collapsed and expanded, respecLlvely
"poslLlon", "hLml1", "hLml2" (see docs)
anlmaLespeed: "fasL", //speed of anlmaLlon: lnLeger ln mllllseconds (le: 200), or keywords "fasL", "normal",
or "slow"
onlnlL:funcLlon(headers, expandedlndlces)[ //cusLom code Lo run when headers have lnlLallzed
mylframe=wlndow.frames"mylframe"
lf (expandedlndlces.lengLh>0) //lf Lhere are 1 or more expanded headers
mylframe.locaLlon.replace(headersexpandedlndlces.pop().geLALLrlbuLe(href)) //CeL "href" aLLrlbuLe
of flnal expanded header Lo load lnLo ll8AML
,
onopenclose:funcLlon(header, lndex, sLaLe, lsuseracLlvaLed)[ //cusLom code Lo run whenever a header ls
opened or closed
lf (sLaLe=="block" lsuseracLlvaLed==Lrue)[ //lf header ls expanded and as Lhe resulL of Lhe user
lnlLlaLed acLlon
mylframe.locaLlon.replace(header.geLALLrlbuLe(href))


)


</scrlpL>


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GC


<sLyle Lype="LexL/css">
.glossymenu[
margln: 3px 0,
paddlng: 0,
wldLh: 170px, /*wldLh of menu*/
border: 1px solld #9A9A9A,
border-boLLom-wldLh: 0,


.glossymenu a.menulLem[
background: black url(lmg/glossyback.glf) repeaL-x boLLom lefL,
fonL: bold 14px "Luclda Crande", "1rebucheL MS", verdana, PelveLlca, sans-serlf,
color: whlLe,
dlsplay: block,
poslLlon: relaLlve, /*1o help ln Lhe anchorlng of Lhe ".sLaLuslcon" lcon lmage*/
wldLh: auLo,
paddlng: 4px 0,
paddlng-lefL: 10px,
LexL-decoraLlon: none,



.glossymenu a.menulLem:vlslLed, .glossymenu .menulLem:acLlve[
color: whlLe,


.glossymenu a.menulLem .sLaLuslcon[ /*CSS for lcon lmage LhaL geLs dynamlcally added Lo headers*/
poslLlon: absoluLe,
Lop: 3px,
rlghL: 3px,
border: none,


.glossymenu a.menulLem:hover[
background-lmage: url(lmg/glossyback2.glf),


.glossymenu dlv.submenu[ /*ulv LhaL conLalns each sub menu*/
background: whlLe,


.glossymenu dlv.submenu ul[ /*uL of each sub menu*/
llsL-sLyle-Lype: none,
margln: 0,
paddlng: 0,


.glossymenu dlv.submenu ul ll[
border-boLLom: 1px solld blue,


.glossymenu dlv.submenu ul ll a[
dlsplay: block,
fonL: normal 13px "Luclda Crande", "1rebucheL MS", verdana, PelveLlca, sans-serlf,
color: black,
LexL-decoraLlon: none,
paddlng: 2px 0,
paddlng-lefL: 10px,


.glossymenu dlv.submenu ul ll a:hover[
background: #uluCC8,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GD

color: whlLe,


body [
background-color: #000000,
background-lmage: url(),
</sLyle>

<
SLrlng caLegorla,

SLrlng caL = requesL.geLarameLer("caLegorla"),
SLrlng sLaLus = (SLrlng)sesslon.geLvalue("sLaLus"),
lnLeger sLaLuslnL = new lnLeger(sLaLus),
SLrlng usuarlo = (SLrlng) sesslon.geLvalue("usuarlo"),
SLrlng consulLa1= "SLLLC1 Lema.ld_Lema AS Lema_ld_Lema, Lema.Lema AS Lema_Lema, Lema.fecha AS
Lema_fecha l8CM caLegorla caLegorla lnnL8 !Cln Lema_caL Lema_caL Cn caLegorla.ld_caL = Lema_caL.ld_caL
lnnL8 !Cln Lema Lema Cn Lema_caL.ld_Lema = Lema.ld_Lema WPL8L Lema.ld_Lema = Lema_caL.ld_Lema Anu
Lema_caL.ld_caL = caLegorla.ld_caL Anu caLegorla.nombre = "+caL+",",
SLrlng consulLa3 = "SLLLC1 nombre l8CM caLegorla,",
SLrlng consulLa2="SLLLC1 ld_caL from caLegorla where nombre= "+caL+"",

lnL conL =0,
lnL conL1=0,

SLrlng nom_Lema="",
SLrlng ld_Lema="",
SLrlng ld_caL="",
SLrlng fecha="",
>
<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
</head>

<body>
<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa2>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL1++,
ld_caL = conex.geL8esulLado().geLSLrlng("ld_caL"),

>

<lf (sLaLuslnL.lnLvalue() == 1) [>
<!-- ConLenedor -->
<dlv ld="conLenedor" class="conLenedor">
<!-- Comlenzo header -->

<!-- lln header -->
<!-- Comlenzo navegaclon-->

<!-- lln navegaclon -->
<!-- Comlenzo columna lzqulerda -->

<dlv ld="lzqulerda" class="lzqulerda">
<dlv class="glossymenu">
<a class="menulLem" href="frm_lnlclal.[sp" LargeL="frm_cenLral1">aglna de lnlclo</a>
<a class="menulLem submenuheader" href="hLLp://www.dynamlcdrlve.com/sLyle/">1emas
<=caL></a>
<dlv class="submenu">
<ul>
<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa3>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL++,
caLegorla = conex.geL8esulLado().geLSLrlng("nombre"),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GE

>
<lf (!caLegorla.equalslgnoreCase(caL))[>
<ll><a href="conLra.[spcaLegorla=<=caLegorla>" LargeL="frm_cenLral">C. <=caLegorla></a></ll>
<
>
</ul>
</dlv>
<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/[sref/" LargeL="frm_cenLral1">!avaScrlpL
8eference</a>
<a class="menulLem" href="hLLp://www.[avascrlpLklL.com/domref/" LargeL="frm_cenLral1">uCM
8eference</a>
<a class="menulLem submenuheader" href="hLLp://www.cbLc.mx" LargeL="frm_cenLral1">AlCnAS
AMlCAS</a>
<dlv class="submenu">
<ul>
<ll><a href="hLLp://www.C81C.Mx" LargeL="frm_cenLral1">C81C</a></ll>
<ll><a href="hLLp://www.google.com" LargeL="frm_cenLral1">CCCCLL</a></ll>
<ll><a href="hLLp://www.edmodo.com" LargeL="frm_cenLral1">LuMCuC</a></ll>
<ll><a href="hLLp://www.superaporLes.blogspoL.com"
LargeL="frm_cenLral1">SuL8AC81LS</a></ll>
<ll><a href="hLLp://www.meLroflog.com" LargeL="frm_cenLral1">ML18ClLCC</a></ll>
<ll><a href="hLLp://www.youLube.com" LargeL="frm_cenLral1">?Cu1u8L</a></ll>
</ul>
<lmg alL="hola" src="hLLp://l27.Llnyplc.com/sy7293.glf" sLyle="margln: 10px 3px" />
</dlv>
<a class="menulLem" href="hLLp://www.cbLc.mx/" sLyle="border-boLLom-wldLh: 0">Codlng lorums</a>
</dlv>

<p><lframe name="mylframe" sLyle="wldLh: 90, helghL: 300px, border:1px solld black"></lframe></p>

<p>Assumlng Lhe currenL page ls named "currenL.hLm", Lhe below llnks when navlgaLed Lo expands a
parLlcular header on LhaL page:</p>
<p>
- <a href="currenL.hLmsubmenuheader=0">Lxpand 1sL header wlLhln "submenuheader" header
group</a><br />
</p>

<p>Pelpful llnks: </p>
</dlv>



<!-- lln columna lzqulerda -->
<!-- Comlenzo conLenldo -->
<dlv ld="conLenldo" class="prlnclpal">
<h1 class="cenLrada">1emas de la CaLegorlas <=caL> </h1>
<dlv>
<hr />
<Lable bordercolor="#000000" bgcolor="#llllCC" class="llsLa">
<Lr>
<Ld wldLh="122" bgcolor="#uuuuuu"><dlv allgn="cenLer">lecha</dlv></Ld>
<Ld wldLh="319" bgcolor="#uuuuuu"><dlv allgn="cenLer">Lema</dlv></Ld>
</Lr>

<[sp:seLroperLy name="conex" properLy="consulLa" value="<=consulLa1>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL1++,
ld_Lema = conex.geL8esulLado().geLSLrlng("Lema_ld_Lema"),
nom_Lema = conex.geL8esulLado().geLSLrlng("Lema_Lema"),
fecha = conex.geL8esulLado().geLSLrlng("Lema_fecha"),
lf (conL1 2 == 0) [
>



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GF

<Lr class="">
<Ld wldLh="122" bgcolor="#LCl3ll"><dlv allgn="cenLer"><=fecha></dlv></Ld>
<Ld wldLh="319" bgcolor="#LCl3ll"><a
href="Lemas.[spld=<=ld_Lema>nom=<=nom_Lema>"><=nom_Lema></a></Ld>
</Lr>
< else [>
<Lr class="">
<Ld wldLh="122" bgcolor="#CLL4ll"><dlv allgn="cenLer"><=fecha></dlv></Ld>
<Ld wldLh="319" bgcolor="#CLL4ll"><a
href="Lemas.[spld=<=ld_Lema>nom=<=nom_Lema>"><=nom_Lema></a></Ld>
</Lr>


<


>
</Lable>
</dlv>
<dlv class="clear"></dlv>
<dlv>
<form name="form" acLlon="Sv_Lema" meLhod="posL">
<h1 allgn="cenLer"></h1>
<p>Crea un Lema para esLa caLegorla </p>
</h1>
<dlv allgn="cenLer"><label>Lscrlbe el nombre del Lema</label>
<lnpuL Lype="LexL" name="Lema"/>
</dlv>


<lnpuL name="usu" Lype="hldden" value="<=usuarlo>"/>
<lnpuL name="caLegorla" Lype="hldden" value="<=caL>"/>
<lnpuL name="ld_caL" Lype="hldden" value="<=ld_caL>"/>
<dlv allgn="cenLer">
<lnpuL name="SubmlL" Lype="submlL" class="bLn" value="Cuardar"/>
</dlv>


</form>
</dlv>
</dlv>
<!-- lln conLenldo -->
<!-- Comlenzo columna derecha -->

<!-- lln columna derecha -->
<!-- Comlenzo fooLer -->
<dlv ld="fooLer" class="ple">
<h6>gra[o 2010, Lodo el C_C reservado</h6>
</dlv>

<!-- lln conLenedor -->
</dlv>
< else [
>
</body>
</hLml>









9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GG

1:;7*<3<*+, 6' <+6*B5

Ln esLa ocasln solo haremos lncaple en esLas Lres senLenclas:

LsLa consulLa nos permlLe obLener el ld, el nombre del Lema de la Labla Lemas donde la caLegorla sea la que
obLengamos de nusLra varlable caL.

Str|ng consu|ta1= "SLLLC1 tema.`|d_tema` AS tema_|d_tema, tema.`tema` AS tema_tema, tema.`fecha`
AS tema_fecha IkCM `categor|a` categor|a INNLk ICIN `tema_cat` tema_cat CN categor|a.`|d_cat` =
tema_cat.`|d_cat` INNLk ICIN `tema` tema CN tema_cat.`|d_tema` = tema.`|d_tema` WnLkL tema.|d_tema =
tema_cat.|d_tema AND tema_cat.|d_cat = categor|a.|d_cat AND categor|a.nombre = '"+cat+"',",

Con esLa consulLa obLendremos el nombre de la caLegorla que hayamos selecclonado.

Str|ng consu|ta3 = "SLLLC1 nombre IkCM categor|a,",

LsLe llnea nos permlLe selecclona el ld de la caLegorla selecclonada.

Str|ng consu|ta2="SLLLC1 |d_cat from categor|a where nombre= '"+cat+"'",



1F1CGHGHI=

#"CG" GIJ KIL GIKIC1L MN1 L1 O1 HJPHG"J "K HJHGHI P1K #"JN"K 1J 1K O1#" 1!$KHG"GHIJ P1K GIPHQI
OIP"L K"L L1JO1JGH"L MN1 GICC1L$IJP"J GIJ 1LOIL GIKIC1LR P1 1LO" #"J1C" S1C"L MN1 "NJMN1 1K
GIPHQI L1" #NT QC"JP1 $IPC"L K11CIKI P1 #"JC1" L1JGHKK". KI $CH#1CI "JO1L P1 OC"O"C P1
1JO1JP1C NJ GIPHQI 1L P1LQKIL"CKI $IGI " $IGI T L"U1C GK"LHVHG"C LNL L1JO1JGH".

JIO"= 1LO1 GIPHQI L1 OH1J1 MN1 1JOC1Q"C H#$C1LI 1K PH" P1K 1!"#1J VHJ"K FNJOI GIJ LN $"QHJ"
VNJGHIJ"JPI.


































9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GH

2.17.4 CkLACICN DL LA AGINA temas.[sp

LsLa es la pglna en donde podemos oplnar del Lema que se haya selecclonado. LsLas oplnlones se van a guardar en
la base de daLos para que cuanLas veces enLres a al Lema puedas ver esLe comenLarlo.

1.- Crea la paglna Lemas.[sp
2.- SusLlLuye el cdlgo por el slgulenLe:

<--
uocumenL : Lemas.[sp
CreaLed on : 26/03/2010, 03:30:39 M
AuLhor : alexgra[o
-->
<!uCC1?L hLml u8LlC "-//W3C//u1u xP1ML 1.0 SLrlcL//Ln" "hLLp://www.w3.org/18/xhLml1/u1u/xhLml1-
sLrlcL.dLd">
<hLml xmlns="hLLp://www.w3.org/1999/xhLml">
<head>
<meLa hLLp-equlv="conLenL-Lype" conLenL="LexL/hLml,charseL=uLf-8" />
<meLa name="auLhor" conLenL="Luka Cvrk (www.solucl[a.com)" />
<llnk rel="sLylesheeL" href="css/css/maln.css" Lype="LexL/css" />
<scrlpL language="!avaScrlpL" Lype="LexL/[avascrlpL"
src="[s/LexLo/wyslwyg.[s"></scrlpL>
<LlLle>LnLhuslasLlca</LlLle>
<

SLrlng ld= requesL.geLarameLer("ld"),
SLrlng nom= requesL.geLarameLer("nom"),
SLrlng usu = (SLrlng)sesslon.geLvalue("usuarlo"),
SLrlng ld_usu ="",
SLrlng sLaLus = (SLrlng) sesslon.geLvalue("sLaLus"),
lnL conL=0,
SLrlng nombre="", fecha="", men="", hora="", nom2="",
SLrlng con_nomusu="SLLLC1 usuarlo.ld_usuarlo, usuarlo.nom AS usuarlo_nom l8CM usuarlo usuarlo
WPL8L correo = "+usu+",",
SLrlng mensa[es = "SLLLC1 mensa[es.fecha AS mensa[es_fecha, mensa[es.mensa[e AS mensa[es_mensa[e,
mensa[es.hora AS mensa[es_hora, usuarlo.nom AS usuarlo_nom l8CM usuarlo usuarlo lnnL8 !Cln
usu_mensa[e usu_mensa[e Cn usuarlo.ld_usuarlo = usu_mensa[e.ld_usu lnnL8 !Cln mensa[es mensa[es Cn
usu_mensa[e.ld_mens = mensa[es.ld_mensa[e lnnL8 !Cln mensa[e_Lema mensa[e_Lema Cn
mensa[es.ld_mensa[e = mensa[e_Lema.ld_mensa[e WPL8L mensa[e_Lema.ld_Lema ="+ld+" Anu
usu_mensa[e.ld_mens = mensa[e_Lema.ld_mensa[e C8uL8 8? mensa[es_fecha",
>
<[sp:use8ean ld="conex" class="beans.conexlon" scope="sesslon"/>
</head>
<body>

<dlv ld="wrap">
<dlv ld="menu">
<dlv ld="menu-lefL"></dlv>
<dlv ld="menu-rlghL"></dlv>
</dlv>

<dlv ld="conLenL-Lop"></dlv>

<dlv ld="conLenL-mlddle">
<dlv ld="plLch">
<h1>ulscuLe sobre <=nom><br />
<[sp:seLroperLy name="conex" properLy="consulLa" value="<=con_nomusu>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL++,
ld_usu = conex.geL8esulLado().geLSLrlng("ld_usuarlo"),
nombre = conex.geL8esulLado().geLSLrlng("usuarlo_nom"),>



9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? GI

<>
<span>8lenvenldo <=nombre></span></h1>
<p><=nombre> recuerda que las dlscuclones esLa moderadas, debes de segulr las reglas del blog, <br/>
sl comeLes falLas consecuLlvas podras ser desacLlvado. ulsfruLa </p>
</dlv>


<dlv class="more" >

<[sp:seLroperLy name="conex" properLy="consulLa" value="<=mensa[es>"/>
< whlle (conex.geL8esulLado().nexL()) [
conL++,
fecha = conex.geL8esulLado().geLSLrlng("mensa[es_fecha"),
men = conex.geL8esulLado().geLSLrlng("mensa[es_mensa[e"),
hora = conex.geL8esulLado().geLSLrlng("mensa[es_hora"),
nom2 = conex.geL8esulLado().geLSLrlng("usuarlo_nom"),
>
<h3 sLyle="background-color:#999966 ">posL hecho por <=nom2> el <=fecha> a las
<=hora></h3>
<p>
<LexLarea name="LexLarea2" cols="110" rows="8" readonly
wrap="P?SlCAL" class="more" sLyle="background-color:#CCCCll "><=men></LexLarea>
</p>
<>

</dlv>


<dlv class="clear"></dlv>
<form name="form1" acLlon="Sv_men" meLhod="posL">
<h1 allgn="cenLer"><p>Manda Lu oplnlon</p>
</h1>
<dlv allgn="cenLer">

<LexLarea ld="LexLarea" name="LesL1" sLyle="helghL: 170px, wldLh:
300px,">
</LexLarea>
<scrlpL language="[avascrlpL1.2">
generaLe_wyslwyg(LexLarea),
</scrlpL>
</dlv>
<hr/>
<lnpuL name="nom" Lype="hldden" value="<=nom>">
<lnpuL name="usu" Lype="hldden" value="<=usu>">
<lnpuL name="sLaLus" Lype="hldden" value="<=sLaLus>">
<lnpuL name="Lema" Lype="hldden" value="<=ld>">
<lnpuL name="ld_usu" Lype="hldden" value="<=ld_usu>">
<dlv allgn="cenLer"> <lnpuL name="SubmlL" Lype="submlL" class="bLn" value="Cuardar"> </dlv>


</form>
</dlv>

<dlv ld="conLenL-boLLom">
</dlv>

<dlv ld="fooLer">
<p ld="llnks">
<a href="#">1erms and CondlLlons</a>
<a href="#">rlvacy</a>
<a href="#">AbouL us</a>
</p>


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? H"

<p>CopyrlghL copy, LnLhuslasLlca mlddoL, ueslgn: Luka Cvrk, <a href="hLLp://www.solucl[a.com"
LlLle="lree CSS 1emplaLes">Solucl[a</a></p>
</dlv>
</dlv>
</body>
</hLml>

LxLlCAClCn uLL CCulCC

Ln esLa ocasln en Lu cdlgo esLa una llnea subrayada de ro[o la cual es:
<form name="form1" acLlon="Sv_men" meLhod="posL">
Culero que noLes la propledad acLlon, su valor es Sv_men y el meLodo que uLlllza es un posL.
La palabra Sv_men es un servleL que haremos mas delanLe, esLe servleL nos permlLlr reclblr Lodos los valores que
mandamos con el meLodo posL del form1, y asl, poder obLener los daLos necesarlos para poder reallzar nuesLros
comenLarlos.

Aqul es donde apllcaremos lo que hemos esLado vlendo en clases de manera unLanLo mas comple[a, la cual no de[a
de ser lo mlsmo.


1F1CGHGHI=

O1JPC"L MN1 GI#1JO"C 1K GIPHQI KHJ1" " KHJ1" HJPHG"JPI MN1 1L G"P" "OCHUNOI P1 WO#KR G"P"
VNJGHIJ I $CIG1PH#H1JOIR "LH GI#I K" P1GK"C"GHIJ P1 F"S"U1"JLR KK"#"P"L " L1CSK1OL 1OG.

"JO1L P1 GI#1JX"C " GI#1JO"CR GK"LHVHG" 1K GIPHQI GIJ KIL GIKIC1L MN1 L1 O1 HJPHG"CIJ "K HJHGHI
P1K #"JN"K $"C" MN1 $N1P"L GI#$C1JP1C #1FIC 1LO1 GIPHQI.

JIO"= 1LO1 GIPHQI O1JPC" MN1 L1C H#$C1LI T 1JOC1Q"PI 1K PH" P1 1JOC1Q" P1K $CIT1GOI VHJ"K.



















9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? H#

2.17.S CkLACICN DL LCS SLkVLL1S
1.- ve a la paleLa proyecLos y despllega la carpeLa Source ackages.

2.- Ahora da cllc derecho en Source ackages, selecclona new y despues da cllc en !ava ackage para crear un nuevo
paqueLe llamado servleLs.

3.- 1e aparecer un venLana como la que esLa deba[o, en la cual deberas poner el nombre de la carpeLa o paqueLe.
ara esLo en el aparLado ackage name escrlbe servleLs.

4.- da cllc en flnlsh









9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? H!

3.- una ves creado el paqueLe servleLs da cllc derecho en el y da cllc en new, despues selecclona ServleL para crear
un nuevo archlvo Llpo servleL.

6.- uel menu emergenLe en el aparLado Class name escrlbe Sv_men" y da cllc en flnlsh para que neLbeans Le cree
un nuevo servleL.

7.- del cdlgo que resulLe susLlLuyelo por el slgulenLe:
/*
* 1o change Lhls LemplaLe, choose 1ools 1emplaLes
* and open Lhe LemplaLe ln Lhe edlLor.
*/
package servleLs,


lmporL com.mysql.[dbc.ConnecLlon,
lmporL [ava.lo.*,

lmporL [ava.sql.urlverManager,
lmporL [ava.sql.8esulLSeL,
lmporL [ava.uLll.logglng.Level,
lmporL [ava.uLll.logglng.Logger,
lmporL [avax.servleL.*,
lmporL [avax.servleL.hLLp.*,
lmporL [ava.uLll.uaLe,

/**
*
* [auLhor gra[o
*/
publlc class Sv_men exLends PLLpServleL [


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HC


/**
* rocesses requesLs for boLh P11 <code>CL1</code> and <code>CS1</code> meLhods.
* [param requesL servleL requesL
* [param response servleL response
*/
proLecLed vold process8equesL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
response.seLConLenL1ype("LexL/hLml,charseL=u1l-8"),
rlnLWrlLer ouL = response.geLWrlLer(),
Lry [
/* 1CuC ouLpuL your page here
ouL.prlnLln("<hLml>"),
ouL.prlnLln("<head>"),
ouL.prlnLln("<LlLle>ServleL Sv_lnscrlpclon</LlLle>"),
ouL.prlnLln("</head>"),
ouL.prlnLln("<body>"),
ouL.prlnLln("<h1>ServleL Sv_lnscrlpclon aL " + requesL.geLConLexLaLh () + "</h1>"),
ouL.prlnLln("</body>"),
ouL.prlnLln("</hLml>"),
*/
flnally [
ouL.close(),



publlc vold geLConnecLlon(PLLpServleL8equesL requesL, PLLpServleL8esponse response) [
SLrlng mensa[e = "",
lnL edo = 0,
Lry [
ConnecLlon conn = null,
lnL val = 0,
SLrlng cons_concaL2 = "",
SLrlng bd="bd_blog",
SLrlng logln = "usuarlo",
SLrlng password = "usuarlo",
SLrlng url = "[dbc:mysql://localhosL/",

lnL reg = 3,
lnL zz =0,
lnL zz2 =0,
lnL ss = 0,
lnL ss1 =0,
lnL aa = 0,

SLrlng LexLo = requesL.geLarameLer("LexLarea"),
SLrlng nombre = requesL.geLarameLer("nom"),
SLrlng usuarlo = requesL.geLarameLer("usu"),
SLrlng sLaLus = requesL.geLarameLer("sLaLus"),
SLrlng Lema = requesL.geLarameLer("Lema"),
SLrlng ld_usu = requesL.geLarameLer("ld_usu"),
uaLe fecha = new uaLe(),

SLrlng ld_men="",
SLrlng hora = SLrlng.valueCf(fecha.geLPours()),
SLrlng mln = SLrlng.valueCf(fecha.geLMlnuLes()),
SLrlng horaflnal = (hora+":"+mln),

SLrlng lnserL = "lnSL81 ln1C mensa[es (ld_mensa[e, fecha, mensa[e, hora) vALuLS (defaulL, S?SuA1L(), " +
LexLo + ", " + horaflnal+ "),",


Lry [


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HD


Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
lf (conn != null) [
Lry [
[ava.sql.SLaLemenL sLm = conn.creaLeSLaLemenL(),
sLm.execuLeupdaLe(lnserL),
caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0) [
zz=1,// response.send8edlrecL("blenhecho.[sppaglna=cal_par_maesLro.[sp"),
else lf (edo == 1) [
zz2=2, //response.send8edlrecL("error.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),


//--------------------------------------------------------------------------
Lry [


Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),

lf (conn != null) [
Lry [
SLrlng query = "selecL ld_mensa[e from mensa[es where mensa[e =" + LexLo + " ",

[ava.sql.SLaLemenL sL = conn.creaLeSLaLemenL(),
8esulLSeL rs = sL.execuLeCuery(query),

whlle (rs.nexL())
[
ld_men = rs.geLSLrlng("ld_mensa[e"),


caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0) [
ss=1, // response.send8edlrecL("blenhecho.[sppaglna=cal_par_maesLro.[sp"),
else lf (edo == 1) [


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HE

ss1= 2, //response.send8edlrecL("error.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),



//___________________________________________________________________________
SLrlng selecL1 = "",

Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
[ava.sql.SLaLemenL sLmL = conn.creaLeSLaLemenL(),
lf (conn != null) [
Lry [
SLrlng lnserLar = "lnSL81 ln1C mensa[e_Lema vALuLS (defaulL," + Lema + ", " + ld_men+ "),",

sLmL.execuLeupdaLe(lnserLar),

caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0 zz==1 ss== 1) [
aa=1,
else lf (edo == 1 zz2==2 ss1== 2) [
aa=2,


//___________________________________________________________________________
SLrlng selecL2 = "",

Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
[ava.sql.SLaLemenL sLmL = conn.creaLeSLaLemenL(),
lf (conn != null) [
Lry [
SLrlng lnserLar = "lnSL81 ln1C usu_mensa[e vALuLS (defaulL," + ld_usu + ", " + ld_men + "),",

sLmL.execuLeupdaLe(lnserLar),

caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HF

edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0 zz==1 ss== 1 aa==1) [
response.send8edlrecL("Lemas.[spld="+Lema+"nom="+nombre+",usuarlo="+usuarlo+""),
else lf (edo == 1 zz2==2 ss1== 2 aa==2) [
response.send8edlrecL("bad.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),



caLch (lCLxcepLlon ex) [
Logger.geLLogger(Sv_men.class.geLname()).log(Level.SLvL8L, null, ex),







proLecLed vold doCeL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
geLConnecLlon(requesL, response),


/**
* Pandles Lhe P11 <code>CS1</code> meLhod.
* [param requesL servleL requesL
* [param response servleL response
*/
proLecLed vold doosL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
geLConnecLlon(requesL, response),


/**
* 8eLurns a shorL descrlpLlon of Lhe servleL.
*/
publlc SLrlng geLServleLlnfo() [
reLurn "ShorL descrlpLlon",

// </edlLor-fold>


8.- C8LAClCn uLL SL8vLL1 Sv_Lema, uLlllzando los pasos con los cuales creamos el servleL Sv_men crea el servleL
Sv_Lema, recuerda susLlLulr el cdlgo que Le genera neLbeans por el que esLa de ba[o de esLe LexLo.

/*
* 1o change Lhls LemplaLe, choose 1ools 1emplaLes
* and open Lhe LemplaLe ln Lhe edlLor.
*/
package servleLs,


lmporL com.mysql.[dbc.ConnecLlon,
lmporL [ava.lo.*,

lmporL [ava.sql.urlverManager,
lmporL [ava.sql.8esulLSeL,
lmporL [ava.uLll.uaLe,
lmporL [ava.uLll.logglng.Level,
lmporL [ava.uLll.logglng.Logger,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HG

lmporL [avax.servleL.*,
lmporL [avax.servleL.hLLp.*,

/**
*
* [auLhor gra[o
*/
publlc class Sv_Lema exLends PLLpServleL [

/**
* rocesses requesLs for boLh P11 <code>CL1</code> and <code>CS1</code> meLhods.
* [param requesL servleL requesL
* [param response servleL response
*/
proLecLed vold process8equesL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
response.seLConLenL1ype("LexL/hLml,charseL=u1l-8"),
rlnLWrlLer ouL = response.geLWrlLer(),
Lry [
/* 1CuC ouLpuL your page here
ouL.prlnLln("<hLml>"),
ouL.prlnLln("<head>"),
ouL.prlnLln("<LlLle>ServleL Sv_lnscrlpclon</LlLle>"),
ouL.prlnLln("</head>"),
ouL.prlnLln("<body>"),
ouL.prlnLln("<h1>ServleL Sv_lnscrlpclon aL " + requesL.geLConLexLaLh () + "</h1>"),
ouL.prlnLln("</body>"),
ouL.prlnLln("</hLml>"),
*/
flnally [
ouL.close(),



publlc vold geLConnecLlon(PLLpServleL8equesL requesL, PLLpServleL8esponse response) [
SLrlng mensa[e = "",
lnL edo = 0,
Lry [
ConnecLlon conn = null,
lnL val = 0,
SLrlng cons_concaL2 = "",
SLrlng bd="bd_blog",
SLrlng logln = "usuarlo",
SLrlng password = "usuarlo",
SLrlng url = "[dbc:mysql://localhosL/",

lnL reg = 3,
lnL edo1=0,
lnL zz =0,
lnL zz2 =0,
lnL ss = 0,
lnL ss1 =0,
lnL aa = 0,
lnL bb=0,

SLrlng usuarlo = requesL.geLarameLer("usu"),
SLrlng caLegorla = requesL.geLarameLer("caLegorla"),
SLrlng Lema = requesL.geLarameLer("Lema"),
SLrlng ld_caL = requesL.geLarameLer("ld_caL"),

uaLe fecha = new uaLe(),

SLrlng ld_Lema="",


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HH

SLrlng ld_usu="",
SLrlng hora = SLrlng.valueCf(fecha.geLPours()),
SLrlng mln = SLrlng.valueCf(fecha.geLMlnuLes()),
SLrlng horaflnal = (hora+":"+mln),

SLrlng lnserL = "lnSL81 ln1C Lema (ld_Lema, Lema, fecha) vALuLS (defaulL,"+Lema+", S?SuA1L()),",


Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
lf (conn != null) [
Lry [
[ava.sql.SLaLemenL sLm = conn.creaLeSLaLemenL(),
sLm.execuLeupdaLe(lnserL),
caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0) [
zz=1,// response.send8edlrecL("blenhecho.[sppaglna=cal_par_maesLro.[sp"),
else lf (edo == 1) [
zz2=2, //response.send8edlrecL("error.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),


//--------------------------------------------------------------------------
Lry [


Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),

lf (conn != null) [
Lry [
SLrlng query = "selecL ld_Lema from Lema where Lema =" + Lema + " ",

[ava.sql.SLaLemenL sL = conn.creaLeSLaLemenL(),
8esulLSeL rs = sL.execuLeCuery(query),

whlle (rs.nexL())
[
ld_Lema = rs.geLSLrlng("ld_Lema"),


caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? HI

SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0) [
ss=1, // response.send8edlrecL("blenhecho.[sppaglna=cal_par_maesLro.[sp"),
else lf (edo == 1) [
ss1= 2, //response.send8edlrecL("error.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),



//___________________________________________________________________________
SLrlng selecL1 = "",

Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
[ava.sql.SLaLemenL sLmL = conn.creaLeSLaLemenL(),
lf (conn != null) [
Lry [
SLrlng lnserLar = "lnSL81 ln1C Lema_caL vALuLS (defaulL," + ld_caL + ", " + ld_Lema+ "),",

sLmL.execuLeupdaLe(lnserLar),

caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0 zz==1 ss== 1) [
aa=1,
else lf (edo == 1 zz2==2 ss1== 2) [
aa=2,


//___________________________________________________________________________
//--------------------------------------------------------------------------
Lry [


Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),

lf (conn != null) [
Lry [
SLrlng query = "selecL ld_usuarlo from usuarlo where correo =" + usuarlo + " ",

[ava.sql.SLaLemenL sL = conn.creaLeSLaLemenL(),
8esulLSeL rs = sL.execuLeCuery(query),

whlle (rs.nexL())


9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? I"

[
ld_usu = rs.geLSLrlng("ld_usuarlo"),


caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0) [
bb=1, // response.send8edlrecL("blenhecho.[sppaglna=cal_par_maesLro.[sp"),
else lf (edo == 1) [
bb= 2, //response.send8edlrecL("error.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),


//----------------------------------------------------------------------------------------------------------------------
SLrlng selecL2 = "",

Lry [

Class.forname("com.mysql.[dbc.urlver").newlnsLance(),
conn = (ConnecLlon) urlverManager.geLConnecLlon(url + bd, logln, password),
[ava.sql.SLaLemenL sLmL = conn.creaLeSLaLemenL(),
lf (conn != null) [
Lry [
SLrlng lnserLar = "lnSL81 ln1C usu_Lema vALuLS (defaulL," + ld_usu + ", " + ld_Lema + "),",

sLmL.execuLeupdaLe(lnserLar),

caLch (LxcepLlon excepLlon) [
edo = 1,
mensa[e = excepLlon.geLMessage(),

conn.close(),

caLch (1hrowable ex2) [
conn = null,
SysLem.ouL.prlnLln("*********L88C8 Ln LA CCnLxlCn**********"),
SysLem.ouL.prlnLln("*************MLnSA!L L88C8 = " + ex2.geLMessage()),
SysLem.ouL.prlnLln("*************CAuSA L88C8 = " + ex2.geLMessage()),
edo = 1,
mensa[e = ex2.geLMessage(),

lf (edo == 0 zz==1 ss== 1 aa==1 bb==1) [
response.send8edlrecL("rnsa[es.[spcaLegorla="+caLegorla+""),
else lf (edo == 1 zz2==2 ss1== 2 aa==2 bb==2 ) [
response.send8edlrecL("bad.[sppaglna=cal_par_maesLro.[sperror=" + mensa[e),



caLch (lCLxcepLlon ex) [
Logger.geLLogger(Sv_Lema.class.geLname()).log(Level.SLvL8L, null, ex),




9:; <=+>?2.(- ;/(?+= 7+(0?.- 91'+@ 5AB)2? I#







[Cverrlde
proLecLed vold doCeL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
geLConnecLlon(requesL, response),


/**
* Pandles Lhe P11 <code>CS1</code> meLhod.
* [param requesL servleL requesL
* [param response servleL response
*/
[Cverrlde
proLecLed vold doosL(PLLpServleL8equesL requesL, PLLpServleL8esponse response)
Lhrows ServleLLxcepLlon, lCLxcepLlon [
geLConnecLlon(requesL, response),


/**
* 8eLurns a shorL descrlpLlon of Lhe servleL.
*/
[Cverrlde
publlc SLrlng geLServleLlnfo() [
reLurn "ShorL descrlpLlon",

// </edlLor-fold>