on
Servlet
Servlet
package com.practice;
/**
* Servlet implementation class practice
*/
@WebServlet( "/practice" ) //맵핑주소 반드시 앞에 /를 붙여야 함
public class practice extends HttpServlet {
private static final long serialVersionUID = 1L;
//인스턴스 변수, Static변수 -> 여러 클라이언트가 공유가능
//(thread-unsafe) - 사용자의 공유변수
int num;
ArrayList < String > list = new ArrayList < String > ();
/**
* @see HttpServlet#HttpServlet()
*/
public practice() {
super ();
System . out . println ( "기본생성자 호출" );
}
@Override
public void init() throws ServletException { //init메서드
System . out . println ( "init메서드" );
}
@Override
public void destroy() { //destroy메서드
System . out . println ( "destroy메서드" );
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
//처리 메서드를 어떤 방식으로 하냐에 따라 doGet 또는 doPost가 호출이 됨
//post 메서드로 처리해도 결국에는 doGet으로 처리해서 데이터처리함
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System . out . println ( "doget호출됨==================================" );
int size = 10 ; //로컬변수 -> 공유불가 -> thread-safe(사용자 마다 따로 사용, 함수 호출시 마다 초기화)
//여러명의 클라이언트가 접속해도 size는 10고정 but멤버변수로 선언된 녀석들은 모두 통용됨
//클라이언트간에 공유된 변수이기때문에 모든 사용자가 볼때 똑같이 증가함
//웹페이지에서 방문자수같은거 계산할 때 사용
num + + ;
list. add ( "홍길동" + num);
System . out . println ( "doGet : " + num);
System . out . println ( "doGet : " + list);
System . out . println ( "doGetSize : " + size);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response); //doGet으로 보냄
}
//sysout은 자바 console에서 출력됨
from http://cocoshin.tistory.com/39 by ccl(A) rewrite - 2021-12-14 00:27:13