tomcat application server standard operation...
TRANSCRIPT
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 ([email protected]).
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 í�î é�� YzzÌ 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