Tomcat Application Server Standard Operation...

Post on 22-May-2020

17 views 0 download

Transcript of Tomcat Application Server Standard Operation...

COSA-SOP-04-004 Version 1.0

Tomcat�� � � � � � �

� � � � �

Tomcat Application Server

Standard Operation Procedure

��������

CHINESE OPEN SYSTEMS ASSOCIATION

� � � � � � � � �

1

���������

���� �������������� ����������� �

!#"�$�%�&�')(�*,+.-0/21�354!#"�$�%�&�')(�*,+.-0/21�354!#"�$�%�&�')(�*,+.-0/21�354!#"�$�%�&�')(�*,+.-0/21�354 -�6�7-�6�7-�6�7-�6�7

8)9

:�;�<>=�? @)A

COSA-SOP-03-001 B#C�D�E�F ����G H @ � :�;5<>I�J K�L M

COSA-SOP-03-002 Linux @ ��N#O G H @ � :�;5< P,QSR

COSA-SOP-03-003 T�U�V)WYX2Z.[ G H @ � :�;5< \�]�^

COSA-SOP-03-004 _.`�a�b�V�WYX>Z>[ G,H @ � :�;5< ced5f

COSA-SOP-03-005 g�h�i�j.V�WYX>Z>[ G,H @ � :�;5< k�l�m

COSA-SOP-03-006 g#n�o�V)WpX>Z.[ G,H @ � :�;�< \�]�^

COSA-SOP-04-001 OpenWebmail Z.[ G,H @ � :�;�< \�q5r

COSA-SOP-04-002 PHPNUKE s.t�u2v N#O G,H @ � :�;5< w�xzy

COSA-SOP-04-003 Linux {)|#} G,H @ � :�;�< K�L M

COSA-SOP-04-004 Tomcat ~5� V�W N#O G,H @ � :�;�< \�]�^

COSA-SOP-04-005 OpenOffice.orgG,H @ � :�;5< ��^zQ

�5� 6�5� 6�5� 6�5� 6

� ��� �#�z�)� B#C N�O��z� vz�)� ���

���)�#� T���� � � �e�

�p������p������p������p�����

����� � � g �0N  )¡ ¢.£ � �e¤ � g �0N  �¡ ¥)¦�¦ §�¨©�>ª.«�¬z­,®�¯©° I � v

±± ±± ²² ²²

³#´ µ.¶¸· ���������� ¹�º µ.¶¸·¼»5½>¾�¿ g#À ����Á.Â)� Ã�Ä µ.¶¸· �2�z��� B#C N#O����

ÅÇÆÅÇÆÅÇÆÅÇÆ

Tomcat Application Server G,H @ � :�;�< ..............................................................0 È�É�Ê

TomcatN�O c2Ë .............................................................................................2

1.1 Tomcat Ì �.Í .................................................................................................2 1.2 Î Ä µ>¶ .........................................................................................................2 1.3 ÏSÌ2Ð�Ñ©Ò .....................................................................................................3 1.4 Óz�.Ô0Õ .........................................................................................................3 È.Ö�Ê

× Ø�Ù.Ú ..........................................................................................................4 È Ê Û�Ü ..................................................................................................................5

3.1 Û�Ü Jakarta Tomcat ........................................................................................5 3.1.2 Û)Ü jpackage Ð Tomcat ..................................................................8

3.2 Tomcat Ì�Ý �ßÞáà.âßÞ¼ã ä Ð�å�Ý � ....................................................11 3.2.1 Ý � Tomcat.....................................................................................11 3.2.2

ãzäTomcat.....................................................................................12

3.2.3 æ2ç�Ý � Tomcat.............................................................................13 3.4 Tomcat Û�Ü�è5Ì à.â ................................................................................17 È�é�Ê

[�ê Ð�u2v):�; ............................................................................................19 4.1 Web ~��>:,ë)Ì>ì)í�î,ï ......................................................................19

4.1.1 HTTP ð À � ê Ì>ì)í�î,ï ..........................................................19 4.1.2 ñ Java ò�ì�ó5Ì Web ~5�2:,ë)ô b ...........................................20 4.1.3 Servlet Ì.ì�í�õ�@ D v ................................................................21

4.2 Web ~5�>: ë�Ì�özØ�Ð ��÷ ....................................................................22 4.2.1 Web ~5�>: ë�Ì�ö�Ø .....................................................................22 4.2.2 ø ����÷ ~5�>:zë ..........................................................................23 4.2.3 ù©� war ú ..................................................................................26

4.4 Tomcat Ì)u#v Script Ð ��û ....................................................................26 4.4.1 u#v Tomcat Ì shell script .............................................................26 4.4.2 Tomcat Ì)u#v�Ë�ü .........................................................................28 È>ý�Ê

~5� ��þ ........................................................................................................32 5.1 JSP ÿ ¾ ....................................................................................................32

5.2 MySQL+phpmyadmin ..............................................................................42 5.2.1 Ý � MySQL Ð [�ê��2F ..............................................................42 5.2.2 Û)Ü phpMyAdmin..........................................................................42

5.3 �����,Ñ þ :,ë .......................................................................................47 5.3.1 ����� : ë�� ..............................................................................47 5.3.2 ����� : ëzs.t ..............................................................................48

5.4 ,� JFreeChart ��� O���� � .................................................................68 5.4.1 ����������� � ..............................................................................69

1

5.4.2 ��� 3D ������� � .......................................................................70 5.4.3 ������� �� ..................................................................................72 5.4.4 ��� O���� ......................................................................................73 È���Ê ��� Ð��2ç�:); ..........................................................................................77

6.1 "! ��� .....................................................................................................77 6.2 �>ç�:�; .....................................................................................................77 6.3 #�¬0æ�$.ú � .............................................................................................77 È&%�Ê

'"( �&)�* ....................................................................................................78 È�+zÊ ,�- g#n ........................................................................................................84

2

������������ Tomcat � � � �� � � �� � � �� � � �

1.1 Tomcat������������

Tomcat . É�/ B#C�D�E�F Þ õ Ä servlet 0 JSP Web ~5� � b Ì>ì�1 JavaÌ Web ~�� � b t X32 Tomcat

�Apache-Jakarta 4�5�6�7�8 �.Í � B#C�9�D

E�F Java 4;:�Ì�<"=�A Â Ä ��� 2 Tomcat Server .�>? servlet 0 JSP @�Ñ ÂÄ�Ã�Ä ÌBADC�E�F�G�HIzñ�J Tomcat Server K�L Ä3M Apache-Jakarta @)Ñ�NO�P �RQTS�U � ~�� � b�W�V�X $�W 2 X�Y[Z]\ È�É�/ Java servlet container .R^�_�¯0°2Ì Java Web Server A`�a Ì JWS

O É�b Ì U � V)WYXdc�e Ì� Q Agf �ih JAVA 8�j�k�lmAgY�ñ�8

j�n�o QTS ¿ Ì�p�q 2 1996

� � Q&rRs Ì Java servlet container t&ou�v5Ì�w�x;Azy�{| ApacheÌ JServ 0 CERN/W3C Ì Jigsaw A ò�} /�~�� Ì B#C�D�E�F Ì Java servlet container 2

1997�

JAVA � h k�lBA Sun Î�� È�É�� Ì Java Servlet Development Kit(JSDK) 2 y�6�� JSP Ì���� servlet container �©s�� HTTP 1.0 Web server 2� a ^�_ B#E �� JAVA Ag�5� r�sT��� Ì��)ë 2 1998

� �>ç M JSP @���Ag����JSDK ì�ó��[A�� Sun ¯0°2Ì James Duncan Davidson æ�� M JSDK V)W

X�� � Ì�� �&����A����&H. Tomcat Ì�s"�)Î � Í Ì�A���? servlet 0 JSP Ìî�ïmA�N8� �­�ù5� JWS Ì2:,ë F A � E Tomcat ¡�¢ Apache

� � A B#C�DE�F Ì Tomcat

� �i£ n¤ � Ì�6�7 2 ¡�� Apache 0 Sun Ì�6�7BA¥0�í�¦�§�¨Ì�©�rmAªk�ò ~ v�«�Ì )�¬ � � 2

1.2 � � � �� � � �� � � �� � � �

Tomcat Application Server G H @ � :�;5<®­ Tomcat Application Server

Standard Operation Procedure A ñ � c?�í�:�;5<R¯>Ì#Πı° ��� µ.¶ .Y�2��)� B#C N�O��z� 2

3

1.3 � � �� � �� � �� � �

í�:�;�<)Ì.Ô0Õ#Ó�² É�b Ì�ù©�>A�Ð N#O u2v�A 28�³Ì&�)ë � � i Z´��µ

@�¶�·5ÌT¸5ë Â Ä A¹� c É�b ¢;º�Ì#ù5�>A 2 í�:�;5<�»;� Ê�¼ Û

³| � ·

� È�É)Ê

Tomcat c2Ë�½ Ë�¾ Tomcat Ì �.Í 2 �

È.Ö�Ê × Ø�Ù.Ú�½ c�¿ Tomcat À�@ ��Á� 2 �

È Ê Û�Ü�½ Ã�¶�J5^ Tomcat Û�Ü�¶�· 2 �

È�é�Ê [�ê Ð�u2v�:�;�½ Ë�¾ Tomcat Ì)u2v�Ë�ü 2 �

È>ýzÊ ~5� ��þ ½ Ë�¾ Tomcat Ì�©�r 2 �

È��)Ê ��� Ð��.ç�:�;�½ J5^ Tomcat Ì�#�¬��)ë 2 �

È&%�Ê '"( �&)�* ½ c�¿�ù©����I�r�Ä�ozÌ�Å�Æ.Ð )R¬ ��ë 2 �

È�+ Ê ,�- f�ÇȽ �Éeí�:�;�<�Y�,�-�À T�U�2

1.4 � � �� � �� � �� � �

í�:�;�<)Ì�Ó��.ÔpÕ#ò û #�ì)í�@ �zN#O u2v�Ê ïmA�Ë�ù©� Tomcat @ òInternet Ì Intranet s>tzu2v N#OÍ �.Ì�ÎRÏ N#O u2v ¿;Ð 2 Y�ù©��Ì"Ñ � Í �. ñ x86 ( IA32)

N#O ò�ì H 2 í�:�;�<�Y���)Ì2@ �zN#O ò RedHat A �ÒhTomcat I�Û)Ü ��Ó � Ì2@ �zN#O �BA ù5��y�{�@ �zN�O Ì>Û)Ü ¿�Ð K�I�Û���ÔÕ E�< 2

4

�� ��� ��� ��� � � � � � � � � �

� � / Ê�¼ F�GÖ�×�J Tomcat Û�Ü�×zÌ H # � @ØAgyp��ÙÛÚ Í �SÐ � Ñ �Ì�Ü�Ý 2ßÞ�à Tomcat Û�Ü�8 Ó�á�â Aãf�. � Û�Ü�À�×ä&.5ÙT-&å5ñ2Ð�@�æçA þ|�Ñ � Ì�è � A�Y�$�Û�Ü Ì2@ ��N#ORé�é 2

� Û�Ü�À�×êAªë�ìí�î�ï�ðòñ Û�Ü&W�@ ��N#O 2 ízf b Y�ù©�#@ �zN�O òRed Hat ÌT4�5 B Î©Ì Fedora Core 2 ò.@ � N#O A Õ A�I ñ�H ��ó&ô�õ Ì2@�zN�O�Â Ä Û�ÜöA Û�Ü�:�; �&÷�ø � Aúù�.)­�û�ÿ ¾ I�r � ­û

��ü¨ 2

Ü,� Fedora Core 2 ò�@ �zN#O Ì Õ AöAªI ñ��);±Ô Õ ñ �&ý ¼ A ñþ�k

Tomcat Û)Ü&K�Izñ�,�-)í �z� ø±ÿ Ì SOP Â Ä Û�Ü�:�; 2

5

� �� �� �� � � �� �� �� �

­����R�)ë�Izñ>Û�Ü�0 Ã�Ä Tomcat 2 ~�� Ì�� ¾ . �� Ð Ã�Ä ñ8���

ÌÖ ¶ ô � 2 Tomcat í�î�Û�Ü ~ ç,Ì JavaÃ�Ä Á�Â

(JRE) 2 í,<>Û)Ü Ì JAVA SDK.�ò 1.4.2_06

� íöA C2ò ~ ç Ì Tomcat 5.0.28 í�î�ù5� JRE �r�þ�k>Ý � 2

3.1 � �� �� �� � Jakarta Tomcat

3.1.1 Û�Ü Java SDK � �� �� �� �

1 �� ����������� Java SDK 1.4.2.06 ���http://java.sun.com/

���Java SDK 1.4.2.06

� ·

java.sun.com T�U

6

� · ���J2SE SDK

� �� �� �� �2 �� ����������� Java SDK 1.4.2.06

[root@ossc tmp]#chmod +x j2sdk-1_4_2_06-linux-i586-rpm.bin

[root@ossc tmp]#./j2sdk-1_4_2_06-linux-i586-rpm.bin

É�� ����� ^ � ü

JAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK), STANDARD

EDITION, VERSION 1.4.2_X

SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE

SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION

THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY

CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS

(COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT

CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU

ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY

SELECTING THE "ACCEPT" BUTTON AT THE BOTTOM OF THE

7

AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE

TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE

AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT

CONTINUE.

1.DEFINITIONS. "Software" means the identified above in

binary form, any other machine readable materials

Do you agree to the above license terms? [yes or no]

yes ���� �������� yes

Unpacking...

Checksumming...

0

0

Extracting...

UnZipSFX 5.40 of 28 November 1998, by Info-ZIP (Zip-Bugs@lists.wku.edu).

inflating: j2sdk-1_4_2_06-linux-i586.rpm

Done.

[root@ossc tmp]# rpm -ivh j2sdk-1_4_2_06-linux-i586.rpm

Preparing... ########################################### [100%]

1:j2sdk ########################################### [100%]

�� rpm –ql j2sdk I���� java Û)Ü,Ì �!

[root@ossc tmp]# rpm -ql j2sdk |more

/usr/java/j2sdk1.4.2_06/COPYRIGHT

/usr/java/j2sdk1.4.2_06/LICENSE

8

/usr/java/j2sdk1.4.2_06/README

/usr/java/j2sdk1.4.2_06/README.html

/usr/java/j2sdk1.4.2_06/THIRDPARTYLICENSEREADME.txt

/usr/java/j2sdk1.4.2_06/bin

/usr/java/j2sdk1.4.2_06/bin/HtmlConverter

ò M#" ¢�Ð [�ê � c A F�G� � É�/ soft link $�� Java SDK Û�Ü ÌYÏ&% 2

[root@ossc java]# ln -s /usr/java/j2sdk1.4.2_06/ /usr/java/j2sdk

[root@ossc java]# ls -l

total 8

lrwxrwxrwx 1 root root 24 Oct 15 14:48 j2sdk -> /usr/java/j2sdk1.4.2_06/

drwxr-xr-x 8 root root 4096 Oct 15 14:40 j2sdk1.4.2_06

� �� �� �� �

3 �� ��('*),+-*.0/'*),+-*.0/'*),+-*.0/'*),+-*.0/ Java SDK 1.4.2.06 132

/etc/profile ~ è¡�¢ � �f4

JAVA_HOME="/usr/java/j2sdk"

export JAVA_HOME

æ>ç�5�¢ A à è Ã�Ä echo $ JAVA_HOME 63� Á�Â87 S .:9;�< 2

[root@ossc root]# echo $JAVA_HOME

/usr/java/j2sdk

3.1.2���� � �� �� �� � jpackage���� Tomcat

http://www.apache.org/dist/jakarta/tomcat-5/ A ��� Jakarta Tomcat Ì LinuxQ

