목록백/Servlet,JSP(잠시 pause) (20)
SOCO
1. html 파일을 불러옴 : http://localhost:8080/calc.html //html 파일 분석 1) html 파일에서 form 태그 action="calc" 속성 : 해당 html에서 form이 제출되는 경우 연결될 서블릿의 url : /calc method="post"속성 : 쿼리스트링은 url에서 보여지지 않도록 2) form 태그의 자식 태그 input type = "text" name = "x" input type = "text" name = "y" input type = "submit" name ="operator" value="덧셈" 사용자가 첫 번째 text에 3입력 두 번째 text에 4입력 후 덧셈이라고 적혀진 버튼 누른다면 name ="x"의 value ="3"으로 n..
웹 서버 프로그램은 애플리케이션이 조각나있음 => 서블릿!이라는 이름에서도 알 수 있다 조각 나 있다보니 전역변수 같은 개념을 갖고있지 않음. 이렇게 조각 나 있는 애플리케이션(서블릿) 사이에서 전역변수처럼 값을 유지해줄 역할이 필요함 예를 들면 실제 계산기는 2 개의 숫자와 버튼을 동시에 입력하는 게 아님. 한 숫자 입력 후 연산자(버튼) 누르면 첫 번째 숫자가 보내지고, 다른 숫자 입력 후 연산자(버튼) 누르면 두 번째 숫자가 보내지면서 계산이 됨 그런데, 버튼을 누르는 순간 서블릿은 잠깐 올라왔다가 사라짐(죽음) -> 지역변수 까지도 다 의미없어짐 첫번째 버튼을 누르는 순간 받은 값을 어딘가에 기록해둬야함 그래야 두번째 버튼을 누르는 순간 앞의 값을 가지고 계산을 할 수 있음 => 즉 상태유지가 필..
1. input text박스의 이름이 모두 다르지 않을 수도 있음 ex. 입력박스를 동적으로 추가해야하는 경우 2. name이 같은 개 2개 이상인 경우 서블릿은 배열로 입력을 받음 request.getParmeterValues("") 3. 서블릿에서는 반복문을 사용해서 해당 배열을 활용할 수 있음 : 배열의 인덱스 개념 @WebServlet("/add") public class Add extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncodin..
1. 브라우저에서 필요한 정보 얻기 ctrl + F12 = > 개발자도구 개발자도구 > Network > Header 내려보면 Form data 2. input 태그의 name 속성 input 태그가 name값을 가지면 그 값이 서블릿에 전달됨 3. type = "text"와 type = "submit" 차이 submit의 경우 해당 버튼을 눌러야 name의 값으로 value가 전달되지만 (누르지 않은 버튼의 경우 name값 자체가 전달되지 않음) text의 경우 어떤 버튼이든 누르기만 하면 name값으로 사용자가 입력한 value가 전달됨 ex1. 덧셈이라고 적혀있는 버튼을 누른 경우(submit됨) "x"라는 name값으로 사용자가 해당 text박스에 입력한 값(이게 text의 value)이 전달됨 ..
1. 내가 쓴 코드 @WebServlet("/add") public class Add extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); int num1 = Integer.parseInt(request.getParameter("num1")); int nu..
ctrl + N => 새로만들기 1. 자바 프로그래밍 JAVA PROJECT > CLASS > main 매서드 2. 서블릿 프로그래밍 Dynamic web project > class > HttpServlet상속 > service 매서드 만들기 Dynamic web project > Servlet > service 매서드 1) *project : dynamic web project로 설정 *java package : 패키지는 클래스의 모음! *class name : 기능과 관련된 클래스명으로 *superclass : 자동으로 상속하는 코드를 만들어줌! Next 누르기 2) *URL mapping : url 주소를 보다 쉽고 간단하게 표시하기 위해 다른 이름을 붙여주는 것 정도로 생각해도 됨 => 클래스명..
지금까지 서블릿 object를 만들었는데 이외에도 필터 object를 만들 수 있음 ------- 클라이언트 웹서버 WAS 서블릿 컨테이너 서블릿 라이언트 웹 서버 & WAS & 서버 어플리케이션(서블릿) ->서블릿이 존재하는 공간은 서블릿 컨테이너 요청이 들어오면 WAS는 서블릿을 실행시켜서 서블릿 컨테이너에 담아놓고 결과를 돌려줌 -------- 한글을 입력받는 서블릿에서는 1or2를 해야함 1. request.setCharacterEncoding("UTF-8") 2. 톰캣 설정 자체를 UTF-8로 바꾸기 (server.xml 파일에서) BUT, 1,2이외에도 필터라는 것을 사용할 수도 있음 필터는 요청과 응답을 하려면 반드시 거쳐가게 됨 (WAS -> 필터 -> 서블릿) (WAS 조건 검..
한글출력문제 : 서버에서 클라이언트로 응답할 때 한글이 깨지는 문제 https://ssooccoo.tistory.com/56 서블릿 출력 형식의 이해 : 문서형태지정&한글출력 1. ctrl + F11 2. server 뷰에서 우클릭 restart 후 웹에서 F5 서블릿은 어떻게 출력되고 클라이언트는 어떻게 이해하는가 문제점 1. 브라우저의 자의적 해석 웹은 html 마크업 언어를 통해 랜더링 되어야 ssooccoo.tistory.com 한글입력문제 : 클라이언트에서 서버로 요청할 때 한글이 깨지는 문제 멀티 바이트 문자 전송문제 UTF-8 : 멀티바이트 영문자는 1바이트면 충분 한글은 2바이트임 클라이언트가 UTF-8로 요청하더라도 서버(톰캣)는 ISO-8859-1이라는 인코딩 방식을 이용함 ISO-88..
입력할 것이 많으면 한 번에 get요청을 하지 못하고 get요청과 post요청을 나눠서 처음에는 입력폼을 받기 위한 get요청을 하고 그 결과를 post함 *get요청 : url에 쿼리스트링이 붙어진 상태로 요청됨 *post요청 : url에 쿼리스트링이 붙지 않음 -> 정보양이 많을 때, 회원가입&로그인 등 보안 1. html 파일 제목 : 내용 * form의 action -> 매핑된 서블릿 파일과 연결됨 (@WebServlet("")) * input, textarea의 name이 키워드가 됨 -> 서블릿에서 getParameter과 연결됨 (name이라는 변수를 설정하는 것이 아니라 input 태그의 name 명을 정해주는 것 ! -> 서블릿은 name으로 태그를 인식함) *html 파일 자체에서는 변..
지난 포스팅 => 출력방법 : 서블릿이라는 플랫폼 api를 이용해서 사용자에게 어떻게 출력할 것인가 ------------- 이번 시간 내용 => 입력방법(get 요청) 사용자가 어떤 값을 입력하는 것을 어떻게 처리할 것인가 사용자의 입력 -> 나에게 요청할 때 입력이 이루어짐 입력과 요청은 맞닿아있다! 그럼 사용자가 요청을 원할 때 전달하는 값을 어떻게 받을 것인가 사용자의 요청은 get요청이 기본적임 --------------- 기본적으로 웹이라고 하는 것은 브라우저를 사용하는 클라이언트가 뭔가를 요청하고 서버가 그에 대한 응답을 하게 됨 ---------------- 1. 쿼리스트링 클라이언트가 요청하는 것은 기본적으로 문서임 문서를 요청할 때 추가적인 인자를 전달할 수 있음. 키 값에 해당되는 값..