서블릿에도 request객체와 response객체가 존재합니다.
기억 나시나요??
JSP에서도 사용자의 요청과 웹서버의 응답을 담당하는 객체인 request와 response객체가 있는데 서블릿에서 사용하느냐의 차이가 있습니다.
즉 동일한 객체라는 것입니다.
request객체를 먼저 보겠습니다.
request는 사용자게 데이터를 받아야합니다.
html에서는 대표적으로 form태그를 이용해서 submit 버튼을 누르면 데이터를 보내게 됩니다.
form태그에서 action속성으로 어떤 jsp파일에 데이터를 넘길것인지 명시를 해주면 해당 파일에서 사용자가 입력한 데이터를 request객체의 getParameter라는 메서드로 받을수 있습니다.
또한 취미와 같은 항목은 다중선택을 할수가 있기 때문에 getParameterValues() 메서드로 배열로 받아올수가 있겠죠.
그다음은 response객체입니다.
응답이라는 객체인데 위의 그림에서는 sendRedirect메서드를 이용하고 있네요.
view단에 데이터를 쏴주기 위한 객체입니다.
sendRedirect는 현재 페이지에서 다른페이지로 점프해서 가는 내용을 담아주는 메서드입니다.
만약 First Page로 요청이 들어왔다면 응답을 할건데 sendRedirect할겁니다.
어디론가 보내겠다는 이야깁니다.
어디로 보낼까요? secondPage.jsp파일로 보내내요.
코드 해석하기는 쉽죠?
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="mSignUp.jsp" method="get">
name : <input type="text" name="m_name"><br>
password : <input type="password" name="m_pass"><br>
hobby : sport<input type="checkbox" name="m_hobby" value="sports">,
cooking<input type="checkbox" name="m_hobby" value="cooking">,
travel<input type="checkbox" name="m_hobby" value="travel"><br>
<input type="submit" value="sign up">
</form>
</body>
</html>
<%@ 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>
<%!
String m_name;
String m_pass;
String[] m_hobby;
%>
<%
m_name = request.getParameter("m_name");
m_pass = request.getParameter("m_pass");
m_hobby = request.getParameterValues("m_hobby");
%>
m_name : <%=m_name %><br>
m_pass : <%=m_pass %><br>
m_hobby :
<%
for(int i = 0; i < m_hobby.length; i++) {
%>
<%=m_hobby[i] %>
<%
}
%><br>
</body>
</html>
이렇게 데이터를 보내면서 요청하는 파일과 받은 데이터를 응답하여 화면에 보여즐 파일을 각각 만들었습니다.
코드가 조금 지저분해지기는 하네요,,
이런식으로 왼쪽의 HTML파일에서 데이터를 작성하여 전송한다면 오른쪽 파일에서 받아서 화면에 출력을 시켜줍니다.
왼쪽에서 보내줄 데이터를 작성하고 전송을 하였고 오른쪽에서 받아서 보여주었습니다.
password는 원래 imput태그의 type이 password여야 하는데 편의상 숫자가 나올수 있도록 text로 작성했습니다!
오른쪽에 보시면 한글이 깨지는데요...
이래서 UTF-8설정을 잘 해주어야합니다!
위의 코드에서 jsp파일에는 인코딩 설적을 잘 해주었는데 html파일에서는 EUC-KR로 설정해놨습니다.
그럼 UTF-8로 바꾸고 다시한번 전송해볼까요??
이제는 글자가 안깨지고 잘 나오네요!
<%@ 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>
<p>first page</p>
<%
response.sendRedirect("secondPage.jsp");
%>
</body>
</html>
<%@ 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>
<p>second page</p>
</body>
</html>
이렇게 두개 파일을 다시 만들어놓고 firstPage.jsp에서 sendRedirect메서드를 이용하여 second.jsp파일로 보내보겠습니다.
이거는 secondPage.jsp를 실행시켜 요청한것이 아니라 firstPage.jsp를 실행시킨건데 firstPage.jsp를 실행시키면 샌드리다이렉트로 second로 보내기 떄문에 secondPage.jsp파일이 보여지게 됩니다!
이 글은 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌를 수강하며 공부한 내용을 정리한 글입니다.
https://www.inflearn.com/course/실전-jsp_renew/dashboard
'Java 관련 > JSP & Servlet' 카테고리의 다른 글
[JSP & Servlet] Servlet 데이터 공유 (0) | 2022.08.18 |
---|---|
[JSP & Servlet] JSP 내장객체(config, application, out) (0) | 2022.08.17 |
[JSP & Servlet] JSP 스크립트<%! %>, 스크립트릿<% %>, 주석 <%-- --%> (0) | 2022.08.14 |
[JSP & Servlet] form 데이터 처리 (0) | 2022.08.13 |
[JSP & Servlet] Servlet Life-Cycle과 메서드 (0) | 2022.08.12 |