Í � Ö ¶ ô � íØ­ *.tar.gz ¯úA � E T!= �� Ì � í�. *.tar.gz ú � �©ë A |�>&� �� Mjakarta-tomcat-*.tar.gz A � Ö�{ )�?A@ o,BAC���« C Tomcat

¶ Ø 2

9

f�. *.tar.gz ú � �5ëØAED Ó3F u#v A�Y�ñ.í SOP �5�2Û�Ü rpm ú � �5ëBAHG���Tomcat rpm ú � ��ëØAªIzñ�o � T!= ��� ·

http://rpmfind.net/linux/RPM/sourceforge/s/sc/sciense/jakarta-tomcat-5.0-28.noarch.html

Û�Ü Tomcat rpm í�î�$ì�Û�Ü jpackage-utils rpm A Õ A�Izñ�owww.jpacakge.org

��� Ó�²�Ì � í 2 � �� �� �� �

1 �� �� ��� jpackage-utils rpm 8�Û�ÜÀ 2

� ·www.jpacakge.org T�U

� · ���

jpackage-utils-1.5.39-1jpp.noarch.rpm

�� rpm –ivh jpackage-utils-1.5.39-1jpp.noarch.rpm $�I�Û�Ü

[root@ossc tmp]# rpm -ivh jpackage-utils-1.5.39-1jpp.noarch.rpm

10

warning: jpackage-utils-1.5.39-1jpp.noarch.rpm: V3 DSA signature: NOKEY, key ID c431416d

Preparing... ########################################### [100%]

1:jpackage-utils ########################################### [100%]

� �� �� �� �

2 �� �� ��� jakarta-tomcat-5.0-28.noarch.rpm 8�Û�ÜÀ 2 Õ A � ozñ ��J = ��� jakarta-tomcat-5.0-28.noarch.rpm A�8& �� rpm –ivh $I�Û)Ü

http://rpmfind.net/linux/RPM/sourceforge/s/sc/sciense/jakarta-tomcat-5.0-28.noarch.html

[root@ossc tmp]# rpm -ivh jakarta-tomcat-5.0-28.noarch.rpm

Preparing... ########################################### [100%]

1:jakarta-tomcat ########################################### [100%]

Starting tomcat5: /usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

/usr/bin/rebuild-jar-repository: error: failed to set JAVACMD

[ OK ]

E a � É�� É K /usr/bin/rebuild-jar-repository: error: failed to set JAVACMD ÌLM À3N Aª��.;C2ò Tomcat Ì [,ê ú�O�j132Ì D C 2

� �� �� �� �3 �� ��132

Tomcat [�ê ú ­ /etc/tomcat5/tomcat5.conf ¯

[�ê JAVA_HOME= JAVA_HOME="/usr/java/j2sdk"

[root@ossc tmp]# vi /etc/tomcat5/tomcat5.conf

# tomcat5 service configuration file

# you could also override JAVA_HOME here

# Where your java installation lives

#JAVA_HOME="/usr/java/j2sdk1.4.2_04/" ���� JAVA_HOME P0QSRUTWVSX&Y[ZP0QSRUTWVSX&Y[ZP0QSRUTWVSX&Y[ZP0QSRUTWVSX&Y[Z

11

JAVA_HOME="/usr/java/j2sdk" ���� \�] Å[^�_0`\�] Å[^�_0`\�] Å[^�_0`\�] Å[^�_0` Java SDK �A�*a0b�c�A�*a0b�c�A�*a0b�c�A�*a0b�c

# You can pass some parameters to java

# here if you wish to

#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"

# Where your tomcat installation lives

# That change from previous RPM where TOMCAT_HOME

# used to be /var/tomcat.

# Now /var/tomcat will be the base for webapps only

CATALINA_HOME="/usr/share/tomcat5"

JASPER_HOME="/usr/share/tomcat5"

CATALINA_TMPDIR="/usr/share/tomcat5/temp"

JAVA_ENDORSED_DIRS="/usr/share/tomcat5/common/endorsed"

# What user should run tomcat

TOMCAT_USER="tomcat5"

� �� �� �� �4 �� �� æ>ç.Ý � Tomcat

[root@ossc tmp]# service tomcat5 restart waiting for processes to exit [ OK ] waiting for processes to exit Starting tomcat5: [ OK ]

3.2���� Tomcat�� ��� ��� ��� � ����� �� �� �� � ����� � � � �� � � � �� � � � �� � � � �

3.2.1���� � �� �� �� � Tomcat

Ý � Tomcata �d!e o /usr/share/tomcat5/bin Ïf% � A " ¢

./catalina.sh run�

./catalina.sh start

./startup.sh A�Ý É , ñ�� ��� ¾ ZÒI�k©.Ý � Tomcat 2

[root@ossc tmp]# /usr/share/tomcat5/bin/catalina.sh start

12

Using CATALINA_BASE: /usr/share/tomcat5 Using CATALINA_HOME: /usr/share/tomcat5 Using CATALINA_TMPDIR: /usr/share/tomcat5/temp Using JAVA_HOME: /usr/java/j2sdk

ñ���ò,g O Ý � Tomcat Ì�� ¾ A�|�>�.& �� rpm �)ë.Û)ÜöA�h �,i RedHatSystem V Ì)u2vR�)ë�j�² � É�k A Y5ñ�F�G�l�I� �� service tomcat5 start Ý�

Tomca server

[root@ossc tmp]# service tomcat5 start Starting tomcat5: [ OK ]

3.2.2���� � �� �� �� � Tomcat

`Tomcat Ý � a A ~:m �,n o���ü�F�G�YAo�Ì,p!q5Ì " É g#À A É:r k�©

Ý � Tomcat èBA ~m�H�r!s � 8008 t��!uAv T*w Ì W�V A�|�>$ ã ä TomcatÌ V�WYX A I ñ � Tomcat Ì�Ïf% � Ì /bin Ï&% � Ã�Ä � ü�Y�)Ìx$�IêAªHIzñk©zÌ ã � Tomcat Ì W�V M A�| � Y*y · ./catalina stop Ì�. ./shutdown.sh

[root@ossc tmp]# /usr/share/tomcat5/bin/catalina.sh stop Using CATALINA_BASE: /usr/share/tomcat5 Using CATALINA_HOME: /usr/share/tomcat5 Using CATALINA_TMPDIR: /usr/share/tomcat5/temp Using JAVA_HOME: /usr/java/j2sdk

13

3.2.3���� � � � � � � � � Tomcat

|:>�Ä�o � !z�Æ A I�r,Ù�$ æ>ç.Ý � Tomcat A f Tomcat 8�j,uAv0æ2ç�Ý� Ì�$�IöA Õ A�{5æ>ç�Ý � Tomcat ÌzÙ.ÚØAúùzÙTÖ Tomcatã ä è�å�Ý � 2

� Java Servlet Specification 8� �­8|�}@ ê Java servlet Ù�$�~ Q � a�� þ

ky � @�Ì a�� ®�} 28��Ù�$A��� Ã�Ä y � @5Ì servlet 8� �­��A� Java

Servlet Specification Ì�@ ê A Ó�G�r,� Tomcat � ¾ ãzä 2

� Java Servlet Specification K�$�Ú ` ã ä Tomcat

a A �:�:� servlet À�×êAservlet container í�î é�� Yz­zÌ servlet þ�k�Yz­�ä � Â Ä �2Ì � ÚØA Ìé�� É0��� ê Ì (container-specific) � a 2 Ô Tomcat AEm� a�a�� .,� /servlet

~ Q,� �!� 2 ` servlet É M L A ��N Ó r�þ�k�Ô � Ú)Ì W�V a A�h. � Tomcat

Í�� ê servlet ~ MW� Q Ì������ ���(���,���: ,¡¢�¤£�¥A¦§

Tomcat ¨ª©A« ��¬ ­:®�¯±°�² ��³ �µ´�¶�·!¸ Tomcat ¹ ¦ § ®�¯ ¨

� JVM º0¹»x¼�½8¾�¹,¿ÁÀW« � Java ¹ ¯*ÂxÃ*Ä�ÅÆ�Ç!È,É*ÊAË�ÌÎÍÐÏ�® »Ñ ¹A�:³ � (J2EE

�Ò «*Ó���¹ ¯*ÂÔ�Õ:Ö× ) ¨ÙØ � �¤ÚWÛ Java ¼�½8¾,ÜCPU Ý*¹�Þ ¯*ßA ¹!àá � ¼�½*¾�©:âAãxä±å�æ (blocked)

�(�:ç,è å�æ�éê ¨ ÚWÛ8¬�ë*ì0íÎ� ܼ!½ shutdown.sh �0î8ïð¹ ¯8Â0Ã:ñ:Ä�Å:Æ�Ç�ËAÌò�Tomcat

²8ó�ô »,õ:ö�ã ¦ § �ø÷ Tomcat ù Ä�Å:Æ�Ç�ËAÌ!¡úÍüûþý � õ:¹A�³Î¨ ¬�ÿ�����£�� Java ����� � ¦ § Tomcat « Æ�Ç�� © �:¹ú¨�� ý����â ¦ § Tomcat ¹���� ¯* ���A¯8Â8°�²:£�� ¡ ¹ ¯*Â���� ��� ¨

´ � Tomcat « ����©! �"  ¹ servlet container�#��¦ §�$�%'& � � TomcatÄ�ÅAÒ ã�ï:ð System.exit(0)

�µ´ � ¡�Ò�Ë�Ì (�°0²�) * � ö�â�+�,!Ü�-Áع JVM ºÐ¼!½ ¨/. ÷10 2 ¹ � Tomcat ã ¦ § � î�38¹0¼�½ 4 � î £ ��Ò�°² ¼�½ �,¡ ¹�576�� � VM © £�È98�ÊA�:  ¨ ´�¶�2�: � servlet © £1;�<�=ã�> VM

Ò â �  ¹�¼�½ 4 �@?�A7�Tomcat î�3�¹�¼�½�4�B ¦ § ��¨

� C ² î�38¹�D FE � G�H�I�J �

Java Servlet Specification © £ > servletK�L ¼�½�G!M�¹ONP� Java ¼�½8¾ ¨Q� R servlet;S<F=�T � ­ ¼�½8¾ ���

¼!½*¾�U�© £WV�XZY�[ ¹�\F]�^ AF_WÛ Tomcat ¹0¼�½*¾ ( `�a!D FE ��GH!I�J )

� ÷,¬ ã�> TomcatÒ â ¦ §7b ��Æ�Ç ¼�½ ¨

14

c�d�e!f `�g�Ü Fedora core2 �:¹�hWi�Ý�j�k�l Tomcat m 1. nPo shutdown.sh script p =Ц § ¹�q�r � `�s!î � m

t!u7vTomcat wyxFs�¹ bin wyx

./shutdown.sh

2. > Tomcat â È98ü¦ § �{zP8�|�}�ó�ô�ë ��³ ö�â ÈP8W¦ § ��~ ��¹ c��¦ § �:³������So ¯8Â�� $�%�&��W� ¹O�F� �@� $�%�&���� ¹���� ¯ ^ ÷� ��Ò�® Ü7����Ý � Tomcat

²�û������ ¹A��³ ö�ã ¦ § ¨

15

3. nPo ps q r ����Ü Tomcat JVM Ý���g ���±¹ Tomcat ½ ¯�� `�s���r�m ps aux | grep catalina.startup.Bootstrap

4. `�a���3���g Tomcat ½ ¯ Ü:¼�½ � ���v7�����

¨ �!� � ´ � Tomcat JVM� ��3 Ü�I�J�¹���³�¡ ¦ § �£¢ ©:â ²�� � ¡:�:  ¨ ñ SIGTERM ¤�¥�¦�§¢ Õ7¨ ¹�½ ¯ ��©!ª VM�:  ½ ¯ ( « É � ¢!¬ 3 È É ¹WnPo�­!® ì ) m¯`�s

��r�î � m

kill –SIGTERM <process-ID-list>

5. °1±

��²��¹�l�M ¨{`�a ( 3!���3¹ Tomcat JVM ½ ¯ � �F°O±

�!³!� �´ v � ��3 ½ ¯ � § ¨µ`�a ¬�ë ½ ¯�( Ü è ,Áº � �7¶ £ ¬�· ¹ ßAÂ�¸�¹¡�º m

kill –SIGKILL <process-ID-list>

6.��¢�É �

Tomcat JVMÒ j�¼�½3� � k�l�»�¹ Tomcat ½ ¯ m

t!u7vTomcat wyxFs�¹ bin wyx

./startup.sh

ÜF��¼�½ ¾!s �H¦ § ¹ ®�¯ ã�¿�À Ê�Á ½ � ÷Tomcat JVM ù*ã�Â�Ã Ê ¦§ ¨ Ò�®�Ä!Û á 8 ¹�½ ¾ ��¬,­¯�Å � � Æ8£ ��Ç

16

3.3 ���� Tomcat � � � �� � � �� � � �� � � �

`�a�È�­:«�À�o rpmß� D É Tomcat

� © £ o chkconfig ��r!> Tomcat ÜÊhi�k�l�� �QY l�k�l Tomcat

% ��¨ÌË�«�nPo�¹ « Jakarta Tomcat »�Í9Î1Ï�ÐSÑÒ ¹�D É ß� � î £�Ó�Ô�Ò ã0ÜÊhWi ºÕ3 ¬�· ¹ % � �Ö|�}�× l!Ø9�O-9ÙScript ¨

#chkconfig tomcat5 on

17

3.4���� Tomcat � � � �� �� � � �� �� � � �� �� � � �� �

��Ú�Û7�Ú D É � k�l Tomcat d � � � â!Üæ�«�� Ú�Û k�l � «�Ü�ÝSÞ & ºàß

" £ s8¹�á � m http://localhost:8008 ââ ââ ¢ © £Wãv`�s8¹�ä å

( æ�çW`�a ¢ 37è�¶ Port ¥ � «!nSo ¢ ¹ Port ¥ � Port ¥A© Ü server.xml ºà�v-9Ù�¹ Ô � )

[root@ossc tomcat5]# vi /etc/tomcat5/server.xml

<Connector port="8008"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

debug="0" connectionTimeout="20000"

disableUploadTimeout="true" />

é m Tomcat ê�ë�ìFí

18

é mÖê�ë JSP î�ï ¯8Â

é mÖê�ë JSP î!ï ¯8 � a

19

�� ��� ��� ��� � � � � � � � �� � � � � � �� � � � � � �� � � � � � �

4.1���� Web � � �� � �� � �� � � �� ! "�� ! "�� ! "�� ! "

4.1.1���� HTTP � � � �� � � �� � � �� � � �� � � �� � � �� � � �� � � �

HTTP ð Hypertext Transfer Protocol ñ «Zwàò0Ü Internet Ý!�So c�ó�ô ¹ z ¤ õ� 2 � ¨yö �!2 � HTTP z ¤ õ � I�J7÷�ø!ù Vú= HTTP ûµ«FüFýþð request ñ � ÿ d Ú $�%'& �7������� � a�¦�� HTTP û��W�Êý�ð response ñ �@����� M ß Â � m

� � ÷�ø!ù� Web

$�%�& p = «Fü � Web $�%'& ñ ã Ô kS� ­ »�á�� ¨

� � ®¬ ­ á�� � ÷�ø!ù�© £�ñ HTTP «7ü�¦�p�§ Web $�%�& ¨

� �

Web $�%'&�� v

HTTP «Fü� ��ñ7Á ½�������� �(��ñ ��� � a��OÉ ÚHTTP �W� ¨

� c�d �

Web $�%�& ã ñ HTTP �1��¦�p A ÷�ø�ù ¨�C ² ÷�ø!ù�� �

vHTTP

�W� �Web

$�%'& Uã7Ù�� ¬ ­ á�� � ÷�ø!ù�¹�¼�½�é ê ñÒ ã���� ¨

é4-1 m HTTP

z ¤ õ � ¹ �����

20

4.1.2���� ���� Java � � � �� � � �� � � �� � � �Web � � � � � �� � � � � �� � � � � �� � � � � �

Servlet « £ Java �� S� ��! ¹ $�%�& ù��So ¯8 Ñ�" ¨ Ü Web �Fo ¯*Â�#%$ º �'& © £�� . 0 CGI

¯*Â ¨{-�( 2 s � Servlet ¬ 3�s*)�\�+ m

� ¼�½�,.-%/ m10 ­ Servlet 2 Ä �7� ­�3 L ¹ û ¼�½*¾Sýþð thread ñ � ´�¶ ¼ ½�,4-*5 CGI

¯*Â%6¢� ù758(�9 � ¨ � Á "7:<;*=�m Servlet « £ Java � �>! � C ² «�?*@ Java ¹ ¯�Â�Ô�A.B U

© £DCFE ØP� =HG�Â�G!· ¹ Servlet ¨ � ¬ 3�I�Í9Îü¼�½�â�J m�K Ú Java

�L ¹DI�Í9Îxâ�J � Servlet M £�� M�Ü�� g�NDO Java ¹�Í9ÎWÝ ¨

P�Q Servlet R>SAî ��T � Servlet

|�} ¼�½ Û�U�­ ¿�V Ö:× �XW�ºY 2 �Servlet Container s é8Z�[ ý Servlet \ & Ü Web ��o ¯* º^]�_A¹.`:À m

é4-2 m Servlet \ & Ü Web �So ¯8Â º^]4_:¹.`À

21

é4-3 m J2EE � Servlet

� ÷�ø!ù� Web

$�%'& p = HTTP «FüA� � Web $�%�& ã�]!Ü

æ�«7ü�¡�\ m � `�a�«>a ê HTML bFícDd � Web

