JSP_1강_2_Servlet_get 방식_예시1

열라뽕따히·2024년 3월 13일

JSP

목록 보기
2/43

웹 브라우저에서 서블릿으로 데이터를 전송하는 전송 방식(2가지)

1. get 방식

  • 서블릿에 데이터를 전송할 때는 데이터가 url 뒤에 name = value 형태로 전송이 됨.
  • 여러 개의 데이터를 전송할 때는 '&'로 구분하여 전송이 됨.
  • 보안이 취약함.
  • 전송할 수 있는 데이터는 최대 255자.
  • 기본 전송 방식이고 사용이 쉬움.
  • 웹 브라우저에 직접 입력해서 전송할 수도 있음.
  • 서블릿에서는 doGet() 메서드에서 전송된 데이터를 처리함.
  • get 방식의 요청은 자료를 검색한다거나, 게시글의 상세정보를 본다거나, 특정 상품의 정보를 조회하는 것과 같이 데이터를 조회하는 경우에 적합함.

2. post 방식



입력 받은 값을 서블릿으로 넘어가는 경로는 아래와 같음

서블릿으로 넘어갈 때 변수로 저장이 되어 넘어가게 됨!
ex) name = "id" 라면, String id = "아이디 입력 값"
으로 저장되어 서블릿으로 넘어감


코드로 예시를 자세히 살펴보자!




Ex02.jsp 파일


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

		<div align = "center">
			<hr width = "30%" color = "blue">
				<h2>로그인 페이지</h2>
			<hr width = "30%" color = "blue">
			<br/> <br/>
			
			<form method = "get" action = "LoginServlet">
				<table border = "1">
					<tr>
						<th>아이디</th>
						<td>
							<input type = "text" name = "id">
						</td>
					</tr>
					
					<tr>
						<th>비밀번호</th>
						<td>
							<input type = "password" name = "pwd">
						</td>
					</tr>
					
					<tr>
						<td colspan = "2" align = 'center'>
							<input type = "submit" value = "로그인" >&nbsp;&nbsp;&nbsp;
							<input type = "reset" value = "취소" >
						</td>
					</tr>
				</table>
			</form>
		
		</div>

</body>
</html>

=============================실행=============================



서블릿으로 넘겨줄 파일을 생성해보자!

패키지 생성 -> Ex02.jsp 파일에 작성한 <form method = "get" action = "LoginServlet"> form 태그의 LoginServlet 이름을 servlet 으로 생성

그렇다면 코드가 아래와 같이 자동적으로 완성이 된다


=============================코드=============================

package goott;

import java.io.IOException;
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("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

    public LoginServlet() {
        super();
        
    }    // 기본 생성자

    //                                                               요청 객체                                 응답 객체
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// form 태그에 method = "get" 이라고 적혀 있는 경우나
		// method 속성이 안 적혀진 경우에는 doGet() 메서드에서 처리
		
		// 로그인 폼 페이지에서 넘어온 정보를 받아주면 됨
		

		// Ex02내의 form 태그의 정보를 받는 방법
		String userId = request.getParameter("id");  // id에 해당하는 값이 문자열로 반환 -> 그 값을 userId 라는 변수에 저장
		String userPwd = request.getParameter("pwd");
		
		System.out.println("입력 받은 아이디 >>> " + userId);
		System.out.println("입력 받은 비밀번호 >>> " + userPwd);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

Ex02.jsp 파일에서 다시 실행한 뒤 콘솔창에 userId와 userPwd가 잘 출력되는지 확인해보자!

로그인 클릭!

콘솔창을 확인해보자

잘 출력이 됨!

서블릿에서 html에 입력값이 보여질 수 있도록 해보자!


=============================코드=============================

package goott;

import java.io.IOException;
import java.io.PrintWriter;

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("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

    public LoginServlet() {
        super();
        
    }    // 기본 생성자

    //                                                               요청 객체                                 응답 객체
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// form 태그에 method = "get" 이라고 적혀 있는 경우나
		// method 속성이 안 적혀진 경우에는 doGet() 메서드에서 처리
		
		// 로그인 폼 페이지에서 넘어온 정보를 받아주면 됨
		
		// Ex02내의 form 태그의 정보를 받는 방법
		String userId = request.getParameter("id");  // id에 해당하는 값이 문자열로 반환 -> 그 값을 userId 라는 변수에 저장
		String userPwd = request.getParameter("pwd");
		
		System.out.println("입력 받은 아이디 >>> " + userId);
		System.out.println("입력 받은 비밀번호 >>> " + userPwd);
		
		// 응답은 response 매개변수를 이용하면 됨
		// 클라이언트에 응답 시 한글을 작성하게 되면 한글이 깨져서 나오는 현상이 발생
		// 이를 해결해야 함!!
		response.setContentType("text/html; charset = UTF-8");  // Ex02에 있는 맨 위 ContentType과 동일명
		
		PrintWriter out =  response.getWriter();  // getWriter가 PrintWriter 반환타입임
		
		out.println("<html>");
		out.println("<head></head>");
		out.println("<body>");
		out.println("<h2>");
		
		out.println("입력한 아이디 >>> " + userId + "<br/>");
		out.println("입력한 비밀번호 >>> " + userPwd + "<br/>");
		
		out.println("</h2>");
		out.println("</body>");
		out.println("</html>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

=============================실행=============================

로그인을 클릭하면 창이 넘어가면서 입력한 값을 저장한 문자열이 출력됨!





위와 같이 out.println으로 html 형식을 작성하는 것은 번거롭고 어려운 일이다..!
따라서 이를 보완해주는 JSP가 있는 것임!!

별칭을 주어서 출력하는 방법도 있다!





Ex02 form 태그 밑에다가 똑같은 form 형식 복붙!

아까와 다르게 action = "Login"으로 이름 변경

마찬가지로 servlet을 생성해보자

연동이 되려면 /Login2Servlet 을 클릭하고 edit 클릭

똑같은 이름의 /Login 으로 수정 후 ok 클릭

이것을 mapping 이라고 함!!


=============================실행=============================

위와 같은 방식을 보안상 주로 사용됨 (별칭을 주는 것)

0개의 댓글