D:\>java -classpath d:\standalone kr.or.ddit.HelloJava
D:\>set classpath=d:\standalone
D:\>javac d:\standalone\HelloJava.java -encoding UTF-8 -d D:\standalone
D:\>java kr.or.ddit.HelloJava
Microsoft Windows [Version 10.0.18363.1198]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\PC-02>d:
<!-- 해당경로로 ㄱㄱ -->
D:\>cd standalone
<!-- 자바 컴파일러버전확인 -->
D:\standalone>javac -version
javac 1.7.0_80
<!-- UTF-8로 컴파일 -->
D:\standalone>javac HelloJava.java -encoding UTF-8
<!-- 디렉터리 정보확인 -->
D:\standalone>dir
D 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 0EE7-ADA3
D:\standalone 디렉터리
2020-11-19 오전 10:37 <DIR> .
2020-11-19 오전 10:37 <DIR> ..
2020-11-19 오전 10:37 431 HelloJava.class
2020-11-19 오전 10:36 166 HelloJava.java
2020-11-19 오전 10:21 <DIR> kr
2개 파일 597 바이트
3개 디렉터리 977,665,257,472 바이트 남음
<!-- del: 해당 파일 삭제 -->
D:\standalone>del HelloJava.class
<!-- 클래스패스 설정하여 컴파일 -->
D:\standalone>javac HelloJava.java -encoding UTF-8 -d .
D:\standalone>dir
D 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 0EE7-ADA3
D:\standalone 디렉터리
2020-11-19 오전 10:41 <DIR> .
2020-11-19 오전 10:41 <DIR> ..
2020-11-19 오전 10:36 166 HelloJava.java
2020-11-19 오전 10:41 <DIR> kr
1개 파일 166 바이트
3개 디렉터리 977,665,257,472 바이트 남음
D:\standalone>cd kr\or\ddit
D:\standalone\kr\or\ddit>dir
D 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 0EE7-ADA3
D:\standalone\kr\or\ddit 디렉터리
2020-11-19 오전 10:41 <DIR> .
2020-11-19 오전 10:41 <DIR> ..
2020-11-19 오전 10:41 431 HelloJava.class
1개 파일 431 바이트
2개 디렉터리 977,665,257,472 바이트 남음
D:\standalone\kr\or\ddit>cd ../../../
D:\standalone>java HelloJava
오류: 기본 클래스 HelloJava을(를) 찾거나 로드할 수 없습니다.
D:\standalone>java kr.or.ddit.HelloJava
Hello Java
D:\standalone>cd ..
D:\>java kr.or.ddit.HelloJava
오류: 기본 클래스 kr.or.ddit.HelloJava을(를) 찾거나 로드할 수 없습니다.
D:\>java standalone.kr.or.ddit.HelloJava
Exception in thread "main" java.lang.NoClassDefFoundError: standalone/kr/or/ddit/HelloJava (wrong name: kr/or/ddit/HelloJava)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
D:\>java
사용법: java [-options] class [args...]
(클래스 실행)
또는 java [-options] -jar jarfile [args...]
(jar 파일 실행)
여기서 options는 다음과 같습니다.
-d32 사용 가능한 경우 32비트 데이터 모델을 사용합니다.
-d64 사용 가능한 경우 64비트 데이터 모델을 사용합니다.
-server "server" VM을 선택합니다.
-hotspot "server" VM의 동의어입니다[사용되지 않음].
기본 VM은 server입니다..
-cp <디렉토리 및 zip/jar 파일의 클래스 검색 경로>
-classpath <디렉토리 및 zip/jar 파일의 클래스 검색 경로>
클래스 파일을 검색할 ;(으)로 구분된 디렉토리,
JAR 아카이브 및 ZIP 아카이브 목록입니다.
-D<name>=<value>
시스템 속성을 설정합니다.
-verbose:[class|gc|jni]
상세 정보 출력을 사용으로 설정합니다.
-version 제품 버전을 인쇄한 후 종료합니다.
-version:<value>
실행할 버전을 지정해야 합니다.
-showversion 제품 버전을 인쇄한 후 계속합니다.
-jre-restrict-search | -no-jre-restrict-search
버전 검색에서 사용자 전용 JRE를 포함/제외합니다.
-? -help 이 도움말 메시지를 인쇄합니다.
-X 비표준 옵션에 대한 도움말을 인쇄합니다.
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
세분성이 지정된 검증을 사용으로 설정합니다.
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
세분성이 지정된 검증을 사용 안함으로 설정합니다.
-esa | -enablesystemassertions
시스템 검증을 사용으로 설정합니다.
-dsa | -disablesystemassertions
시스템 검증을 사용 안함으로 설정합니다.
-agentlib:<libname>[=<options>]
<libname> 고유 에이전트 라이브러리를 로드합니다(예: -agentlib:hprof).
-agentlib:jdwp=help 및 -agentlib:hprof=help도 참조하십시오.
-agentpath:<pathname>[=<options>]
전체 경로명을 사용하여 고유 에이전트 라이브러리를 로드합니다.
-javaagent:<jarpath>[=<options>]
Java 프로그래밍 언어 에이전트를 로드합니다. java.lang.instrument를 참조하십시오.
-splash:<imagepath>
이미지가 지정된 스플래시 화면을 표시합니다.
자세한 내용은 http://www.oracle.com/technetwork/java/javase/documentation/index.html을 참조하십시오.
<!-- -classpath <디렉토리 및 zip/jar 파일의 클래스 검색 경로> -->
D:\>java -classpath d:\standalone kr.or.ddit.HelloJava
Hello Java <!-- 소스 내 print 구문 잘 출력됨-->
<!-- class path를 d:\standalone 으로 설정: 콘솔창 닫으면 초기화-->
D:\>set classpath=d:\standalone
<!-- 윈도우 환경설정값 -->
D:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\PC-02\AppData\Roaming
CATALINA_HOME=D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37
classpath=d:\standalone <!-- ★ -->
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-67906HQ
ComSpec=C:\Windows\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default
HOMEDRIVE=C:
HOMEPATH=\Users\PC-02
JAVA_HOME=D:\B_Util\2.Java\JDK1.8
LOCALAPPDATA=C:\Users\PC-02\AppData\Local
LOGONSERVER=\\DESKTOP-67906HQ
NUMBER_OF_PROCESSORS=8
OneDrive=C:\Users\PC-02\OneDrive
OS=Windows_NT
Path=d:\Anaconda3;d:\Anaconda3\Library\mingw-w64\bin;d:\Anaconda3\Library\usr\bin;d:\Anaconda3\Library\bin;d:\Anaconda3\Scripts;D:\B_Util\4.Oracle\appClient;D:\B_Util\4.Oracle\app\oracle\product\11.2.0\server\bin;D:\B_Util\2.Java\JDK1.7\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\B_Util\Git\cmd;C:\Program Files\TortoiseSVN\bin;C:\Users\PC-02\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e0d
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\PC-02\AppData\Local\Temp
TMP=C:\Users\PC-02\AppData\Local\Temp
USERDOMAIN=DESKTOP-67906HQ
USERDOMAIN_ROAMINGPROFILE=DESKTOP-67906HQ
USERNAME=PC-02
USERPROFILE=C:\Users\PC-02
windir=C:\Windows
<!-- 클래스 패스 이후의 경로(qualified name)쓴 후 클래스 실행-->
D:\>java kr.or.ddit.HelloJava
Hello Java
D:\>java kr/or/ddit/HelloJava
Hello Java
D:\>java kr/or/ddit/HelloJava
Hello Java
<!-- -encoding: 인코딩 설정/ -d: 컴파일 후 저장 경로 -->
D:\>javac d:\standalone\HelloJava.java -encoding UTF-8 -d D:\standalone
<!-- 인코딩 설정 마쳐서 잘됨 -->
D:\>java kr.or.ddit.HelloJava
안녕 자바
D:\>javac d:\standalone\HelloJava.java -encoding UTF-8 -d D:\standalone
<!-- println(args[0]) 으로 코드 수정 -->
<!-- 매개변수 없어서 예외발생 -->
D:\>java kr/or/ddit/HelloJava
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at kr.or.ddit.HelloJava.main(HelloJava.java:9)
<!-- 띄어쓰기 기준으로 매개변수 갯수 측정 -->
D:\>java kr/or/ddit/HelloJava 안녕 자바
안녕
<!-- ""으로 문자열 묶어줌 -->
D:\>java kr/or/ddit/HelloJava "안녕 자바"
안녕 자바
<!-- %catalina_home% == 톰캣 경로 -->
D:\>cd %catalina_home%
<!-- 우리가 만든 서블렛의 소스 폴더 -->
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37>cd webapps\firstApp\WEB-INF\src
<!-- servlet-api.jar파일이 적용되지 않아 예외 발생 -->
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\webapps\firstApp\WEB-INF\src>javac HelloServlet.java -d ..\classes
HelloServlet.java:3: error: package javax.servlet.http does not exist
import javax.servlet.http.*;
^
HelloServlet.java:4: error: package javax.servlet does not exist
import javax.servlet.*;
^
HelloServlet.java:7: error: cannot find symbol
public class HelloServlet extends HttpServlet {
^
symbol: class HttpServlet
HelloServlet.java:9: error: cannot find symbol
public void doGet(HttpServletRequest req, HttpServletResponse resp)
^
symbol: class HttpServletRequest
location: class HelloServlet
HelloServlet.java:9: error: cannot find symbol
public void doGet(HttpServletRequest req, HttpServletResponse resp)
^
symbol: class HttpServletResponse
location: class HelloServlet
HelloServlet.java:10: error: cannot find symbol
throws IOException, ServletException {
^
symbol: class ServletException
location: class HelloServlet
6 errors
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\webapps\firstApp\WEB-INF\src>
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\webapps\firstApp\WEB-INF\src>javac HelloServlet.java -d ..\classes -classpath ..\..\..\..\lib\servlet-api.jar
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\webapps\firstApp\WEB-INF\src>javac HelloServlet.java -d ..\classes -classpath ..\..\..\..\lib\servlet-api.jar
C:\Users\PC-02>d:
D:\>cd %catalina_home%
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37>cd bin
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\bin>startup.bat
Using CATALINA_BASE: "D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37"
Using CATALINA_HOME: "D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37"
Using CATALINA_TMPDIR: "D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\temp"
Using JRE_HOME: "D:\B_Util\2.Java\JDK1.8"
Using CLASSPATH: "D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\bin\bootstrap.jar;D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\bin\tomcat-juli.jar"
D:\B_Util\5.ApacheTomcat\apache-tomcat-8.5.37\bin>
서블릿 | JSP |
---|---|
만들고 web.xml에 등록 후 부터 톰캣이 관리 | 우리가 등록도 안했는데 어떻게 등록되어있고, url매핑은 언제했지? 톰캣이 다해놨지 짜샤 그니까 톰캣이 할일이 많아짐 |
개발자: 넘나 편하군 톰캣: 죽여줘 | 개발자: 죽여줘 톰캣: 넘나 편하군 |
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>kr.or.ddit.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>