MVC2 생성해보기

바보·2023년 5월 18일

JSP

목록 보기
11/18

HTML, ML, XML

  • HTML ( Hypertext Markup Language )
    : 단순한 형태의 웹 언어
    웹 서버에 HTML 문서를 저장하고 있다가
    클라이언트가 특정 HTML 페이를 요청하면
    해당 HTML 문서를 클라이언트로 전송하는 방법

  • ML ( Markup Language )
    : 데이터 없이 표현하기 위해서 만든 언어
    즉, 데이터를 화면에 띄우기 위함을 목적으로 함

  • XML ( extensible markup language )
    : 데이터를 표현하는 것이 아닌
    데이터를 주고 받기 위하여 만든 언어
    java | c/c++ | python 등의 다양한 언어가 있으면
    이 언어들끼리 주고 받을때
    java가 넘겨주고 받는 예시로

  1. java -> c / c -> java
  2. java -> python / python -> java
    .
    .
    .
    이렇게 다양한 언어들을 각 각 처리할 수 있도록
    기능들이 들어가야하니 무거워질 수 밖에 없는데
    XML 이라는 "표준" 을 만들어
    모든 데이터가 이 "표준" 언어로 번역하여 기록해두면
    java가 c언어나 python언어 등을 몰라도
    쉽게 처리할 수 있어 효율적인 부분임



MVC2

1) 원래 WebContent 하위에 바로 생성했던 jsp파일을
/WebContent/WEB-INF 폴더에'home.jsp'생성

  • home.jsp
action을 생략하면 현재 페이지에 parameter를 전송


<form method="POST">
  	<p><input name="name" type="text" placeholder="이름" required></p>
	<p><input name="age" type="number" placeholder="나이" required></p>
	
	<button>전송</button>
</form>



2) /WebContent/WEB-INF 폴더에 'web.xml' 생성

  • web.xml
많은 코드들이 있는데

<display-name>MVC2</display-name>

<welcome-file-list>
	<welcome-file>home.jsp</welcome-file>
</welcome-file-list>

<web-app ~~~~~~> </web-app>
안에 내용을 바꿔주자




WEB-INF의 파일은
web.xml을 만들어야 접근이 가능하다

web.xml의 코드는 톰캣서버와 데이터를 교환하게 해주는 역할을 하는데

web.xml 파일의 <web-app> 안에 있는 내용들은
톰캣을 설정하기 위해 필요한 코드들이라 생각하면 좋다



3) 우리가 앞전에 beans를 만들었던
Java Resources의 src에 이번에는
controller 라는 패키지를 만들고
HomeServelt 이라는 자바페이지를 만들자

  • HomeServelt.java
import 시켜줄 것이 많다

package controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 최상위(/)로 요청이 들어오면 아래 클래스를 사용해서 요청을 처리한다
@WebServlet("/")
public class HomeServlet extends HttpServlet {

	// doGet : 요청 메서드가 GET이면 아래 메서드를 수행한다
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
	
		RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/home.jsp");
		rd.forward(request, response);
	}
	
	// doPost : 요청 메서드가 POST면 아래 메서드를 수행한다
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		// 필요한 로직을 처리한다
		// - 나이에 따라서 성인/미성년자로 분류 처리
		request.setCharacterEncoding("utf-8");
		
		String name = request.getParameter("name");
		int age = Integer.parseInt(request.getParameter("age"));
		
		String msg = age >= 20 ? "성인" : "미성년자";
		
		// request에는 데이터를 저장할 공간이 Attribute가 있다
		request.setAttribute("msg", msg);
		
		RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/result.jsp");
		rd.forward(request, response);
	}
}

ㄴ 대충 설명 //


1)
@WebServlet("/")

주소창 끝에 / 가 들어오면 해당 페이지를 인식시킴
인식할 때 / 를 사용하면 하위폴더나 이름을 가려줄 수 있어서 좋음

주소창 홈의 최상위 MVC2 에서 / 를 붙여
MVC2/ 로 만들어주면 servlet이 / 를 인식해서
servlet을 입력시키고 실행시켜준다
servlet의 기록을 찾아서 controller( 지금 페이지? 위의 내용) 을 받아서 처리하게 된다.

제어의 역전 IoC라고 하는데
톰캣이 서블렛을 인식할 수 있도록 연결시켜주기 위한 것임
extenteds로 HttpServlet을 상속받아쓰면됨

2)
doGet과 doPost는
우클릭 - 소스 - 오버라이드 어쩌고 적힌거 눌려서 쓰면 됨

3)
RequestDispatcher는
home.jsp와 결과를 처리 할 result.jsp를
forward 시키기위해서
라이브러리에서 import시킨 함수이다.



4) 결과 출력

  • result.jsp
<ul>
	<li><%=request.getParameter("name") %></li>
	<li><%=request.getAttribute("msg") %></li>
</ul>


  • 후기

멘붕타는 구간이라는데
멘붕타는 구간 맞는거 같다...

알수없는 내용들이 내 머릿속으로 들어온다..
머릿속에 똑똑 하고 노크하더니
"누구세요" 묻는 와중에 경찰이라면서 문따고 들어와
집에 있는 물건들 다 뒤적거리고

총을 내 머리에 대면서 이게뭔지 아냐며
뭔가 적힌 종이를 내미는데
"아뇨 몰라요" 라고 대답하니
정말 모르는것같군 하면서 다 나가버리고

울면서 흩어진 내 물건들 주섬주섬... 정리하는 모습임

profile
바보는 타이핑으로 공부하자

0개의 댓글