$�%'& ñ ã Y ½��e � ÿ d�f < �W��¤ g

� `�a.h>ivl ê cDd � Web

$�%�& ã ñ HTTP «Fükj�l�§ Servlet \ & � enm � a:ã�]!p.� Web

$�%�& � j Ú Web $!%�& ¦���÷�ø�ù ¨

4.1.3���� Servlet �� � � � !�� � � � !�� � � � !�� � � � !

> W�º4o�ã�ã Servlet \ & `�g���e HTTP «Fü m � Web $�%�& � �

v� ­ l ê

HTTP «Fü� ��ñ ã%j�l�§ Servlet \ & ¨ ¶ � Servlet \ & ã�k�l�� ­ ¹0¼ ½*¾

é4-4 m Servlet \ & ¡x¼�½8¾ � ç é

22

À�o0¼�½*¾ o �e HTTP «Fü�p�q!3 ) *�6 �4rtsvu Ä Ø�� ­ Servlet�

Servlet \ & ã�Ü

���w �

vHTTP «7ü� K�L � ­ Servlet ��� � ÿ d k�l7� ­ ¼�½

¾ú¨�Ïw �

vHTTP «FüA� � Servlet \ & �Ò�°�² K�L -þØ,¹ Servlet ��� � ÷ «�k�l

�Ï ­ ¼!½*¾ o % ��÷�ø!ù «7ü�¨ £ »x¼�½8¾ ð Multi-Thread ñ�¹ ßA o ¼!½ Servlet Ò�x © £WV7y Web �So ¯* ¹0¼�½�,�â � ù�© £�z = Web

$�% & ¹�hWiF{^| ð}� CGI

¯8Â>~ -�58(úñ ¨

é4-5 m Servlet \ & ¡A»�¼�½*¾ � ç é

4.2���� Web � � � �# $ % &� � � �# $ % &� � � �# $ % &� � � �# $ % &

4.2.1���� Web � � � � �" #� � � � �" #� � � � �" #� � � � �" #

Tomcat

V��Servet � JSP R>S3¹���M � ¬�ë R>S8« Sun ¹ Java 2 �4� Ò ð b

ö Y J2EE ñ�¹!���� ¨ J2EE « Ô�A4o >���o ¯*Â:Ô�Õ ­�Ü Æ�} ° � ¶�� b ¶Ò s � â��9çD� ´ � ��o ¯*Â�A���&��!~ R�S 2 ��o $�%'& ð¯������M J2EE RS3¹ ¯* ñª¨Q� ý�� Ú¶ wv� � �So ¯*Â��*£>��8 ¿ � � ©>���¹ ßAÂ�o �OÉ�mï�`F�OÉ Ú web �So ¯* Archive

� b �.�1�So ¯8Â ¹ Archive 4 ¨

� ýЬ ­ ¿ � ¹Êw � � Java Servlet R>S ��T ý Web Application Archive ¹W47�S Â��:�>$ ¨Q� ý nPo�����M ß�Â�Æ Ù!¹ Web �So ¯8 �{¢ ¹�47� |�}�>��Uë�� ï ��� `����4bFí�¹�wyx���� ��� ê 4 � óAó ¨

23

é4-6 m Servlet Web �Fo ¯* ¹�47���*�

` é 4-5 î � � b�í�© £k� Ü web �So ¯* ¹

Pwyx � b � g3¹>�Zw x ºò¨ é 4zP8 ã � Ü /images ¹��Zwyxúº � Ò�®¬ C!« ���F� �þ�ø÷�� �4��R � ¨ WEB-INF

wyx����7� ë ¡�\:¹,¿ � �� ¨ ì ] � classes wyx*«4� � java class 4�¹ Ê8ß �Æ f &�º « servletb « servlet î�n9o �!¡ class 4 �

JSP� b �9o ¯� ¹ ��¡ �

� ¨ � w lib w x*«.� � Jar ¹ Ê�ß�� ¬�ë 47� ã���������¹� �" ¨ c�d � web.xml«!î�¡ û ��¢>£.¤�4Êý�ð deployment descriptor ñ �¥& ��� web �So ¯� ¹ � ê ��So ¯* ¹H£.¤ �µ£�� ��g�NP�A¹�¦*§ Ô � ¨

-�( ÛF� ¡ ¹ web

$�%Ê& ¹%�e  � ñ b�¨8¹�¦�§ Ô � � "*b�¨Zwyx'¡ xml 47ðª©Ó � ��¢�£.¤�4Êñ#¹ 6 � 2 ��« � î�3�b�¨8¹�¦�§ Ô � B�� � b¨8¹W��¢7�%«��� ¨ ¬ ã�ö8¬ ç�­ ¹�G�M � ù�nM ñ ��o ¯* �� ��& �So $�%�& � b ?�A���&¹ ISP (F�7ö E ¨ ¹:¶�2 � � Tomcat ã Y l� ­ WEB-INF wyx 2 ¡�\ � £�® § oø!ù�¹>bFíWÝSÞ & � . �ª´�¶� ê c1¤ ð ©:â�����¯�¥° Y �4± à ñ Ò ã�>So�øã v ¨

4.2.2���� $ � % & � � � �$ � % & � � � �$ � % & � � � �$ � % & � � � �

Web ��o ¯* ¹Êwyx8© £�Ô ��Ü 47��hWi8¹1��g�Ð7��² Ò�® c 6:Ò² ñ�¬�ë wyx� " Tomcat ¹�w xúº ¨ ¬�· ²EÜ�� ¹ Tomcat£ D�É�(�»�¹ Ò ²¤ö Ò ã�³�´ &º ¨ ´,¶ ² £�× l�¹ ßA D É web �So ¯* C ° K�L wyx ��ñ î ° ¹�47�1±.§ Áo ����ñ���Ô � î�µ ¨

24

é4-7 m ��¢ Ö:×

' ( )' ( )' ( )' ( )

Ü ¶ î!ï º¶²X· ñ�¸ Y ØP� � ��¹���¼!½F� ­ Servlet ² ��M��º

��� m »�¼»�¼»�¼»�¼3 ½½ ½½X¾>¿¾>¿¾>¿¾>¿ MyFirstServlet ´ � MyFirstServlet

|�} ¼!½�Ü Servlet \ & ¡À² î £ · |�}AñMyFirstServlet.class ±�§

vTomcat

$�%�& ¹�Á � w x

1. Ü /Tomcat/webapps/ROOT/WEB-INF wyx7s K�L � ­ classes � w x ¨ 2. ñ

MyFirstServlet.class ±�§v

classess wyx7s ¨ 3. °�»�k�l Tomcat ¨ 4. Ü Web Ý�Þ & ¡Õß "�s�)>b>Â�m

http://localhost:8080/servlet/MyFirstServlet

