Backend/JSP

JSP Eclipse 파라미터 값의 데이터 전송 방식 : get, post

쏠솔랄라 2023. 4. 4. 13:51

 

 

get, post 방식

 

 

파라미터의 값을 어떤 방식으로 데이터를 전달할 것인가
get 방식 : doGet()
post 방식 : doPost ()

일반적으로 페이지 요청을 하면 get방식으로 처리된다
form태그의 기본 메소드 방식은 get방식


get 방식
전달되는 데이터가 주소를 통해 전달된다
데이터가 눈에 보인다
보안적인 문제가 없는 데이터를 전달할 때 사용한다
전송데이터의 길이가 제한이 있다 ; 2048byte -> 용량의 문제로 post 방식을 사용하게 되는 경우가 있다
URL?Key=value&key=value&key=value... ; 폼태그가 없을 때도 사용하기 위해 (url값을 세팅해서 보낸다)

 


post 방식
헤더를 통해서 데이터가 전달되는 방식
데이터가 눈에 보이지 않는다
보안 또는 개정정보에 관련된 데이터들을 전송할 때 사용한다
전송데이터의 길이가 제한이 없다 ; 파일 업로드

 

 


 

 

Exercise 1

 

student.jsp에서 학생의 이름과 java, jsp, spring의 점수를 입력받아서
studentResult.jsp로 보내 60점 이상이면 합격을 출력하시오 (post방식)
* 평균은 소수점 두자리까지만 출력

 

<!-- student,jsp --!>

 

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


<body>

<h1>학생 정보 입력</h1>

<form method="post" action="studentResult.jsp">
  
이름 <input type="text" name="name" /><br>
java 과목 점수 <input type="number" name="java" /><br>
jsp 과목 점수 <input type="number" name="jsp" /><br>
spring 과목 점수 <input type="number" name="spring" /><br>

<br>
<input type="submit" value="제출">
  
</form>

</body>
</html>

 

 

<!-- studentResult.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>

<h1>학생 결과</h1>

<% 
String name = request.getParameter("name");
int java = Integer.parseInt(request.getParameter("java"));
int jsp = Integer.parseInt(request.getParameter("jsp"));
int spring = Integer.parseInt(request.getParameter("spring"));
double avg = (java+jsp+spring) / 3.0;
%>

<% if (avg >= 60) { %>
<p><%= name %>님, 합격입니다!</p>
<% } else { %>
<p><%= name %>님, 불합격입니다.</p>
<% } %>
<p>평균 점수: <%= String.format("%.2f", avg) %></p>

</body>
</html>

 

 

=>

<% %> 사이에 JSP 스크립트 코드로 구현 
request.getParameter() 메서드를 이용해 student.jsp에서 전달된 값을 받아옴

평균 점수를 계산하고, String.format() 메서드를 이용해 소수점 두 자리까지 출력
평균이 60 이상인 경우 "합격입니다!"를 출력, 그렇지 않은 경우 "불합격입니다."를 출력

 

 

 

<다른 풀이>

 

<!-- student.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">
<form action="studentResult.jsp" method="post">

<table border="1px">

<tr>
<th>Name</th>
<td><input type="text" name="name" required></td>
</tr>

<tr>
<th>Java</th>
<td><input type="text" name="java" required></td>
</tr>

<tr>
<th>JSP</th>
<td><input type="text" name="jsp" required></td>
</tr>

<tr>
<th>Spring</th>
<td><input type="text" name="spring" required></td>
</tr>

<tr>
<td colspan="2" align="right">
<input type="submit"><input type="reset">
</td>
</tr>
</table>

</form>
</div>

</body>
</html>

 

 

<!-- studentResult.jsp --!>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.text.DecimalFormat" %>
<%

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("name");
int java = Integer.parseInt(request.getParameter("java"));
int jsp = Integer.parseInt(request.getParameter("jsp"));
int spring = Integer.parseInt(request.getParameter("spring"));

double avg = (java+jsp+spring)/3.0;
DecimalFormat df = new DecimalFormat("00.00");

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<div align="center">
<table border="1">

<tr>
<th>Name</th>
<td><%=name %></td>
</tr>

<tr>
<th>Java</th>
<td><%=java %></td>
</tr>

<tr>
<th>jsp</th>
<td><%=jsp %></td>
</tr>

<tr>
<th>Spring</th>
<td><%=spring %></td>
</tr>

<tr>
<th>Average</th>
<td><%=df.format(avg) %></td>
</tr>

<tr>
<th colspan="2">
<% if(avg >= 60) {%>
합격입니다!
<% } else { %>
불합격입니다
<% } %>
</th>
</tr>

</table>
</div>

</body>
</html>