개발자입니다
IT BANK) JSP 9일차 - JSP(form, result, 응답) 본문
220919
-설문 조사 코드 작성
researchForm.jsp, researchResult.jsp
<title>researchForm</title>
</head>
<body>
<form action="researchResult.jsp" method="post">
이름 : <input type="text" name="name"><br>
자기 소개<br>
<textarea name="intro" rows="4" cols="10"></textarea>
<br>
<fieldset>
<legend> 연령 조사 </legend>
10대 <input type="radio" value="10대" name="age">
20대<input type="radio" value="20대" name="age">
30대<input type="radio" value="30대" name="age">
40대<input type="radio" value="40대" name="age">
</fieldset>
<fieldset>
<legend> 취미 조사 </legend>
독서 <input type="checkbox" value="독서" name="hobby">
춤추기 <input type="checkbox" value="춤추기" name="hobby">
멍때리기 <input type="checkbox" value="멍때리기" name="hobby">
</fieldset>
<input type="submit" value="전송">
</form>
</body>
<title>researchResult</title>
</head>
<body>
<h1>설문 조사 결과</h1>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String intro = request.getParameter("intro");
String age = request.getParameter("age");
String[] hobbys = request.getParameterValues("hobby");
%>
이름 : <%=name %><br>
소개 : <%=intro %><br>
나이 : <%=age %><br>
취미 :
<%
if(hobbys != null){
for(String hobby : hobbys)
out.print(hobby + " ");
}
%>
<br>
</body>
-BMI 구하기 코드 작성
bmiForm.jsp, bmiResult.jsp 사용자로부터 이름, 키, 체중 값을 입력 받아 비만도를 구하고 결과를 출력 할 때 비만도 값 100을 기준으로 100 미만이면 저체중, 100 이상 110 미만은 정상, 110 이상 120 미만 과체중, 120 이상 130 미만 비만, 130 이상은 고도비만으로 출력 하시오. 비만도 계산 식 : 비만도(%) = 현재 체중 / 표준 체중 * 100 표준 체중 계산 식 : 표준 체중 = (현재 키 – 100) * 0.9 출력 예제 : 홍길동님의 비만도는 112.15% 로 과체중 입니다. |
<title>bmiForm</title>
</head>
<body>
<form action="bmiResult.jsp" method="get">
<fieldset>
<legend>BMI 계산</legend>
이름 : <input type="text" name="name"><br>
신장 : <input type="text" name="height"><br>
체중 : <input type="text" name="weight"><br>
</fieldset>
<input type="submit" value="결과 확인">
</form>
</body>
// bmiResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
double bmi(double height, double weight){
double std = (height - 100) * 0.9;
double bmiData = weight / std * 100;
return bmiData;
}
String bmiMessage(double bmiData){
String message = "";
if(bmiData > 130)
message = "고도비만";
else if(bmiData > 120)
message = "비만";
else if(bmiData > 110)
message = "과체중";
else if(bmiData > 100)
message = "정상";
else
message = "저체중";
return message;
}
%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String he = request.getParameter("height");
String we = request.getParameter("weight");
double height = 0, weight = 0;
try{ // 예외가 발생 할 수 있는 코드
height = Double.parseDouble(he);
weight = Double.parseDouble(we);
}catch(Exception e){
// 예외가 발생을 하면 실행할 코드
}
double bmiData = bmi(height, weight);
String bmiMsg = bmiMessage(bmiData);
out.print(name + "님의 비만도는 " + String.format("%.2f", bmiData) + "%로 " + bmiMsg + "입니다.");
%>
■ 응답 객체
response : 서버가 클라이언트에게 데이터를 응답하는 객체
sendRedirect() : 응답의 내용은 경로, 클라이언트가 이동할 경로를 제공함.
sendRedirect() 응답을 받은 클라이언트는 응답받은 경로를 서버에 요청해서 페이지를 전달받아 실행함.
-sendRedirect()
<title>ex4</title>
</head>
<body>
<%
String location = "bmiForm.jsp";
response.sendRedirect(location);
%>
</body>
개발자 도구 - 네트워크 - 이름: ex4.jsp 클릭 - 머리글 - 응답 헤더 - Location: bmiForm.jsp
-getRequestDispatcher()
request.getRequestDispatcher(path).forward(request, response)
ex5_A.jsp 페이지 안에서 ex5_B.jsp 페이지를 직접 실행한다. (sendRedirect()는 경로만 제공)
사용자가 직접 찾아가게 할건지(sendRedirect()), 아니면 직접 실행하게 할건지(getRequestDispatcher()) 선택이다.
아래 그림처럼 주소는 ex5_A.jsp 이나 페이지는 ex5_B.jsp 이다.
<title>ex5_A</title>
</head>
<body>
<h3>ex5_A.jsp 페이지 입니다.</h3>
<%
String path = "ex5_B.jsp";
request.getRequestDispatcher(path).forward(request, response);
%>
</body>
<title>ex5_B</title>
</head>
<body>
<h3>ex5_B.jsp 페이지 입니다.</h3>
</body>
-setAttribute()
: 속성 : 값을 쌍으로 저장하는 기능
pageContext.setAttribute("id", "pageId"); // 하나의 페이지 안에서만 값 저장
request.setAttribute("id", "requestId"); // 하나의 요청에 대해서만 값 저장.
session.setAttribute("id", "sessionId"); // 하나의 웹브라우저 안에서만 값 저장. 세션을 로그인 정보와 같은 여러 페이지에서 사용할 정보를 담아서 쓸 예정
application.setAttribute("id", "applicationId"); // 서버가 실행되는 와중에는 값 저장. 아이디와 비밀번호 같은 중요 정보는 저장하지 않음
<title>ex5_A</title>
</head>
<body>
<h3>ex5_A.jsp 페이지 입니다.</h3>
<%
// setAttribute() : 속성 : 값을 쌍으로 저장하는 기능
pageContext.setAttribute("id", "pageId");
request.setAttribute("id", "requestId");
session.setAttribute("id", "sessionId");
application.setAttribute("id", "applicationId");
String path = "ex5_B.jsp";
request.getRequestDispatcher(path).forward(request, response);
%>
</body>
<title>ex5_B</title>
</head>
<body>
<h3>ex5_B.jsp 페이지 입니다.</h3>
페이지 : <%=pageContext.getAttribute("id") %> <br>
요청 : <%=request.getAttribute("id") %> <br>
세션 : <%=session.getAttribute("id") %> <br>
어플리케이션 : <%=application.getAttribute("id") %> <br>
<a href="ex5_C.jsp"> C 페이지로 이동</a>
</body>
<title>ex5_C</title>
</head>
<body>
<h3>ex5_C.jsp 페이지 입니다.</h3>
페이지 : <%=pageContext.getAttribute("id") %>
요청 : <%=request.getAttribute("id") %>
세션 : <%=session.getAttribute("id") %>
어플리케이션 : <%=application.getAttribute("id") %>
</body>
왼쪽 사진 주소는 ex5_A.jsp, 본문은 ex5_B.jsp 이다.
-로그인 페이지 만들기
<title>loginIndex</title>
</head>
<body>
<h2>환영합니다.</h2>
<a href="loginForm.jsp">로그인 페이지</a>
</body>
<title>loginForm</title>
</head>
<body>
<form action="loginResult.jsp" method="post">
<input type="text" placeholder="아이디" name="id"> <br>
<input type="password" placeholder="비밀번호" name="pw"><br>
<input type="submit" value="로그인">
<input type="reset" value="취소" >
</form>
</body>
// loginResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 아이디/패스워드에 데이터가 없으면 loginForm.jsp로 이동 -->
<!-- 아이디/패스워드가 틀리면 loginFailed.jsp로 이동 -->
<!-- 아이디/패스워드가 맞으면 loginIndex.jsp로 이동 -->
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if(id.isEmpty() || pw.isEmpty()){
response.sendRedirect("loginForm.jsp");
return ; // return시 페이지의 메서드 종료
}
if("admin".equals(id) && "1234".equals(pw)){
response.sendRedirect("loginIndex.jsp");
}else{
response.sendRedirect("loginFailed.jsp");
}
%>
<title>loginFailed</title>
</head>
<body>
<h2> 로그인 실패 </h2>
<a href="loginForm.jsp">로그인 페이지</a> | <a href="loginIndex.jsp">인덱스 페이지</a>
</body>
'JSP > IT BANK - JSP' 카테고리의 다른 글
IT BANK) JSP 11일차 - JSP(세션) (0) | 2022.09.21 |
---|---|
IT BANK) JSP 10일차 - JSP(쿠키) (0) | 2022.09.20 |
IT BANK) JSP 8일차 - JSP(내장 객체) (0) | 2022.09.16 |
IT BANK) JSP 7일차 - JSP(태그 종류, 기초) (0) | 2022.09.15 |
IT BANK) JSP 6일차 - Javascript, 코드 분리 (0) | 2022.09.14 |