' ( *' ( *' ( *' ( *

Ü ¶ î!ï º¶²X· ñ Ü MyFirstServlet ¡8Ã�"7� ­ doPost()

ß�Ç ²þwü¹,«�> MyFirstServlet â>Ä.�1� POST «Fü�¨Q� ývÅ ÷�ø�ù�p = POST «FüƲX· |�}T ��Ø9��� ­ SendPostRequest.html 47� ¨ »�¼»�¼»�¼»�¼

1 ½½ ½½ÈÇ7ÉÇ7ÉÇ7ÉÇ7É SendPostRequest.html <HTML>

ÊÌËÊÌËÊÌËÊÌË:

( ÍÏÎÑÐÏÒÔÓÖÕÔ×ÔØvÙÑÚÑÛMyFirstServlet.java

( ÍÏÎ javac ÓÖÕMyFirstServlet

( Ü MyFirstServlet.class ÝÏÞßTomcat àÏáÔ×Ïâ�ãvä^åÈæç

( èÏé Tomcat àÖáÖ×( êÖëÏìÖ×ÌíïîÔðMyFirstServlet

ñÔò1 óôØvÙ

MyFirstServlet.java

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class MyFirstServlet

extends HttpServlet {

public void

doGet(HttpServletRequest

request,

HttpServletResponse response)

throws

IOException, ServletException

{

response.setContentType("text/

html");

PrintWriter out =

response.getWriter();

out.println("<html>");

out.println("<body>");

out.println("<head>");

out.println("<title>Servlet

Exercise</title>"); õ õ õ÷ö øúù

25

<BODY> <FORM ACTION='/servlet/MyFirstServlet' METHOD='POST'> Enter your name: <INPUT TYPE='text' NAME='name'> <BR> <INPUT TYPE='submit' VALUE='Submit'> </FORM> </BODY> </HTML> »�¼»�¼»�¼»�¼

2 ½½ ½½ÈÇ7ÉÇ7ÉÇ7ÉÇ7É MyFirstServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyFirstServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Servlet Exercise</title>"); out.println("</head>"); out.println("<body>"); out.println("<B>Hello, " + name + " !</B>"); out.println("</body>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } } »�¼»�¼»�¼»�¼

3 ½½ ½½üû�ýû�ýû�ýû�ý MyFirstServlet.java

26

# javac MyFirstServlet.java »�¼»�¼»�¼»�¼

4 ½½ ½½X¾>¿¾>¿¾>¿¾>¿ MyFirstServlet ´ � MyFirstServlet |�} ¼!½�Ü Servlet \ & ¡þ² î £ · |�}Añ

MyFirstServlet.class ±�§v

Tomcat $�%�& ¹�Á � w x

1. Ü /Tomcat/webapps/ROOT/WEB-INF wyx7s K�L � ­ classes � w x ¨ 2. ñ

MyFirstServlet.class ±�§v

classess wyx7s ¨ 3. ñ

SendPostRequest.html ±.§v

/Tomcat/webapps/ROOT/ 4. °�»�k�l Tomcat ¨ 5. Ü Web Ý�Þ & ¡Õß "�s�)>b>Â�m

http://localhost:8080/SendPostRequest.html

4.2.3 + �+ �+ �+ � war,,,,

ÿ ÿ ¢ ©�nSo × l*¹ ßA ��¢���o ¯* ² x nSoxÜ servlet R�Súº î>£.¤8¹ web�So ¯*Â�� � 4 2 �OÉ>S Â�� 3 � ë�6 � ¨ Ä!Û Tomcat

÷�� ²�� ² ¹ 6 �«A©£�Y l���¢ m�� �:¹ WAR 4:© £ ´ ��±�§ A Tomcat ¹ webapps w x ºF² U:ãY l Ú ��î�µÀ² ÷0Ò�°�² ��g � ê Ô � ¨

`�a�nPo Tomcat ¹ Y l���¢ Û â ² ¢ © ñ »*¹ WAR 4�±�§

vTomcat ¹

webapps wyxúº o ��¢ & ¨ �Q � ê ¹ Ò ØSð Ü Ó�Ô ¹�½�¾�s ² � ��¢ »*¹ web

�So ¯*Â� ² Ò�° j�k�l Tomcat ñ , ¢ ù�©:â °�² j�k�l Tomcat ¨ ¨ Ün² ¢ �� © £ nPo4����Ü WAR 4κ0¹ web �So ¯* ¨

4.4���� Tomcat�' (�' (�' (�' ( Script ) * ) * ) * ) *

4.4.1���� - !- !- !- ! Tomcat���� shell script

È�­©!À�o rpm –ql ã jakarta-tomcat D É,Ü�� ë wyxFs m

[root@ossc tmp]# rpm -ql jakarta-tomcat /etc/init.d/tomcat5 /etc/logrotate.d/tomcat5 /etc/tomcat5… ….

27

/etc/tomcat5/server.xml /etc/tomcat5/tomcat-users.xml /etc/tomcat5/tomcat5.conf /etc/tomcat5/web.xml /usr/share/tomcat5/bin/catalina.50.bat /usr/share/tomcat5/bin/catalina.50.sh /usr/share/tomcat5/bin/catalina.bat /usr/share/tomcat5/bin/catalina.sh /usr/share/tomcat5/bin/catalina.xml .. /usr/share/tomcat5/bin/shutdown.sh .. /usr/share/tomcat5/bin/startup.sh … /usr/share/tomcat5/common /usr/share/tomcat5/bin/ w xFs�3�J±» E e Tomcat Server ¹ Shell Script ²� �­£ s ÿ��A­ Z�[ m Script o��

catalina Tomcat ¹�� ² script ² ¡ ã ¼!½ java q�r:ïð tomcat ¹1kl�� ¦ § ���

digest M = Tomcat ± à ¹kÃ�±�� ²�� ² o o K�L Ã.± ® ¹�± Ã

jasper JavaServer Pages ¹��¹ & script

jspc £

jspc ���8ï:ð JavaServer Pages �¹ & script ² � ¦�p� ¡ ¹����

setclasspath o Û hWi�¡O� ² £WÔ � Tomcat ¹ classpathÖ×�� �

shutdown =catalina stop ² o o�¦ § Tomcat

startup =catalina start ² o o k�l Tomcat

tool-wrapper o Û hWi8¹ ¡1�n² digest script

¼�½ catalina

� ² |�}�� � � ­ ��� m c 8 oA¹,« start�

stop�

run ¨ ��£start ¼�½ catalina

�(=startup) ² ¡ ã�k�l Tomcat ² ��ñ ��!�ß = ��"#%$'&�(

A $TOMCAT_HOME/logs/catalina.out 4 ¨)��� run ã�> Tomcat �+*Swþò�¹��!�ß = ��"#%$'& ( `�,!ù�- ) ² ��¢�Å ,�ù�-:¼�½n² �/.�ã

vk�l � ¹1ß =� ² ¬ ã!3/0�1 ¨

`�a�nSo catalina

�start 2�3 ² b ð o startup ¹�q�r ÷�� nSo���� run ²

28

ñ ã0Ü/,!ù�-�Ý ãv�4 � ½ Using… m � �±¹Wß = ¤ g B*ã0ä�ß =

vcatalina.out

¹+576�4 ºú¨

4.4.2���� Tomcat�- ! . /�- ! . /�- ! . /�- ! . /

Tomcat5V�� J3» E e `:À ²¯>!nPo�­©7o C�E98�:���; M Tomcat Server ²/È

­:© £ ã /etc/tomcat5/tomcat-users.xml ² M Ë�Ó�ÔSE e�¯ ¥8¹%° Y�� ± à ¨

[root@ossc tomcat5]# cat /etc/tomcat5/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

<role rolename="sciense"/>

<role rolename="tomcat"/>

<role rolename="role1"/>

<role rolename="manager"/>

<role rolename="admin"/>

<user username="sciense" password="sciense" roles="sciense"/>

<user username="tomcat" password="tomcat" roles="tomcat,admin,manager"/>

<user username="both" password="tomcat" roles="tomcat,role1"/>

<user username="role1" password="tomcat" roles="role1"/>

</tomcat-users>

È�­© £ +�2 Tomcat ��ä å�<:Ý�`Êû Administartion ý7=�>Ʋ o�Á " E e�?SåƲÓ�Ô ¹%¯ ¥�� û tomcat ýÔ²¥± à ©!� û tomcat ý¤¨

»�¼»�¼»�¼»�¼1 ½½ ½½A@�B@�B@�B@�B Tomcat C9D�E�FC9D�E�FC9D�E�FC9D�E�F ââ ââ�G�HG�HG�HG�H Status IJIJIJIJ

29

é m Tomcat �!ä�å

»�¼»�¼»�¼»�¼2 ½½ ½½LK�B�MN/OK�B�MN/OK�B�MN/OK�B�MN/OQPPPP tomcat R âR âR âR âAS9TVU�OS9TVU�OS9TVU�OS9TVU�OQPPPP tomcat RAWRAWRAWRAW

é m�¯�¥ � ±�X�ß�Y7ä�å

é m Tomcat Status ä å

»�¼»�¼»�¼»�¼3 ½½ ½½A@�B@�B@�B@�B Tomcat Administration EZFEZFEZFEZF ââ ââ[G�HG�HG�HG�H\PPPP Tomcat Administration RR RR

IJIJIJIJ ââ ââLK�B�MN/OK�B�MN/OK�B�MN/OK�B�MN/OQPPPP tomcat R âR âR âR âAS�T]U�OS�T]U�OS�T]U�OS�T]U�O^PPPP tomcat RAWRAWRAWRAW

30

é m Tomcat Administration _�YFä å

éa`Tomcat Administration bke�ä å

»�¼»�¼»�¼»�¼4 ½½ ½½A@�B@�B@�B@�B Tomcat Manager EZFEZFEZFEZF ââ ââcG�HG�HG�HG�H Tomcat Manager I JI JI JI J

31

éd`Tomcat Manager ä�å

32

�� ��� ��� ��� � � � � �� � � �� � � �� � � �

5.1���� JSP + ,+ ,+ ,+ ,

egfjava hjilk7m'n7oqp HelloWorld rts+uwvyxgz{pj|7}�rts�~q�t� jsp m�n7� �l���

HelloWorld.jsp

m�n�� ( �7���g�t�����]u�m�nq�7���g�y�'� )

<%@ page contentType="text/html;charset=big5" %> <% String str1="HelloWorld"; %> <html> <head> <title> �������� </title>

<meta http-equiv="Content-Type" content="text/html; charset=big5"> </head> <body> <% out.println(str1); %> <%=str1%> </body> </html>

page ���'�y y¡g¢g£j¤q¥j¦qk�§9¨�©gªg«�¬�­+u�®l¯l°y�j�gn�±c¬�­�²]uw³q´�µl�

<%@ page ©lª 1=" ©gªl¶ 1" ©gª 2=" ©lªg¶ 2" ©lª 3=" ©lªg¶ 3" ....... %> · � <%@ %> ¸º¹q���q©lª»u�¼g®�½y�

<%@ page contentType="text/html;charset=big5" import="java.sql.*" %>

1. ¡j|¾� page ���q}%u¿v{xq�j¤{³ MIME À�Á7� text/html u¿°7���gnq� big5

( ÂlÃ�Ä�u¿|¾� contentType �g¤y qÅ�uÇÆ7� java È��¾��É7ÊtË�´lÌÍu�Î��q³�Ï�ÐlÑ'ÒgÓgky°7�� UNICODE uÕÔ�vyxjk¾Ö�×lÈ�� big5 ½y°7�9k]uØÎj�{�g¤y q��¤ charset=big5 Ù7Ècharset=MS950 u java Ú7ÛlÜg qÝl¥�¦ßÞgà�� big5 Ù MS950 uÇ�gáy�y��âjã�äæåjçlkyÈlè¾� )

33

2. ~¾éy�g©gª import="XXXXXXXX" u¿Èyê�ë{ìy¡j|7�lm�n¾}�í�îyç�k package u java ¸æ¹�ïæðñgò k package uÕ¼g®�½y�»uد�óqì� �îqç�¬�ô{õ»u¿ì'�g¤y 'îqç Connection ± Statement «ResultSet u¿ìq¯'ólöq÷y��¤q �î¾ø�ù package u java Ègú�ígûyì{ü{ýjkVuØÎj�yvqxq�' y£j¤import="java.sql.*"( ƾ�{|qþyÿ'Èy©g¢ java.sql k package)

page ñ î�©lªl¯l� ( ��ïA���{k¾éq�g©lª����Vuw³���k¾©gª�� ��î )

� JSP ����������������---page � �� �� �� �

©lª êgëjÄ��

contentType |¾�g©gªg£j¤ MIME k7ÀjÁ�«l°y�j�ln

import |¾�g©gªj¤��tmjn{ílîqçyø�ù package u���ïæ|y�{©lª������¾£j¤���uÕ³ ��k�©ª{o����y£j¤{���

session �7£j¤ true Ù false u�¯'ó�öq÷7£j¤lk �»u��y£g¶'È true uw|y�{©lªgêlë�|7�'¥¦tÈ��y ���î session

errorPage

£�¤7¯ló{m�n �� t®�� !�"�#]uw �$%yçyø{�'¥j¦Zu�®l¯ index.jsp }g¯�óg|�&£�¤

<%@ page errorPage="err.jsp" %> u('�&*) index.jsp +q��,{m�÷�!�"�#VuTOMCAT í7Ý�ì�$�%qç err.jsp u.-tú�í0/'ìqå'ç�!�"�1��32

isErrorPage �7£j¤ true Ù false u�¯'ó�öq÷7£j¤lk �»u��y£g¶'È true uw|y�{©lªgêlë�|7�'¥¦tÈ��yÈgü{ýq®*��4�5jky¥j¦

isThreadSafe

�7£j¤ true Ù false u�¯'ó�öq÷7£j¤lk �»u��y£g¶'È true uw|y�{©lªgêlë�|7�'¥¦tÈ����{ü{ý6�,��¾���7��k¾Â�7]u¿¯lógÈ false k �%u(''|¾��¥�¦y������qüý'�¾� Thread( '*)�8qÈ{  true 9»u;:�í<{ l|7��¥�¦y������qü{ý��¾�request)

language £�¤{|¾��¥j¦yk7´�µ{È'î¾ø��¾ÿ»u=�q£�È java u�>�½����{÷g³��g´�Ì'k0?�@

buffer |¾�g©gªg£j¤0ACBED{È��q÷F�GIH�uJ�7£j¤�K none( ö{÷�F�GIH ) Ù{³L�MjÒ ( ¯ó7£j¤�K 10 uØêlë�FLGNH�£j¤�K 10K) O�¯'óg|7�l©lª�öy÷y£j¤lk0�»uJ�7£�F�GH¾È 8K 2

� JSP ����������������---request � �� �� �� �

)P�jî Qq¡'âjã�ä��R�S�Tt��¥j¦�u;��U�²t¢lÑ�|7��V�W9äYXZB�ï request( Â�7 ) u(VW�äßÝ��î Q�<{ 'k�¬º­�[IB]\�u |¾��È response( ^ _ ) u ¡ jsp }�u request ` response o�È�aLbc5�uú'î�d ey����� ��î�ïuw|y��f�gZu¿Ý�h�i request kgîqµj2

34

)y�¾��â�ãläºÑV�W9äEXZB request k¾Â�7#Íu;k�@g��í¾Ý��î Q*lPm�kq�qùj¬�­l¯ IP n�oV±HOST

�p Ù7â�ãgäE?�@j²l¬�­��Pq�[gçLV�W�ä�usr� f �jî Q�t�[j¬�ô ( ®l¯l�l¥�uv�¬�ôjÙw cj² ) u |{ù�¬ºôgz�í�[gç�VW�ä�ü{ý]uJ- jsp �*x request |7��c�5VuÕ½�y�zg�7����î0Q�k�§¨g¬º­g«�¬�ô{2

��� � � � � � | ¯l÷��¾�'¥�¦7 �7¾ìA�}�~ � «{ª��+u�1���¯��

ÂA�}~ �»� Â�A�}gª�� �

³ htm �lsy��¯l� �

<form name="formtest" method="post" action="test.jsp">

ÂA�}~ � � <input type="text" name="username" size="8" maxlength="4"> ÂA�}lª�� � <input

type="text" name="sex" size="2" maxlength="1"><input type="submit" name="b1" value=" [�B">

</form>

|7� Form Ñ test.jsp [IB request u ¡j|7}��jîLQl �A�}léq��¬tôÍu¿�¾���0X username u�rq����0X sex u test.jsp ��y{|7��¬�ô�k7´�µy¯�� �

request.setCharacterEncoding("big5");

String username=request.getParameter("username");

String sex=request.getParameter("sex");

~q����Èy£j¤q�y��âjã�ä7ky°7��u ƾ� java ��î'É7ÊtË�k UNICODE ü{ý'ÒI�qu Îj�y �e� java

�7�lâ�ãläyk¾°q��È big5 u java Ú��L����k7Ý big5 Þgà�K unicode ½7ü{ý+u�- ��|l�t�����l ¡ getParameter �l��Ug y£�¤ e u�£j¤{������%u �jú��� ��{£j¤9ïC2

~¾éq«�~¾þy���lÈ7p request �, getParameter kq�{µ u(���j�7��tj½lk username « sex k¬�ô�2

��,l|7�j�gnVu jsp �����0���jî Q�t�[�½lk�¬ºô���y��'½ X����güqý ( ®l¯�[��j¬ºôgõ���� ....

²g² )

r���{÷��¾���9¬�ô�kg�qµ � request.getParameterValues() u ¡�rq�7��f�gtÅj�Lh�ij2

�� � � � � �

�y����Bt�qù ñ îgkq�gµ

35

request ���9¬�­jk{�{µ �'î

request.getRemoteAddr() �����jîLQ�k IP n�o

request.getRemoteHost() �����jîLQ�kg�0� �p

request.getRequestURI() ����Â�7lk URL 2 request.getMethod() �����jîLQt�[j¬�ôjk{�{µ (GET Ù POST)

request.getProtocol() �����jîlk �{­��'¤ (HTTP/1.1 ± HTTP/1.0)

request.getQueryString() ����Â�7lkL��MjÒ���u ú�,��L �Èl�y��t�[j¬�ô�kg�qµ (method) ���È get uÇÚL���{îq|7�j�gµL���lÂ*7qÒ��

¡® � ¯�ó�<q ������î0Q�k IP uØm'nt���'�t¯'� �

String ip=request.getRemoteAddr();

� JSP ����������������---response � �� �� �� �

)P�jî Qq¡'âjã�ä��R�S�Tt��¥j¦�u;��U�²t¢lÑ�|7��V�W9äYXZB�ï request( Â�7 ) u(VW�äßÝ��î Q�<{ 'k�¬º­�[IB]\�u |¾��È response( ^ _ ) u ¡ jsp }�u request ` response o�È�aLbc5�uú'î�d ey����� ��î�ï uw|y��f�g]u¿Ý�h�i response kgîyµ¢2

response c5��y {È{Ý jsp ü{ý�jkq¥�¦g¬�ô»u(t�[lçL��î0Qjk7â�ãgäZu�³lî{µ�£{Ð�¤{¡g£�¤ë¥�Ù��¾��¥�¦���$

�{µ Ä��¾���

setHeader(Header�p

,String Header ¶ ) £�¤yë¥�ÀjÁ¾��Ò*�tk¾¶

setIntHeader(Header�p

,int Header ¶ ) £�¤yë¥�ÀjÁ¾� int k¾¶

addCookie(Cookie cookie) ¦�§ cookie ¶

sendRedirect(String URL) Ýl¥j¦��$7ç�T{�t�'¥j¦

encodeRedirectURL(String URL) Ñg ���$7ç�k7¥�¦ URL ¨l�7°y�

response �q÷�© ò �gµÍu ³L�jkq�gµ{ú ñ îZuØ«ª[��¬N­

¼g®g��� �

1.setHeader(Header��p

,String Header ¶ )

response.setHeader("contentType","text/html;charset=big5");

£j¤7ë¥ contentType k MIME À�Á7� text/html u¿°7���gnq� big5

36

2.setIntHeader(Header�p

,int Header ¶ )

response. setIntHeader("Refresh",20);

£j¤�^0_jky¥�¦P® 20 ¯�Ul �� ¦�°�¦ ���

3.addCookie(Cookie cookie)

Cookie mycookie=new Cookie("isLogOk","true");

// ¡ Server ��±�²�ïæ�7� Cookie c�5

response.addCookie(mycookie);

// Ý mycookie [gçL��î Qjk7â�ãgä

4.sendRedirect(String URL) ñ �Ý�³{¢jÙqú�³q¢ITº��´�5jkP��î Qµ�ç�r{�¾�'¥j¦t� u ®l¯��jî Qq¡ login.htm A�}�¶{�· �»u login.htm Ý���î Q�A�}�k�¬tô�[¸ check.jsp X¹*ºVuد�óL¹�ºL�,+u ��[�¸ input.jsp

X�üqý�u�¯lóL¹�ºyú��,Íu �lÝ�jîLQ*��$�^ login.htm u»/��jî Q*� ¦ A�}�u check.jsp ¹�º{kDym{���t¯�� �

if ( ��, )

{

response.sendRedirect("input.jsp") ;

}

else

{

response.sendRedirect("login.htm");

}

5.encodeRedirectURL(String URL)

£j¤ URL  {°y�¼2L�¾��kt®�½qz����y|�&�¾response.sendRedirect(encodeRedirectURL("login.htm"));

|7��¾7µL`����gk�¾¾µ�¿jî�À Á'�0 u('�È�Æt� login.htm olÈ�Ã�Ä u¿ú�Åt ��r�y°y� uÕÔ�÷ù URL ¥�o�È ò ��´lÌ'k�u z�Æ'÷NÇEÄlÙ{³L�g´'Ì/uÕ|�#EÈj|7� URL �ÉÅ� Ê�,g°y�Vu ¯�ólö÷{°7� u;'�ù URL �jí�Ë�K�èt�¼2

� JSP ����������������---session � �� �� �� �

37

¡j|¾��f�ggr�s����Íu�vyx�Ì< f �{� � Í È�T���¥�Î'kqí�Ï�u=�l �Ð }'¥�Î�Ñl� w c»u;�q¡ login.jsp �{���kL¶g� · �%u;Ò�Ó��,��»u(V�W�ä]� · µ�ç list.jsp âjã¾¥Îg�'k�ÔPc+uÕ)0��S e  IÖ¾k�ÔEc�� �× w ï�uØV�W�ä�Ù� · µ'ç buy.jsp üqý�×*Ôqk�4�Ú�2 Í |7��Û��¾¡ login.htm �g�¶g� · ��uÜV�W�ä0�, login.jspÝ Ò Í Èy��³�µ�Þßjkgí�Ï�u Ô'È list.jsp ` buy.jsp ��î0Q�ú*Åt {�¶l� · �ZuàV�W9ät y¯�á ÝÒ�⾡��l½lk Í �{ÈIã�äåÙlÙ0Q�÷�ÛLæ�@U�ú¾p login.jsp ��}l¥�Î�uç��èL�{p list.jsp Ù buy.jsp

�l½Vu;'�úUé�,�ïå¶l� · ��kP¹*ºCä

 �ê�ë{|¾�ZìYí»uÇ�qµg÷L© ò uJ�'�{î html ´'µlk <input type="hidden"> kg�qµ u Ù Q�Èî cookie u Ô�È'�¾��îtÿ��gµlk ï�Ágª��{ú�ðZuñ_�ò�î session ½ ê�ë{|y�NìPí¢2�ó�Úlk�ìPí%u¯�ó�� session k�D7mj½tå%u Í ��, login.jsp �L}�¥Î+uØV�W�ä7í�¸��j�t�ô��õqé�k7°{��Ó�0��UlÈ Í ( U egf ®g��Ûyo�÷�öL¤Ó�Ò7��us- �qo�ú�í���� ) u�¯lógÈNãE�l½L� uØVW�äßz�¸��¾��ô��õqé'ky°g��2 |¾��ôj�õyéjk7°{��UgÈ sessionID 2 |7� sessionID í0÷�[lçL�jîLQ�kâ�ãgä{Ï�u=)P��î Q�ç{âjãy³L��¥j¦�#�u â�ãlä¾íL�'|y� sessionID [lç V�W�ä uñV�W�ä �����ø Ñ�â7¡�½lk7È Í Ù7ÈZãÉ2

1. ¯�óqì�<q qå�ì'k sessionID ùLú�&�Â�½�uØ´�µ�_�ò'|�&*¾

session.getId();

2.Í Ù�ãE�L}'¥�Î u;VW�äºo�í�û�üL®{��Ûl�¾� session c5»u(®g��Ûqolú�í���� u Í Èlí�Ï�u

A�}�ïý¶g� · ��������,þ�ÓVu |y�V�W�ä0���t¡��jk session ��Xg��ÿ{�Zu ë������,�ï þÓ u

session.setAttribute("LogOk","yes");

|7��Ä��yÈq�+uØV�W9äß¡ Í k session Ï�� ïæ�¾� LogOk k�©lª+u · k7¶lÈ "yes" 2 )�8¾z����������k���u��¾¯{��� Í A�}jk ¶l� · ������\

session.setAttribute("userid","Í ÎA�}�kL¶{� ");

session.setAttribute("userpass","Í Î�A�}jk · � ");

( ÂlÃ�Ä u |{ù Attribute kl¬�­golÈ��{¡ Server Ï u úlí0÷�[�çL�jîLQ�k7â�ãlä{Ï�uÕí�[lçqâjãäyk��q÷ sessionID - C2ǯ���Ú�����¾§�¨{¬�ô�úL÷�Û�����2 ) Í �,�þÓ���u»V�W�ä ��� · $�%qç list.jsp X�ü{ýj2 (response.sendRedirect("list.jsp");) ãæúgÈí*Ï�uÕ)0�qp login.jsp ��\��%u�ö���µ���,�þÓ»uØ¢�È�÷N$�%�^ login.jsp � ¦ A�} · �(response.sendRedirect("login.jsp");)

3.Í ÷I$�%yç list.jsp u list.jsp �E&gÛlÜ Í ��,�ï þÓVu=-P���E&�Ó9� · È Í�� ä ��� ��,g���y�µL��ó�Ú�¡ session �gÎ�X�k ÿg���ÉBt½

String LogOk=(String)session.getAttribute("LogOk");

String userid=(String)session.getAttribute("userid");

String userpass=(String)session.getAttribute("userpass");

��, getAttribute ��� LogOk kt¶�uà\L¹�ºq�{� LogOk È���²º¢ "yes" U{ÛlÜl|7��Û{÷�öy÷��,

38

þÓ�ï usr�¾z�����ï Í A�}�kL¶{�g« · � u=�'�L\�¬�ôgõ ø Ñ�⾡��l½lk7È��qÈ Í |¾��Ûj2

(  {Ã�Ä{k7È session.getAttribute("") kq���]uÕ¡�|y�{®�½l½��»uw yÅ (String) u Æt��,setAttribute kq�gn0��� session ÏqkyÈy��c�5 (Object) u(�ZB�½�#]u¿ j� Ý e� java

· È�ú�&c�5+uØÎj�y �î (String)session.getAttribute("LogOk") 2��ßý»u¿¯ló7¡���� session #7ÈgÈL���� ResultSet u;'��ZBt½t�j �î (ResultSet)session.getAttribute("....");)

-�ãß|7��Û � uJ�{ú����Íu login.jsp �qú�½Vu;����<����l½]uJèL��� list.jsp u��YÂjkVu�m'n¾psession Ï� ÉBºÈ��q÷ LogOk u · k¾¶lÈlú{È�²�¢ "yes" uد'ó{úgÈ�u(©�!#"»u�Ù � · $�^qçlogin.jsp 2

��, session kg�gnVuJ��� X'çqÑ��7�¾���î0Qq¡�ú$�yky¥j¦P��%{¬�ôjk�û#&j2sk�@g��½7�»utomcat Ñ�®��¾�'¥�¦L�l½lk�Ûyo�í ±�² session u�³{÷�'�#�%{Ïq¤q� 30 û)( uد'ó�6�,{þ*û(��jî Qgo�öy÷��gâjã�+�á�¥�¦uÕ³ sessionID ��í�,�'Vu=)�8�¡ session ϺÎ{£�¤L,q©gªlz'í- , 2J��î Q��*� ¦ ��½Vu��'È�rq�7� session ïÉ2

�y��k session �{µÍu/.Ln�������0{ågå �

session.setAttribute(" ©lª � ", ©gªg¶ )---- Ý�¬�ô���} session

session.getAttribute(" ©gª � ");---- p session ����¬�ô

session.setMaxInactiveInterval(" ¯M ");--- £j¤ session k7÷�'�+q��##% ( 1 n � ¯ )

session.getMaxInactiveInterval();---- ��� session k7÷�'+q��#�% ( 10n � ¯ )

session.isNew();---- 2#3{|7� session È{úlÈ ¦ kVu¿È�k0��t�^ true, ����t�^ false

session.invalidate();---- 4)5 session Ç�3 u ñ î�¡���î Q�Ð*B #

session.getCreateTime();---- ��� session ±�²'k�##%Zu�³y¶�� long ¶ 2

session.getLastAccessedTime();---- ��� session 6L��kP����#7%

r�Vuد�óg÷{ùl¥j¦�uØæ�@�Ugú*Åt �±�² session u¿ {¯�á�� · ¨�83ä _òq¡ page k�9'�¾£j¤session="false"

® � <%@ page contentType="text/html;charset=big5" session="false" %>

¯7�Íu�|7�'¥�¦º��úlí�±�²:+�á session c�5

� JSP ����������������---application � �� �� �� �

¡��t� web _�î7m'n�Ç ( � ñ �¾�9¬�ô�;PU�Èl�¾��_jî7m'n ) í �� g�¾� application c�5»uw|7�_jîtm�nq÷�Æ ò k jsp ¥�¦u |qù jsp ¥j¦ºojíP���<�y�¾� application c�5Vu>=0����î QlúlÈ?��¾�»uØz�í0���g§@�7k application c5%u Æ�� u application c�5�����A'¥j¦ û�&'¬�ô»u�z����A'ú?��B�Ñ ( ú?�yk�Û ) ûC&�¬ºô{2

application k{îqµ

1. Ý�¬ºô���} application

application.setAttribute(" ©gª ��p ", ©gªg¶ );

39

2. p application �ZBy¬�ô

application.getAttribute(" ©lª �p ");

³Lt*^t¶�UgÈ�*^qk'¬ºô%u¿ú,�t�^t¶lÈc5�ÀjÁ (Object) u Å� yÞ{à�K�D Ý k c�5

À�ÁqÚ����jîVu�®g¯ String str=(String)application.getAttribute(" ©lª �p ");

3.application ¬ºô�k�E��

application.removeAttribute(" ©gª �p ");

�y�yФlm�n��$�¡¯�áFL¿�ÄlÒ�G�M�ä

<%

String strcount=(String)application.getAttribute("count");

// p application Ç]��� count kt¶»uIHqÝ · Þ�K String c5

if (strcount==null)

strcount="0";

// ¹�º appliacion È��y÷ count k¾¶�uKJjöy÷ u»�CB¾½gk��77È null ¶+u�Îj� strcount ¸�Lg¶0

int count=Integer.parseInt(strcount)+1;

// Ý strcount Þ�K int HyÅ 1 u�Ý�³7¶�¸ count Ë0M

strcount=String.valueOf("count");

// �{Ý count ¶{Þgà�K�Ò���ML¸ strcount

application.setAttribute("count",strcount);

// Ý ¦ k strcount kt¶��y£j¤�^ application Ç/uØ/j³L��ÛqÛgÜ count ¶N �O�Ë

out.println(" ìgÈj~ "+strcount+" ½�P�k�QÛ ");

// Ý{ÅSR ��kPMjÒ�T��t¡j¥�¦t�

%>

� JSP ����������������---jspInit() jspDestroy()

USVXWZY�\[����^]^_<`^acb^dZeZf

YNgjsp hji����Xk\lXmonqp@lXmsrut@vonwyxZz lXm|{@}~r��q[����@�Z�X�

gjspInit() {q�<`j�@��� jspInit() �$`�f z

gjsp

hji����Xk\lXmonqp z l\m��:�7�|{�rUSV^Y

�X[����Z]^_�`Sdceg���c�Z�

n�rK�N���\[c�N�Z�X�|]?�Z�o{<}~rK�X[����<�Z�q�g

jspDestroy() �<`X���N���jspDestroy() �<`jf z

gjsp �|�9���S�^�\]�b JSP �|�\�Z�\{qn w p z lXm��

k�� jspInit() ��� jspDestroy() �S 9���<`j¡N¢|£N¤

g<%! %> �¥r§¦X¨

UZ©«ª

40

<%@ page contentType"text/html;charset=big5" %> <%! public void jspInit() { // �N�c¬^­ jspInit ®\lXm|{����

} public void jspDestroy() { // �N�c¬^­ jspDestroy ®�lXmo{9���

} %> <% // �N�yb

W{ jsp �/�

%>

� JSP ����������������--- � � � � � � � � � � � � � � � � � � � �

�°¯²±Z³@´�{@µq¶ ����·

US©«ª

FileReader fr=new FileReader(" ´|¸q{<¹\ºc»q´^¼ "); // ½c¾���^¼q¿jÀ fr { FileReader Á^ÂÃr§Ä^ÅqÆX´o¸�¹\ºc�^´^¼qÇZÈ BufferedReader bf=new BufferedReader(fr); // ½c¾���^¼q¿jÀ br { BufferedReader ÁqÂÃrÉÄqÅqÆ fr ÇZÈ String str=null; String line=null; while ((line=bf.readLine())!=null) { str=str+line; } //br.readLine() �Xk z µ��@mÊr§µSËN´o¸@ÌZÍ«r line Î zSÏ?Ð null br.close(); fr.close(); // ÑNÒj®\Æ br � fr �Ó ---------------------- Ô �q´o¸@ÌZÍ (line==null) r str {cÕ@�NÖybZ±Z³<´|{ZÕN� ׯ)Ø�Èy±^³@´

(1) � FileWriter

41

FileWriter fw=new FileWriter(" ®@�Z�|{<´o¸$¹\ºc»^´^¼ "); fw.write(" Ù�Úy±^³<�Z´ "); fw.write(" Û x ÛS� ");

fw.close(); --------------------------------------------------------------------- �N­��Z´|{�´o¸ZÕ@�ZÀ

ª

Ù�ÚS±Z³<�^´SÛ x Ûy�

�^�@­j{qÜ��<�Z´ÃrÝ����� write Ø�È�{\±Z³ z<Þ

gjß���cà\�Êrâá xczqã m¥rä ® ã m¥rÉÛy�^�

©Ü �

( ]�b�åNæ ã mÊr write åNæ#» "\n")

(2) � FileWriter »Z­ BufferedWriter FileWriter fw=new FileWriter(" ®@�Z�|{<´o¸$¹\ºc»^´^¼ ");

BufferedWriter bw=new BufferedWriter(fw); bw.write(" Ù�ÚS±Z³<�^´ ");

bw.newLine(); bw.write(" Û x Ûy� ");

bw.newLine(); bw.close(); fw.close(); --------------------------------------------------------------------- �N­��Z´|{�´o¸ZÕ@�ZÀ

ª

Ù�ÚS±Z³<�^´ Û x Ûy�

(3) � FileOutputStream »c­ PrintWriter FileOutputStream fos=new FileOutputStream(" ®<�Z�o{�´o¸�¹\ºc»^´^¼ ");

PrintWriter pw=new PrintWriter(fos); pw.println(" Ù�Úy±^³<�^´ "); pw.println(" Û x ÛS� ");

pw.close(); fos.close();

42

5.2���� MySQL+phpmyadmin ç Ë Application Server réè xëê ®Nìîí�ïqðZÌXñ , róò@ô\õo� MySQL í�ï^ðqö°�÷SøSù fSú$ûcü�ýqþÿ����� r

Y� MySQL ����ÕN�qÛ��� MySQL í<ï^ð SOP �

5.2.1���� � �� �� �� � MySQL�0 � 1 2�0 � 1 2�0 � 1 2�0 � 1 2

� service mysqld start ��� MySQLª

[root@ossc tomcat5]# service mysqld start Starting MySQL: [ OK ] ��

��� MySQL � r��<Àyí�ïqð����^ô�����Y��

· r>½��qõo�ß�����

! �"�Zô�·¥r�# �

©�$Ü ����%

�·«�

mysql>c &�'&�'&�'&�'

root (�)(�)(�)(�) mysql>update user set mysql>password=password('1234') mysql>where user='root'; mysql>flush privileges mysql>exit password=password('1234') r+*-,-.^®

�· 1234 r password(1234) b0/�1

1234 2\·�3jp<�54yí<ïqðë�/���|n w�·�6-�

Y-7È ! r>¡�¢ flush privileges

p z�8�9 �

5.2.2���� � �� �� �� � phpMyAdmin

phpMyAdmin byè5:�{ PHP ;-< ����·o{ Web h�=�r�ÛS�X���>�5?��

MySQL @�A � ru�qb��B Web C�DX{ MySQL �"���� rFE"GIH$±Z{�õo�<ô-CD �

phpMyAdmin f5J>K�3-L�Mc��ÎqÛ5��� MySQL @�Aÿ� r+NPO}�Q r x�R

MySQL bS-Tg

Linux ]�b Windows �VU ! rFWSÛy�$õo��þ ���0�

g

43

MySQL ­X½S¾jí$ï^ð (Database) ¯�í�ï�, (Table) X�2�Y�Z\[ (Record) �

]0^]0^]0^]0^1 __ __©-7

phpMyAdmin ( http://www.phpmyadmin.net ) ra`0b�c\ñj{�d ÷

e ªwww.phpmyadmin.net

]0^]0^]0^]0^

2 __ __§Æ phpMyAdmin-2.6.0-pl2.tar.bz2©-7�f

/tmp , ÄqlXm©�$/�g

ª

# tar jxvf phpMyAdmin-2.6.0-pl2.tar.bz2–C /var/www/html ÆSt0h�i�j

f/var/www �

]0^]0^]0^]0^

3 __ __ À êlk ��Ü�Ö�mVn°r§½S¾ Soft link �

[root@ossc /var/www/html]# ln -s phpMyAdmin-2.6.0-pl2/ phpMyAdmin [root@ossc /var/www/html]# ls -l total 4 lrwxrwxrwx 1 root root 21 Oct 19 04:56 phpMyAdmin -> phpMyAdmin-2.6.0-pl2/ drwxr-xr-x 7 52400 users 4096 Oct 13 01:40 phpMyAdmin-2.6.0-pl2 ]0^]0^]0^]0^

4 __ __Fo�

phpMyadmin ��%<´ config.inc.php # gedit /var/www/html/phpMyAdmin/config.inc.php

44

e ªconfig.inc.php �p%@´

]0^]0^]0^]0^

5 __ __+��%0q�r@m�s��q��o�

config.inc.php ��%<´

45

e ª q�r@m�s

]0^]0^]0^]0^6 __ __Fo

�N©�$��% rut<����� WWW server

� 39 m ��% phpMyAdmin { URL � 69 m MySQL Server { ip � 80 m

�"v�w�s\�Z¶ MySQL � 81 m

UcVroot

Y��% password ryx0zp{�|^È root { password

30 * In most cases you can leave this variable empty, as the correct value

31 * will be detected automatically. However, we recommend that you do

32 * test to see that the auto-detection code works in your system. A good

33 * test is to browse a table, then edit a row and save it. There will be

34 * an error message if phpMyAdmin cannot auto-detect the correct value.

35 *

36 * If the auto-detection code does work properly, you can set to TRUE the

37 * $cfg['PmaAbsoluteUri_DisableWarning'] variable below.

38 */

39 $cfg['PmaAbsoluteUri'] = 'http://ossc.cosa.org.tw/phpMyAdmin';

….

….

69 $cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address ….. 80 $cfg['Servers'][$i]['user'] = 'root'; // MySQL user

81 $cfg['Servers'][$i]['password'] = '1234'; // MySQL password (only needed

46

e ª o�

config.inc.php

e ª o�

config.inc.php

[root@ossc /var/www/html/phpMyAdmin]# service httpd start Starting httpd:

47

]0^]0^]0^]0^7 __ __~}��}��}��}�� phpMyAdmin

e ª lXm phpMyAdmin

5.3���� - . / 0 � �- . / 0 � �- . / 0 � �- . / 0 � �

5.3.1���� 3 4 5 � � 6 73 4 5 � � 6 73 4 5 � � 6 73 4 5 � � 6 7

���-LpM�ô�LpM Ô���-� C�D 1.news.jsp --------

Ô��� ¤$,

2.view.jsp -------- LpM � ¤�ÕN� �����-��������-��������-��������-���

1.login.htm ------- �"�^ô��NÈ5��D 2.check.jsp ------- ���\w-s

�·����

3.list.jsp -------Ô��� ¤

$,

4.addfrm.jsp -------Ô��5�-������ È5��D

5.add.jsp -------���-���� �Z����

6.editfrm.jsp ------���-� o

� � ���D 7.edit.jsp -------

������ o��Z�����

8.del.jsp ------- ��� � ¤���� 9.topmenu.jsp ------ `-�-��D

48

10.conn.jsp ------ í$ï^ð��ZÌ���� 11.news ------MySQL í�ï^ð

5.3.2���� 3 4 5 � �3 4 5 � �3 4 5 � �3 4 5 � � 8 98 98 98 9

���� news.jsp �� ��F������5���������5���������5���������5�������� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%! public void jspInit() { String vPath=getServletConfig().getServletContext().getRealPath("/"); String count=null; try { FileReader fr=new FileReader(vPath+"count.txt"); BufferedReader br=new BufferedReader(fr); count=br.readLine(); br.close(); fr.close(); } catch (IOException e) { count="0"; } finally { getServletConfig().getServletContext().setAttribute("count",count); } } public void jspDestroy() {

49

String vPath=getServletConfig().getServletContext().getRealPath("/"); try { String temp=(String)getServletConfig().getServletContext().getAttribute("count"); FileOutputStream fos=new FileOutputStream(vPath+"count.txt"); PrintWriter pw=new PrintWriter(fos); pw.println(temp); pw.close(); fos.close(); } catch (IOException e) { } } private String getTodayStr() { Calendar cl=Calendar.getInstance(); cl.setTime(new java.util.Date()); String Temp=""; int i=cl.get(Calendar.YEAR); if (i>1911) i=i-1911; Temp=Temp+i+"/"; i=cl.get(Calendar.MONTH)+1; if (i<10) Temp=Temp+"0"+i+"/"; else Temp=Temp+i+"/"; i=cl.get(Calendar.DAY_OF_MONTH); if (i<10) Temp=Temp+"0"+i; else Temp=Temp+i; return Temp; } %>

50

<% int i; String count=(String)application.getAttribute("count"); i=Integer.parseInt(count); i++; count=""+i; application.setAttribute("count",count); %> <%@ include file="conn.jsp" %> <% String todaystr=getTodayStr(); String qrystr="select A.newsid,A.bdate,A.title,B.unit from news A,user B where A.userid=B.userid and A.bdate<=? and A.edate>=? order by A.bdate desc,A.sdate desc"; PreparedStatement stmt=con.prepareStatement(qrystr); stmt.setString(1,todaystr); stmt.setString(2,todaystr); ResultSet rs=stmt.executeQuery(); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> ������� ������ </title>

</head> <body> <p align="center"> ������� Ô����-� </p> <p align="right"> Ë0 �¡0¢¤£ <%=count%></p>

<hr> <table width="100%" border="1"> <tr> <td width="10%">

�¥§¦</td><td width="80%">

�¥0¨-©</td><td

width="10%"> ª�«5��¬ </td>

</tr> <% while(rs.next()) { %> <tr>

51

<td><%=rs.getString("bdate")%></td><td><a href="view.jsp?newsid=<%=rs.getString("newsid")%>"><%=rs.getString("title")%></a></td><td><%=rs.getString("unit")%></td> </tr> <% } %> </table> </body> </html> <% rs.close(); stmt.close(); con.close(); %> ���� view.jsp �� ��®­p¯0��p°�±­p¯0��p°�±­p¯0��p°�±­p¯0��p°�±²���� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.*" %> <%! private String getTodayStr() { Calendar cl=Calendar.getInstance(); cl.setTime(new java.util.Date()); String Temp=""; int i=cl.get(Calendar.YEAR); if (i>1911) i=i-1911; Temp=Temp+i+"/"; i=cl.get(Calendar.MONTH)+1; if (i<10) Temp=Temp+"0"+i+"/"; else Temp=Temp+i+"/"; i=cl.get(Calendar.DAY_OF_MONTH);

52

if (i<10) Temp=Temp+"0"+i; else Temp=Temp+i; return Temp; } %> <% String todaystr=getTodayStr(); String newsid=request.getParameter("newsid"); if (newsid==null) { response.sendRedirect(response.encodeRedirectURL("news.jsp")); } else { %> <%@ include file="conn.jsp" %> <% String qrystr="select A.newsid,A.bdate,A.title,A.content,B.unit from news A,user B where A.userid=B.userid and A.bdate<=? and A.edate>=? and newsid=?"; PreparedStatement stmt=con.prepareStatement(qrystr); stmt.setString(1,todaystr); stmt.setString(2,todaystr); stmt.setString(3,newsid); ResultSet rs=stmt.executeQuery(); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> �������\³ ����� </title>

</head> <body> <p align="center"> ��������³ ���-� </p>

<hr> <% if (rs.next())

53

{ %> <table width="100%" border="1"> <tr> <td width="10%">

�¥§¦</td><td width="80%">

�¥0¨-©</td><td

width="10%"> ª�«5��¬ </td>

</tr> <tr> <td width="10%"><%=rs.getString("bdate")%></td><td width="80%"><%=rs.getString("title")%></td><td width="10%"><%=rs.getString("unit")%></td> </tr> <tr> <td width="10%">

�¥�´�µ</td><td

colspan="2"><%=rs.getString("content")%></td> </tr> </table> <% } else { out.println("<p align=center> ¶5·�¸�¹�º-»"¼¾½ </p>");

} %> <p align="center"><input type="button" name="b1" onclick="location.href='news.jsp'" value=" ¿\À�Á "></p>

</body> </html> <% rs.close(); stmt.close(); con.close(); } %>

- ! : . /- ! : . /- ! : . /- ! : . /

54

1.login.htm �� �� ������Â�Ã5Ä�ÅÆ�Ç�È�Â�Ã5Ä�ÅÆ�Ç�È�Â�Ã5Ä�ÅÆ�Ç�È�Â�Ã5Ä�Å �� �� <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> É�Ê5Ë�Ì </title>

</head> <body> <p align="center"> ³�Í�Î�Ï0Ð ¥�Ñ�Ò-Ó É�Ê </p>

<form name="form1" method="post" action="check.jsp"> <p align="center"> Ô-ÕÖ£ <input type="text" name="userid" size="10"

maxlength="10"><br> ×�Ø £ <input type="password" name="userpass" size="10"

maxlength="10"></p> <p align="center"><input type="submit" name="b1" value=" É\Ê "></p>

</form> </body> </html> 2.check.jsp �� ��ÚÙVÛ\Ü-Ý�Þ\ß-à�áÙVÛ\Ü-Ý�Þ\ß-à�áÙVÛ\Ü-Ý�Þ\ß-à�áÙVÛ\Ü-Ý�Þ\ß-à�áâ���� <%@ page contentType="text/html;charset=big5" import="java.sql.*" %> <% request.setCharacterEncoding("MS950"); String userid=request.getParameter("userid"); String userpass=request.getParameter("userpass"); if ((userid==null)||(userpass==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <%@ include file="conn.jsp" %> <% String qrystr="select * from user where userid=? and userpass=?"; PreparedStatement stmt=con.prepareStatement(qrystr); stmt.setString(1,userid); stmt.setString(2,userpass); ResultSet rs=stmt.executeQuery();

55

if (rs.next()) { session.setAttribute("logok","yes"); session.setAttribute("userid",userid); response.sendRedirect(response.encodeRedirectURL("list.jsp")); } else { response.sendRedirect(response.encodeRedirectURL("login.htm")); } rs.close(); stmt.close(); con.close(); } %> 3.list.jsp �� ��F���5�0�5�����5�0�5�����5�0�5�����5�0�5����� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <%@ include file="conn.jsp" %> <% PreparedStatement stmt=con.prepareStatement("select newsid,bdate,edate,title from news where userid=? order by bdate desc,sdate desc");

56

stmt.setString(1,userid); ResultSet rs=stmt.executeQuery(); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> Ð ¥�ä0å </title>

</head> <script language="javascript"> function DoEdit(newsid,action) { document.form1.newsid.value=newsid; document.form1.action=action; document.form1.submit(); } function DoDel(newsid,action) { document.form1.newsid.value=newsid; document.form1.action=action; if (confirm(" æ-ç"è�é�ê5ë�ì5º�»"¼îí ")==true)

document.form1.submit(); } </script> <body> <form name="form1" method="post" action=""> <input type="hidden" name="newsid" value=""> </form> <%@ include file="topmenu.jsp" %> <table width="100%" border="1"> <tr> <td width="10%"> Ð ¥§¦ </td><td width="10%"> ï-ð ¦ </td><td width="70%"> Ð ¥0¨-© </td><td width="5%"> ñpò </td><td width="5%"> ê5ë</td> </tr> <% while(rs.next()) { String newsid=rs.getString("newsid");

57

%> <tr> <td><%=rs.getString("bdate")%></td><td><%=rs.getString("edate")%></td><td><%=rs.getString("title")%></td><td><input type="button" value=" ñVò "

onclick="DoEdit('<%=newsid%>','editfrm.jsp')"></td><td><input type="button" value=" ê5ë " onclick="DoDel('<%=newsid%>','del.jsp')"></td>

</tr> <% } %> </table> </body> </html> <% rs.close(); stmt.close(); con.close(); } %> 4.addfrm.jsp �� ��F����ó-ô\��õ�ö Ã�Ä-Å����ó-ô\��õ�ö Ã�Ä-Å����ó-ô\��õ�ö Ã�Ä-Å����ó-ô\��õ�ö Ã�Ä-Å �� �� <%@ page contentType="text/html;charset=big5" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <html>

58

<head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> ³�Í�Î-Ï�Í÷ </title>

</head> <script language="javascript"> function CheckFormData(obj,str) { val=obj.value; if (val=="") { validatePrompt(obj," ø0è�éù�Êûú "+str+" üý½ "); return(false); } return(true); } function CheckDate(obj){ val=obj.value; if (val.length!=8) { validatePrompt(obj,"

¦ÿþ��������8Ø

YY/MM/DD");

return(false); } i=0; for (i=0;i<=7;i++) { str=val.charAt(i); if ((i==2)||(i==5)) { if (str!="/") { validatePrompt(obj,"

¦ þ���� ·�� ��� YY/MM/DD");

return(false); } } else { v = parseInt(str); if (isNaN(v)) {

59

validatePrompt(obj,"¦ÿþ ��� ·��� ��� YY/MM/DD");

return(false); } } } return(true); } function CheckData(form) { if (!CheckFormData(form.bdate," Ð ¥I¦ ")) return(false); if (!CheckFormData(form.edate," ï�ð ¦ ")) return(false); if (!CheckFormData(form.title," Ð ¥���� ")) return(false); if (!CheckFormData(form.content," Ð ¥�´�µ ")) return(false);

if (!CheckDate(form.bdate)) return(false); if (!CheckDate(form.edate)) return(false); return(true); } function validatePrompt(Ctrl,PromptStr) { alert(PromptStr); Ctrl.focus(); return; } </script> <body> <%@ include file="topmenu.jsp" %> <p align="center"> Í�÷5Ð ¥ ��ø�ù��� ä »"¼Ö£ </p>

<form name="formadd" method="post" action="add.jsp" onsubmit="return(CheckData(this))"> <table border="1" width="80%" align="center"> <tr> <td> Ð ¥§¦ </td><td><input type="text" name="bdate" size="8"

maxlength="8"></td> </tr> <tr> <td> ï-ð ¦ </td><td><input type="text" name="edate" size="8"

maxlength="8"></td> </tr>

60

<tr> <td> Ð ¥���� </td><td><input type="text" name="title" size="60"

maxlength="40"></td> </tr> <tr> <td> Ð ¥�´�µ </td><td><textarea cols="60" rows="6"

name="content"></textarea></td> </tr> </table> <p align="center"><input type="submit" name="bsend" value=" ��� "></p>

</form> </body> </html> <% } %> 5.add.jsp �� ��+���ó-ô\��õ�����à5á���ó-ô\��õ�����à5á���ó-ô\��õ�����à5á���ó-ô\��õ�����à5áV���� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <%@ include file="conn.jsp" %> <% request.setCharacterEncoding("big5");

61

String content=request.getParameter("content"); content=content.replaceAll("\n","<br>"); String insertstr="insert into news (title,content,bdate,edate,sdate,userid,ip) values(?,?,?,?,now,?,?)"; PreparedStatement stmt=con.prepareStatement(insertstr); stmt.setString(1,request.getParameter("title")); stmt.setString(2,content); stmt.setString(3,request.getParameter("bdate")); stmt.setString(4,request.getParameter("edate")); stmt.setString(5,userid); stmt.setString(6,request.getRemoteAddr()); stmt.executeUpdate(); stmt.close(); con.close(); response.sendRedirect(response.encodeRedirectURL("list.jsp")); } %> 6.editfrm.jsp �� ��+���ó�ô�� �"ö Ã�Ä�Å���ó�ô�� �"ö Ã�Ä�Å���ó�ô�� �"ö Ã�Ä�Å���ó�ô�� �"ö Ã�Ä�Å �� �� <%@ page contentType="text/html;charset=big5" import="java.sql.*" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { String newsid=request.getParameter("newsid"); %> <html> <head>

62

<meta http-equiv="Content-Type" content="text/html; charset=big5"> <title> ³�Í�Î-Ï ñpò </title>

</head> <script language="javascript"> function CheckFormData(obj,str) { val=obj.value; if (val=="") { validatePrompt(obj," ø0è�éù�Êûú "+str+" üý½ "); return(false); } return(true); } function CheckDate(obj){ val=obj.value; if (val.length!=8) { validatePrompt(obj,"

¦ÿþ��������8Ø

YY/MM/DD");

return(false); } i=0; for (i=0;i<=7;i++) { str=val.charAt(i); if ((i==2)||(i==5)) { if (str!="/") { validatePrompt(obj,"

¦ þ���� ·!� ��� YY/MM/DD");

return(false); } } else { v = parseInt(str); if (isNaN(v)) { validatePrompt(obj,"

¦ÿþ ��� ·��� ��� YY/MM/DD");

63

return(false); } } } return(true); } function CheckData(form) { if (!CheckFormData(form.bdate," Ð ¥I¦ ")) return(false); if (!CheckFormData(form.edate," ï�ð ¦ ")) return(false); if (!CheckFormData(form.title," Ð ¥���� ")) return(false); if (!CheckFormData(form.content," Ð ¥�´�µ ")) return(false);

if (!CheckDate(form.bdate)) return(false); if (!CheckDate(form.edate)) return(false); return(true); } function validatePrompt(Ctrl,PromptStr) { alert(PromptStr); Ctrl.focus(); return; } </script> <body> <%@ include file="topmenu.jsp" %> <% if (newsid==null) { out.println("<p align='center'> ø�"$# % Ñ'&�( ʤ½ </p>");

} else { %> <%@ include file="conn.jsp" %> <% PreparedStatement stmt=con.prepareStatement("select * from news where newsid=? and userid=?"); stmt.setInt(1,Integer.parseInt(newsid));

64

stmt.setString(2,userid); ResultSet rs=stmt.executeQuery(); if (rs.next()) { String content=rs.getString("content"); content=content.replaceAll("<br>","\n"); %> <p align="center"> ñVòÐ ¥ ��ø�ù��� ä »"¼Ö£ </p>

<form name="formadd" method="post" action="edit.jsp" onsubmit="return(CheckData(this))"> <input type="hidden" name="newsid" value="<%=newsid%>"> <table border="1" width="80%" align="center"> <tr> <td> Ð ¥§¦ </td><td><input type="text" name="bdate" size="8"

maxlength="8" value="<%=rs.getString("bdate")%>"></td> </tr> <tr> <td> ï-ð ¦ </td><td><input type="text" name="edate" size="8"

maxlength="8" value="<%=rs.getString("edate")%>"></td> </tr> <tr> <td> Ð ¥���� </td><td><input type="text" name="title" size="60"

maxlength="40" value="<%=rs.getString("title")%>"></td> </tr> <tr> <td> Ð ¥�´�µ </td><td><textarea cols="60" rows="6"

name="content"><%=content%></textarea></td> </tr> </table> <p align="center"><input type="submit" name="bsend" value=" ��� "></p>

</form> <% } else { out.println("<p align=center> )�*-¹+�º�»>¼¤½ </p>");

} rs.close();

65

stmt.close(); con.close(); } %> </body> </html> <% } %> 7.edit.jsp �� ��+���ó-ô,� ������à5á���ó-ô,� ������à5á���ó-ô,� ������à5á���ó-ô,� ������à5áV���� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <%@ include file="conn.jsp" %> <% request.setCharacterEncoding("big5"); String content=request.getParameter("content"); content=content.replaceAll("\n","<br>"); String updatestr="update news set title=?,content=?,bdate=?,edate=?,sdate=now,ip=? where newsid=? and userid=?"; PreparedStatement stmt=con.prepareStatement(updatestr); stmt.setString(1,request.getParameter("title"));

66

stmt.setString(2,content); stmt.setString(3,request.getParameter("bdate")); stmt.setString(4,request.getParameter("edate")); stmt.setString(5,request.getRemoteAddr()); stmt.setInt(6,Integer.parseInt(request.getParameter("newsid"))); stmt.setString(7,userid); stmt.executeUpdate(); stmt.close(); con.close(); response.sendRedirect(response.encodeRedirectURL("list.jsp")); } %> 8.del.jsp �� ��.-�/��0��à�á-�/��0��à�á-�/��0��à�á-�/��0��à�áV���� <%@ page contentType="text/html;charset=big5" %> <%@ page import="java.sql.*" %> <% String logok=(String)session.getAttribute("logok"); String userid=(String)session.getAttribute("userid"); if ((logok==null)||(userid==null)) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else if (!logok.equals("yes")) { response.sendRedirect(response.encodeRedirectURL("login.htm")); } else { %> <%@ include file="conn.jsp" %> <% String delstr="delete from news where newsid=? and userid=?"; PreparedStatement stmt=con.prepareStatement(delstr); stmt.setInt(1,Integer.parseInt(request.getParameter("newsid"))); stmt.setString(2,userid); stmt.executeUpdate();

67

stmt.close(); con.close(); response.sendRedirect(response.encodeRedirectURL("list.jsp")); } %> 9.topmenu.jsp �� ��10$2 Ä�Å0$2 Ä�Å0$2 Ä�Å0$2 Ä�Å �� �� <p align="center"> ��������³�Í�Î-Ï Ñ"Ò4365 </p>

<table width="100%" border="0"> <tr> <td> Ô�Õ¾£ <%=userid%></td><td><a href="list.jsp"> Ð ¥�ä�å</a></td><td><a href="addfrm.jsp"> Í�÷�Ð ¥ </a></td><td><a href="logout.jsp"> É�� </a></td>

</tr> </table> <hr> 10.conn.jsp �� ��87:9;<�=?>�@7:9;<�=?>�@7:9;<�=?>�@7:9;<�=?>�@²���� <%

String jdbcstr=" jdbc:mysql://localhost:3306/news?user=root&password=1234";

Class.forName("org.gjt.mm.mysql.Driver");

Connection con=DriverManager.getConnection(jdbcstr,"","");

%>

10. A$BA$BA$BA$B MySQL news 7,9;7,9;7,9;7,9; new »>¼C�D,E�*$F:G å � £uÉ\Ê�Ô-Õ å�� user H�« ¥ »>¼ å news IKJ?L�MN

phpmyadmin O$P�»"¼C�Hâ»"¼ å ø$Q R MySQL SOP �K��S T ä �"¹$F6G»"¼ å�UWV:X$Y�Z ¬ £

68

S £ userå��UWV�Y[Z ¬

S £ newså ��UWV Y,Z ¬

5.4���� 1 1 1 1 JFreeChart 2 3 4 5 6 72 3 4 5 6 72 3 4 5 6 72 3 4 5 6 7

Install JFreeChart Class \

jfreechart-0.9.4.jar H jcommon-0.7.1.jar ]4^/usr/share/tomcat5/webapps/ROOT/WEB-INF/lib

69

5.4.1���� ; < = > ? @ A; < = > ? @ A; < = > ? @ A; < = > ? @ A

_ `_ `_ `_ `1 aa aacb�db�db�db�d barchart.html

<title> e'fWS </title> <center><h1> e'f4S </h1></center>

<center><img src="barchart.jsp"></center>

_ `_ `_ `_ `2 aa aacb�db�db�db�d barchart.jsp

<%@page contentType="image/jpeg;charset=MS950"%> <!-- g �?X?h�i S�j , k�l contentType

�image/jpeg -->

<%@page import="java.util.*,java.io.*,java.awt.*"%> <%@page import="com.jrefinery.data.*,com.jrefinery.chart.*,com.jrefinery.chart.ui.*,com.jrefinery.chart.data.*"%> <% String[] xAxisData = {" +�m ", " n�m ", " o�m "}; // k�l:pGWS�j Y"¨-©�q�r

Number[][] data ={ {new Integer(120),new Integer(138),new Integer(300)}, {new Integer(95),new Integer(87),new Integer(99)}, {new Integer(180),new Integer(156),new Integer(173)} }; // s n�t$u äv?� k�l�¢?w String[] year ={"2002 x ","2003 x ","2004 x "}; // k�l�x�y?z?{

DefaultCategoryDataset dataSet = new DefaultCategoryDataset(year,data); //\x�y�z?{H�¢?w�k�l dataSet

dataSet.setCategories(xAxisData); // k�l�S[j Y"¨�©�q�r

JFreeChart chart=null; chart = ChartFactory.createVerticalBarChart(" ³?|�o�x�} +�~\¢�� ", " m,� ", "�

", dataSet, true); // k�l�S å�Y6����q�r ���� ¨���� ����� ¨���� � dateSet;true � h�i �6xy Y S���� false ��·��

OutputStream ostream = response.getOutputStream();

70

// �?� responseY

OutputStream

ChartUtilities.writeChartAsJPEG(ostream, chart, 300, 200); //reder

5�� S���k�l�S�� Y�� � 300, � � 200, �����6� ostream

ostream.close(); // ��� ostream

%> _ `_ `_ `_ `

3 aa aac�������  �������  �������  �������  

5.4.2���� ; <; <; <; < 3D = > ? @ A= > ? @ A= > ? @ A= > ? @ A

_ `_ `_ `_ `1 aa aacb�db�db�db�d 3d.html

<title>jsp ��¡ 3D e'f4S </title> <center><h1> ��¡ 3D e�f4S </h1></center>

<center><img src="3d.jsp"></center> _ `_ `_ `_ `

2 aa aacbb bb4dd dd 3d.jsp

<%@page contentType="image/jpeg;charset=MS950"%> <!-- g �?X?h�i S�j , k�l contentType

�image/jpeg -->

<%@page import="java.util.*,java.io.*,java.awt.*"%> <%@page import="com.jrefinery.data.*,com.jrefinery.chart.*,com.jrefinery.chart.ui.*,com.jr

71

efinery.chart.data.*"%> <% String[] xAxisData = {" +�m ", " n�m ", " o�m "}; // k�l:pGWS�j Y"¨-©�q�r

Number[][] data ={ {new Integer(120),new Integer(138),new Integer(300)}, {new Integer(95),new Integer(87),new Integer(99)}, {new Integer(180),new Integer(156),new Integer(173)} }; // s n�t$u äv?� k�l�¢?w String[] year ={"2002 x ","2003 x ","2004 x "}; // k�l�x�y?z?{

DefaultCategoryDataset dataSet = new DefaultCategoryDataset(year,data); //\x�y�z?{H�¢?w�k�l dataSet

dataSet.setCategories(xAxisData); // k�l�S[j Y"¨�©�q�r

JFreeChart chart=null; chart = ChartFactory.createVerticalBarChart3D(" ³�|?o�x$}�+�~"¢�� ", " m6�", "�

", dataSet, true); // k�l�S å�Y6����q�r ���� ¨���� ����� ¨���� � dateSet;true � h�i �6xy Y S���� false ��·��

OutputStream ostream = response.getOutputStream(); // �?� response

YOutputStream

ChartUtilities.writeChartAsJPEG(ostream, chart, 300, 200); //reder

5�� S���k�l�S�� Y�� � 300, � � 200, �����6� ostream

ostream.close(); // ��� ostream

%>

_ `_ `_ `_ `3 aa aac�������  �������  �������  �������  

72

5.4.3���� ; < B C A A; < B C A A; < B C A A; < B C A A

_ `_ `_ `_ `1 aa aacb�db�db�db�d line.html

<title>jsp ¢�£�S </title> <center><h1> ¢�£ S </h1></center>

<center><img src="line.jsp"></center>

_ `_ `_ `_ `

2 aa aacb�db�db�db�d line.jsp <%@page contentType="image/jpeg;charset=MS950"%> <!-- g �?X?h�i S�j , k�l contentType

�image/jpeg -->

<%@page import="java.util.*,java.io.*,java.awt.*"%> <%@page import="com.jrefinery.data.*,com.jrefinery.chart.*,com.jrefinery.chart.ui.*,com.jrefinery.chart.data.*"%> <% String[] xAxisData = {" +�m ", " n�m ", " o�m "}; // k�l:pGWS�j Y"¨-©�q�r

Number[][] data ={ {new Integer(120),new Integer(138),new Integer(300)}, {new Integer(95),new Integer(87),new Integer(99)}, {new Integer(180),new Integer(156),new Integer(173)} }; // s n�t$u äv?� k�l�¢?w

73

String[] year ={"2002 x ","2003 x ","2004 x "}; // k�l�x�y?z?{

DefaultCategoryDataset dataSet = new DefaultCategoryDataset(year,data); //\x�y�z?{H�¢?w�k�l dataSet

dataSet.setCategories(xAxisData); // k�l�S[j Y"¨�©�q�r

JFreeChart chart=null; chart = ChartFactory.createLineChart(" ³?|�o�x�}�+~\¢�� ", " m,� ", "

�",

dataSet, true); // k�l�S å�Y6����q�r ���� ¨���� ����� ¨���� � dateSet;true � h�i �6xy Y S���� false ��·��

OutputStream ostream = response.getOutputStream(); // �?� response

YOutputStream

ChartUtilities.writeChartAsJPEG(ostream, chart, 300, 200); //reder

5�� S���k�l�S�� Y�� � 300, � � 200, �����6� ostream

ostream.close(); // ��� ostream

%> _ `_ `_ `_ `

3 aa aac�������  �������  �������  �������  

5.4.4���� ; < D E A; < D E A; < D E A; < D E A

_ `_ `_ `_ `1 aa aacb�db�db�db�d half.html

74

<title>jsp 5�� S </title>

<center><h1>5�� S </h1></center>

<center><img src="half.jsp"></center>

_ `_ `_ `_ `

2 aa aacb�db�db�db�d half.jsp <%@page contentType="image/jpeg;charset=MS950" import="java.util.*,java.io.*,java.awt.*,com.jrefinery.data.*,com.jrefinery.chart.*,com.jrefinery.chart.ui.*,com.jrefinery.chart.data.*"%><% String[] xAxisData = {" +�m ", " n�m ", " o�m "," ¤m "," ¥�m "," ¦�m "};

Number[][] data ={{new Integer(300),new Integer(99),new Integer(173),new Integer(250),new Integer(279),new Integer(340)}}; String[] year ={"2004 x "};

DefaultCategoryDataset dataSet = new DefaultCategoryDataset(year,data); dataSet.setCategories(xAxisData); JFreeChart chart=null; chart = ChartFactory.createVerticalBarChart("2004 x§¨?x0¢�� ", "", "",

dataSet, true); chart.setBackgroundPaint(new GradientPaint(0, 0, new Color(163,202,214), 0, 300,new Color(252,203,252))); // k�l�©�ª�«�¬ ,GradientPaint

��­'® ¬ , ¯ X k�l�°�+ «�¬ , ± N

//chart.setBackgroundPaint(new Color(100,100,100)); CategoryPlot plot = chart.getCategoryPlot(); plot.setSeriesPaint(0,new Color(208,185,102)); //plot

��5�� S�D Y bar,N

setSeriesPaint k�l:p�G barY «�¬ , ²$± N ­ ® ¬

plot.setLabelFont(new Font("sansserif",Font.PLAIN,10)); plot.setLabelPaint(Color.red); plot.setLabelsVisible(true); // k�l:p?³´´�À�Ì�æ-ç X ��µ¢ r , s:H?k�l r jH�«�¬

ValueAxis va=plot.getRangeAxis(); va.setUpperMargin(0.1); plot.setRangeAxis(va); // k�l:´?´ Y À v�¶· , s¸�)�*�¹º��,µ0¢ r�¨�»

75

plot.setCategoryGapsPercent(0.4); // k�l:p?³´´ Y�� y , s¸,´´�¼�½¿¾

OutputStream ostream = response.getOutputStream(); ChartUtilities.writeChartAsJPEG(ostream, chart, 400, 300); ostream.close(); %>

_ `_ `_ `_ `3 aa aac�������  �������  �������  �������  

76

77

�� ��� ��� ��� ����� � � ! " � �� � ! " � �� � ! " � �� � ! " � �

��À ¦ % Y t�Á�s6H�Â�Í�Ã?Ä-ø�Q�R-ì?Å$��Æ�� SOP q'Ç �1J ú Linux È�É 350¨�Ê È É6Ã?Ä�Ë5ü�Ì úÎÍ?Ï ÐÑ4Ò:Ó'k ¨�Ê È É6Ã?Ä�Ë�ü�Ì ú~»"¼?C?ÐÑWÒ�Ó'k ¨Ê È�É:Ã?Ä�Ë�üÔI

6.1���� 8 9 : ;8 9 : ;8 9 : ;8 9 : ;

3,55Ñ�Ò�Õ ³���l þ s root Ö'�pÉ\Ê×��Ø?ØÙ Ç IcÚ RedHat Linux D[*+�Û logwatch à � ��l�Ü�Ý�Þ ß log file �àJ�á0ª$µ�â�%ã�àä��\ª�Ù�å root I+ëæ�ç$è � º Ó O?éê Ó�ë Ü ì í�î log file (/var/log/tomcat5/) æ�ç�*�â�%6ï�j!I

6.2���� < = � >< = � >< = � >< = � >

ê Ó ±�� http://rpmfind.net ð�¶ Tomcat ÆW�:ñ Ç �8�'À�ò?ó Y ÆW�'ô'õ-øQ�R Linux OS SOP } 5.4 ö÷I

6.3���� ? @ A B C D? @ A B C D? @ A B C D? @ A B C D

ø k TomcatY k�l�� ù\æ úÚ /etc/tomcat5

´, û�%[��l þ�ü �!I

78

�# ��# ��# ��# � $ % & ' ($ % & ' ($ % & ' ($ % & ' (

Q1 aa aacý�þ�ÿ������ý�þ�ÿ������ý�þ�ÿ������ý�þ�ÿ������ IP Address ������������������������ Tomcat Server

Ans aa aa ±�Q R�� ä Í��

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/context.html

Q2 aa aa Linux+Tomcat+MySQL ������������ ������������ ������������ ������������

ø$Q R�� ä�q�� http://www.javaworld.com.tw/jute/post/view?bid=6&id=26954&tpg=1&ppg=1&sty=1&age=0#26954 http://www.javaworld.com.tw/jute/post/view?bid=6&id=21986&tpg=1&ppg=1&sty=1&age=0#21986

Q3 aa aa Tomcat ýý ýýþ��þ��þ��þ�� Apache ������������

ø$Q R�� ä�q��

http://www.meritonlinesystems.com/docs/apache_tomcat_redhat.html

Q4 aa aa Tomcat ý�þ��ý�þ��ý�þ��ý�þ�� IIS ������������

ø$Q R�� ä�q��

http://www.javaworld.com.tw/jute/post/view?bid=9&id=42794&sty=1&tpg=1&age=0

79

Q5 aa aacý�þ����ý�þ����ý�þ����ý�þ���� Tomcat 5 ��� "!$#�%'&�( ��� "!$#�%'&�( ��� "!$#�%'&�( ��� "!$#�%'&�(

é�)"* N Tomcat 5. � Ú5·�ñVò Tomcat +, Ø Y�-�. ���0/ N Ó�1�2 Form submit

Y »>¼\+43�s ISO8859-1 5 Ò ��à � k �76$8�9;:=<

\ r?> \$@�A�

Big5( B�C4D q ) or GB2312/GBK( D�C4D q ) �FE�G�Ú � N à � D¿�IH U * Y request.getParameter("xx"); È¿¾ toBig5String()

Y 5 Ò � Ò$J À�� U * Y Dq�K ©�L ·�����µNM�H��aï�á!�PO�æ�ª�µ�Q�R -�. �!� D q O�æTS"UTV Ø I W 2 Þ ßNX Ò � ª�µ K © � Ú QueryString

Y�Y ß÷�às�§'Ú Tomcat 4.x Ü�Z �[ J SUBMIT Ü]\ N GET or POST � Tomcat server H parameters

Y 5Ò�^ \ N Æ`_ Y�a Ø �Fb?Ú Tomcat 5.x c��a·$d�L�e �gf\

QueryString Y

Y ß�h�P �4i �kj §�èNl � Form Y

Method \ N GET H�m]n\Q�o?p�Ú U

RL À Y D q ��À�q5¸ Tomcat Ü � [ J J�L@ Ø � ^ �S"UTV Ø �sr�t�u�vw È 2 URLEncode ²�+�x I

Í?Ï�À��c*y"zH�¹'G K�{ ��O?é

\ U *4D q ò]\ N base64 a Ø �a¸4¾ serv

er À ��à �\ :|<~}

base64 decode ¿�i!� èT� D q ·���ª~� K�{ I ¹�xÈ�N��� ±�s Y�� ¹'G K�{ �Fb5æ U *�Í5Á�S"UN��l X \ N POST ����à � k �6�X�� Ü�Þ$�T� ��r?G�Q�o�æ�\ N GET À�q���r?G�Q�o�æ�\ N POST À�q������ zH�·'_ Y�v� \ N ·'_ Y�Y ß�� ¹"x Y à � +"���"����� ^ )�* �ÎÂ]��� ë � Ì ��� )��T��¾�I �`�

Tomcat Y�q Ç H$+�, Ø �PE"G�¶�¸4¾ K�{?U Ú�H Y���Y�v � � T�*"���

s � Y È � ��M��]/ Form submit Y »"¼��� ���� ISO8859-1

Y�a Ø � �� ��¯�æ$ �¡�� Tomcat Y�q Ç��� Ý�È×�£¢�l�O�æ�· < ��uO�æ ��¤�À�¹'G

Q"o�¸ server.xml D4M < I ���$¥�¦���$¥�¦���$¥�¦���$¥�¦ aa aa ø w

�`� $TOMCAT_HOME/webapps/tomcat-docs/config/http.html ¹ G ���

���g§$¨�©]��J$�«ª URIEncoding ª This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used. useBodyEncodingForURI ª This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x,

80

where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false. À¬?n�G Tomcat Q�o��~æ k�l:Ú server.xml D Y http <Connector /> ­® � X�Y�� QueryString D q S"U�V Ø Y�K¯{ �su 8"9 ��°�k�l�¹?n G�Q"oT±D ç +�I

URIEncoding ø�k�l � URIEncoding="ISO-8859-1" ²�l � "ISO-8859-1" a Ø �F³ QueryString

Y?r$´"a Ø�µ post body ƶ_ I

useBodyEncodingForURI ¹�æ N i:Æ µ Tomcat 4.x c Y � k�l Y�· æ "true" or "false" �¹¸�º0æ"² "

X$»�X ³ QueryString µ

POST BODY \ N ƶ_ Y?r´"a Ø ?" ��¯�æ�kTU true �sr?²�±$¼�½ "ISO-8859-1"

a Ø Y�V"¾ I O?é×��\ N URIEncoding

Y k�l �À¿$Á useBodyEncodingForURI Y È � æ� ¾ Æ� Tomcat 4.X I »$2 ¯�¡�+ q�Y���� � Ò�J À�Ã�n�G�Q�o ^T» k!� Tom

cat ² L \ N "ISO-8859-1" Y�a Ø �Är ��ÅÆ O�æ���* K�{�Ç ? E�G'È Tom

cat Source Code i Ø�ì�T� ¾�I

// ÉËÊÀÌËÍ|Î Tomcat ÏÑÐÓÒ QueryString Ô�Õ=Ö$× // Ø org.apache.tomcat.util.http.Parameters ÉÑÙ class Ú$Û private String urlDecode(ByteChunk bc, String enc)

throws IOException {

if( urlDec==null ) {

urlDec=new UDecoder();

}

urlDec.convert(bc);

String result = null;

if (enc != null) {

bc.setEncoding(enc);

result = bc.toString();

}

else {

CharChunk cc = tmpNameC;

cc.allocate(bc.getLength(), -1);

// Default encoding: fast conversion

byte[] bbuf = bc.getBuffer();

81

char[] cbuf = cc.getBuffer();

int start = bc.getStart();

for (int i = 0; i < bc.getLength(); i++) {

cbuf[i] = (char) (bbuf[i + start] & 0xff);

}

cc.setChars(cbuf, 0, bc.getLength());

result = cc.toString();

cc.recycle();

}

return result;

}

� Tomcat Ü$µ QueryString ��) *�k�l encode Ü�� ��Ý�Þ q Ç D U�� ø k

\ N ISO-8859-1 Y�a Ø �Óß\æ N +�à fast conversion i"5 Ò ��M?�"áU4Dq�K�{ � U s �gO�æ 8�9 Ú Server.xml D �â¤-À URLEncoding

Y Q"ok�lM<Tã I Connector

Y k�l"ä��åª

<Connector

debug="0"

acceptCount="100"

connectionTimeout="20000"

disableUploadTimeout="true"

port="80"

redirectPort="8443"

enableLookups="false"

minSpareThreads="25"

maxSpareThreads="75"

maxThreads="150"

maxPostSize="0"

URIEncoding="ISO-8859-1"

>

</Connector>

82

Q6 aa aaÓæ�çæ�çæ�çæ�ç Tomcat Æ\Ç�È Ü-Ý�Þ\ßÆ\Ç�È Ü-Ý�Þ\ßÆ\Ç�È Ü-Ý�Þ\ßÆ\Ç�È Ü-Ý�Þ\ßNè�ý?þ����è�ý?þ����è�ý?þ����è�ý?þ����

Ans aa aaIéê ������� ë�ìîíðï ������������� ��ñòôóöõ÷�øù«ú

Q7 ûû ûû ���������� ü�ýþü�ýþü�ýþü�ýþ � ��������� ÿÿ ÿÿ ���� ������������ Ans ûû ûû Crystal Report � Java(Tomcat Server) �������� ���� 1.Crystal Report Java Reporting Component (Crystal Report 10) �����������

http://support.businessobjects.com/library/kbase/articles/c2014756.asp 2.Report Application Server 9 (v10 ���� Crystal Enterprise Embedded) �����������

http://support.businessobjects.com/library/kbase/articles/c2012210.asp �� �!

��"�#%$ ��� http://www.businessobjects.com/products/dev_zone/java/default.asp?ref=devzone_main Q8 ûû ûû Tomcat &�')(+*-,�.�/10+243)5�6�7&�')(+*-,�.�/10+243)5�6�7&�')(+*-,�.�/10+243)5�6�7&�')(+*-,�.�/10+243)5�6�7 8)9 �:�;%<�=

�������> �������������������� ��� �� ��? <Host name="localhost" ...>

...

<Valve className="org.apache.catalina.valves.AccessLogValve"

prefix="localhost_access_log." suffix=".txt"

pattern="common"/>

...

</Host>

Q9 ûû ûû@*�,*�,*�,*�, Tomcat Connection Pool AB�C�DAB�C�DAB�C�DAB�C�D $ �����E�F�G �http://www.aoindustries.com/servlet/com.aoindustries.website.clientarea.FAQ?category=jvms&page=recommended_pool �http://forum.java.sun.com/thread.jsp?thread=555635&forum=45&message=

83

2723349 �http://lists.mysql.com/java/7741 Q10 ûû ûû@H�IKJH�IKJH�IKJH�IKJ Tomcat LM,LM,LM,LM, Clustering NN NN Load Balancing $ �����E�F�G

http://www.onjava.com/pub/a/onjava/2004/04/14/clustering.html http://jakarta.apache.org/tomcat/tomcat-5.0-doc/balancer-howto.html Q11 ûû ûû@H�IKJH�IKJH�IKJH�IKJ Tomcat O)PO)PO)PO)P Session Replication $ �����E�F�G

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/cluster-howto.html Session failure and cluster Connection pool

84

�)��)��)��)� * + , -* + , -* + , -* + , -

Q%RS�T

� Jakarta Tomcat U�V�W%X�Y�U)V)W%XKZM[%\^]@_%`+�)a%bK�Mc jakarta projectd)e4f^gihkj4lKmon

http://jakarta.apache.org/site/mail.html http://jakarta.apache.org/site/mail2.html � Jakarta Tomcat p�q F)r Jakarta Tomcat

d p�q F)r ]s� Tomcatd ! ��t gsu c R�v g FAQ w S�T ]sx

Tomcat yz�{ d F�r n

http://jakarta.apache.org/tomcat � Jpackge p�q F�r | F)r)}4~���� d���� ]

java

h�j ]@����� l package ]�� h�j1�-���

z�� h�j%�-� { d)� v n

http://www.jpackage.org/ � MySQL p�q F�r MySQL

d p�q F)r ]�� | 8 �%�)���K��� Y4� %����� d MySQL

d ! ��tY u c R�v n

http://www.mysql.com/ � phpMyAdmin p�q F�r phpMyAdmin ����� MySQL

� 84��  d+¡�¢ ]£� | F)r 8 �K�K¤�� ���¥+¦d¡�¢§n

http://www.phpmyadmin.net � Sun Java p�q F�r Java

d�¦ �4¨ ] � � Javad p�q R+v ]

!��t g@©�ª%d�jK« Y �)¬%­k®M¯�° �¤��F�r n

http://java.sun.com ± RS�T

85

� Tomcat ²�³-´�µ ¤ x�¶·�¸4¹-º)» � d ²�³ R�v ]¼ck½ ¤)�1¾ 84¿ � http://www.oreilly.com/catalog/tomcat À4ÁÂ]�ÃKÄ1Å�Æ F�r4Ç 8 �http://tomcatbook.brittainweb.org ]sÀ1Á1c�½ | ¾ d S�È n ���%��É�Ê d Apache web Ë�ÌÎÍ d F�r ��� � ] � {�� ¦�Ï F�r�Ð)Ñ)Ò servlet

� JSP ] � Ä%x)Ó�� h�j Java web

� v ]@�Ô ¯�Õ)Ö ¿ Tomcat ×à web

