JSP Servlet 내장 객체 (Implicit Object)
내장 객체 (Implicit Object)
- JSP page 안에 선언을 하지 않고도 사용할 수 있는 객체
- Web container가 JSP page를 Servlet class로 변환시키면서 자동으로 내장 객체를 선언
- Scriptlet을 다중으로 사용하지 않아 코드가 간결해질 수 있음
- response.sendRedirect() : 현재 실행 중인 JSP page의 실행을 중단하고 다른 Web page가 대신 호출되도록 만드는 기능
- forward 방식으로 페이지 이동 및 데이터 전송
RequestDispatcher rd = request.getRequestDispatcher("데이터를 받는 경로");
request.setAttribute("key", value)
rd.forward(request, response)
forward로 보내진 데이터 꺼내오기 (반환값이 Object 타입이므로 다운캐스팅 필요)
(필요자료형) request.getAttribute("key");
▶ 예제
입력한 데이터들을 jsp 파일에 보낼 수 있는 조건을 완성하기 (전송방식 : post)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset align="center">
<legend>학점 확인 프로그램</legend>
<form action="Ex01request.jsp" method="post">
<table align="center">
<tr>
<td>이름</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>JAVA 점수</td>
<td><input type="text" name="java"></td>
</tr>
<tr>
<td>WEB 점수</td>
<td><input type="text" name="web"></td>
</tr>
<tr>
<td>DB 점수</td>
<td><input type="text" name="db"></td>
</tr>
<tr>
<td>Python 점수</td>
<td><input type="text" name="python"></td>
</tr>
<tr>
<td></td>
<td align="left"><input type="submit" value="확인하기"></td>
</tr>
</table>
</form>
</fieldset>
</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>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
int java = Integer.parseInt(request.getParameter("java"));
int web = Integer.parseInt(request.getParameter("web"));
int db = Integer.parseInt(request.getParameter("db"));
int python = Integer.parseInt(request.getParameter("python"));
double avg = (double)(java+web+db+python)/4;
String grade = "";
if (100>=avg && 95<=avg) {
grade = "A+";
} else if (94>=avg && 90<=avg) {
grade = "A";
} else if (89>=avg && 85<=avg) {
grade = "B+";
} else if (84>=avg && 80<=avg) {
grade = "B";
} else if (80>avg) {
grade = "F";
}
%>
<fieldset align="center">
<legend>학점 확인 프로그램</legend>
<table align="center">
<tr>
<td>이름</td>
<td><%= name %></td>
</tr>
<tr>
<td>JAVA 점수</td>
<td><%= java %></td>
</tr>
<tr>
<td>WEB 점수</td>
<td><%= web %></td>
</tr>
<tr>
<td>DB 점수</td>
<td><%= db %></td>
</tr>
<tr>
<td>Python 점수</td>
<td><%= python %></td>
</tr>
<tr>
<td>평균</td>
<td><%= avg %></td>
</tr>
<tr>
<td>학점</td>
<td><b><%= grade %></td>
</tr>
</table>
</fieldset>
</body>
</html>
▶ 예제
랜덤 당첨 게임 만들기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset align="center">
<legend>랜덤 숫자 입력</legend>
<form action="Ex02createInput.jsp">
<input type="number" name="num">
<br>
<input type="submit" value="생성하기">
</form>
</fieldset>
</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>
<%
int num = Integer.parseInt(request.getParameter("num"));
%>
<fieldset align="center">
<legend>랜덤 당첨 작성</legend>
<form action="Ex02randomWinner.jsp">
주제 : <input type="text" name="title">
<%
for (int i = 0; i<num; i++) {
out.print("<br>");
out.print("아이템"+(i+1)+" : ");
out.print("<input type=\"text\" name=\"item\">");
}
%>
<br>
<input type="submit" value="시작">
</form>
</fieldset>
</body>
</html>
<%@page import="java.util.Random"%>
<%@ 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 title = request.getParameter("title");
String[] item = request.getParameterValues("item");
Random rd = new Random();
int rd_num = rd.nextInt(item.length);
%>
<fieldset align="center">
<legend>랜덤 당첨 결과</legend>
<%= title %> <br>
<%= item[rd_num] %> <br>
</fieldset>
</body>
</html>
▶ 예제
각 웹페이지로 이동하는 jsp 만들기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex04_url.jsp">
<select name="url">
<option value="http://www.naver.com">네이버</option>
<option value="http://www.google.com">구글</option>
<option value="http://www.daum.net">다음</option>
<input type="submit" value="이동">
</select>
</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>
<%
response.sendRedirect(request.getParameter("url"));
%>
</body>
</html>
▶ 예제
로그인창 만들기
아이디와 패스워드를 입력받기
아이디 : onlyPractice / 비밀번호 : 123 이 맞으면 로그인 성공 페이지 출력, 아닐 시 로그인 실패 페이지 출력
(전송방식 post)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset align="center">
<legend>로그인</legend>
<form action="Ex05Login.jsp" method="post">
<input type="text" name="id" placeholder="ID를 입력하세요"> <br>
<input type="text" name="pw" placeholder="PW를 입력하세요"> <br>
<input type="submit" value="로그인">
</form>
</fieldset>
</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 id = request.getParameter("id");
String pw = request.getParameter("pw");
if (id.equals("onlyPractice") && pw.equals("123")) {
response.sendRedirect("Ex05LoginSuccess.jsp?id="+id);
} else {
response.sendRedirect("Ex05LoginFail.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>
<fieldset align="center">
로그인 정보를 다시 확인하세요. <br>
<a href="Ex05Login.html">로그인 페이지</a>
</fieldset>
</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>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
%>
<fieldset align="center">
<h1><%= id %>님 환영합니다.</h1> <br>
<a href="Ex05Login.html">로그아웃</a>
</fieldset>
</body>
</html>
※ forward 방식으로 페이지 이동 및 데이터 전송
<%@ 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 id = request.getParameter("id");
String pw = request.getParameter("pw");
if (id.equals("onlyPractice") && pw.equals("123")) {
// response.sendRedirect("Ex05LoginSuccess.jsp?id="+id);
// forward 방식으로 페이지 이동 및 데이터 전송하기!! -> post 방식과 함께 쓰임
RequestDispatcher rd = request.getRequestDispatcher("Ex05LoginSuccess.jsp");
request.setAttribute("result", id); // k, v
rd.forward(request, response);
} else {
response.sendRedirect("Ex05LoginFail.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>
<%
request.setCharacterEncoding("UTF-8");
// String id = request.getParameter("id");
// forward방식으로 보내진 데이터 꺼내오기
// getAttribute()의 반환값은 Object 타입
// -> 원하는 타입의 변수에 담기 위해서는 다운캐스팅 필요
String id = (String) request.getAttribute("result");
%>
<fieldset align="center">
<h1><%= id %>님 환영합니다.</h1> <br>
<a href="Ex05Login.html">로그아웃</a>
</fieldset>
</body>
</html>
'JSP Servlet' 카테고리의 다른 글
JSP Servlet Scope (0) | 2023.02.08 |
---|---|
JSP Servlet 쿠키, 세션 (Cookie, Session) (0) | 2023.02.07 |
JSP Servlet Java Server Pages 기본 (0) | 2023.01.30 |
JSP Servlet 데이터 전송 방식 Get, Post (0) | 2023.01.28 |
JSP Servlet 데이터 전송 form 태그, input 태그 (0) | 2023.01.27 |
댓글