MVC 프레임워크 학습 -2

이상원·2022년 8월 2일
0

MVC

목록 보기
2/6

controller

Servlet은 mvc 요소에서 controller
client 가 웹에 요청할 때 처음 받는 요소임

  1. 클라이언트의 요청을 받는 역할(파라미터를 수집하는 역할)->Controller(Servlet)
  2. 처리하는 작업(비즈니스 로직) -> 모델로 빼는 것임 -> JAVA class
  3. 요청한 클라이언트에게 응답을 하는 작업 -> 프리젠테이션 로직 -> view JSP

Servlet과 Model로 회원관리 만들기

<form>
<table>
	<tr>
		<td>수1</td>
		<td><input type="text" name="su1"/></td>
	</tr>
	<tr>
		<td>수2</td>
		<td><input type="text" name="su2"/></td>
	</tr>
	<tr>
		<td colspan="2" align="center">
			<input type="submit" value="전송"/>
			<input type="reset" value="취소"/>
		</td>
	</tr>
</table>
</form>

여기서 reset은 form에 둘러쌓아져 있어야만 효과가 있는 것이다.(파라 미터들을 모두 취소하라는 의미) submit 역시 form에 둘러쌓아져 있어야 작동하게 된다.

  • submit -> 대상 지정해주어야 하는 데 form 에 action을 통해 대상을 지정해주게 된다.(나중에 controller와 매핑해주면 됨)
//Controller 역할
@WebServlet("/calc.do")
public class CalcController extends HttpServlet {
	
	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 1. 클라이언트에서 넘어오는 폼 파라메터를 받기(파라메터 수집, su1, su2)
		// post를 통해 보내진 데이터는 request 를 통해 받아지게 되는 데 여기서 꺼내면 된다.
		int su1 =Integer.parseInt(request.getParameter("su1"));
		int su2 =Integer.parseInt(request.getParameter("su2"));
		
		//su1~su2 ="
		int sum=0;
		for(int i=su1; i<=su2;i++)
			sum+=i;
		PrintWriter out =response.getWriter();
		out.println("total="+sum);
	}

}


client로 부터 받은 패킷정보는 tomcat에 의해서 request와 response에 각각 저장이 되게 된다.

넘기는 방식

  • GET <- url에 쿼리스트링을 통해 보내게 됨 보안에 취약하고 넘기는 데이터의 한계가 존재,공백 X
    (링크 url 보낼 때 사용)
  • POST <- packet으로 쌓아서 header와 body로 싸서 보낸다 용량 한계 X
    (회원가입, 게시판 글쓰기, form 형식으로 데이터 보낼 때 사용)

한글을 전달 받을 때 깨지지 않게 저장하는 법
한글 data 2byte라 깨질 수 있다. 데이터 수집 전 request 객체가 한글 받을 수 있게 해줘야 한다.


@WebServlet("/memberInsert.do")
public class MemberInsertController extends HttpServlet {
	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8"); //2byte로 받기
		// 1. 파라메터 수집 (VO)
		String id =request.getParameter("id");
		String pass =request.getParameter("pass");
		String name =request.getParameter("name");
		int age = Integer.parseInt(request.getParameter("age"));
		String email =request.getParameter("email");
		String phone =request.getParameter("phone");
		//String id =request.getParameter("id");
		
		//MemberVO vo =new MemberVo(id,pass,name,age,email,phone);
		//파라미터 수집은 setter를 통해 하는 것이다.
		MemberVO vo =new MemberVO();
		vo.setId(id);
		vo.setPass(pass);
		vo.setName(name);
		vo.setAge(age);
		vo.setEmail(email);
		vo.setPhone(phone);
		
		System.out.println(vo);
	}

}


자바는 인터페이스를 만들고 드라이버는 구현 클래스이다. (각회사가 알아서들 구현)
유저는 jdbc 인턴페이스만 알면 된다.

profile
개발하는 코린이

0개의 댓글