�M +!� h�jM��d

!� �

� JSP 2.0 ²�³-´�µ Ú Ð�Û g ÚKÜݺ / Þ JSP 2.0 ²�³�´�µ4��� JSP ß-àkY4áKâ d�ã Ää]æåç�{�èé Java Web

h�j ²�³- JSP 2.0 � JAVA2 êq�ë1ìMí - î�ï Û �1¾ � JAVA ð)ñ

= dkòó Ð �Kô)ßõ�» d ��� , �%öK÷�½%øù)ú � � ��û ¦dü+ý, þ1ÿ�����ö�����

!� Рd ~)����

� SCWCD ������

� �����- ����� �1¾������ z�{ d Java Webhkj ²�³�� ����� �U � SCWCD ��

� Java ²�³%W%X F�r � http://www.javaworld.com.tw �"!Ky ¦d Java ²�³KW%X F�r ] � ¾ èé , #�à"$ ® , W%X �"% … w u c&$ ® ]�� ¯ � n

'' '')(+*(+*(+*(+*-,, ,,&.0/2143.0/2143.0/2143.0/21436587587587587 9;:=<>:=?+@;:9;:=<>:=?+@;:9;:=<>:=?+@;:9;:=<>:=?+@;:

( ���������MyFirstServlet.java ( ��javac ��MyFirstServlet ( �MyFirstServlet.class � � Tomcat � � �� � � � � � ( � � Tomcat � � � ( � � � �� � � MyFirstServlet

! 1"�MyFirstServlet.java

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyFirstServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Servlet Exercise</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>This is my first Servlet!</h2>"); out.println("</body>"); } } ! 2"��MyFirstServlet.java

# javac MyFirstServlet.java