JSP&Servlet/기초정리

JSP 기초 - 내장객체

줘니(•̀ᴗ•́)و 2023. 2. 1. 18:19
728x90

* 내장객체

 

 

 

 

 

1. out

: Servlet class에서 getWriter 메소드를 호출해서 얻은 PrintWriter 객체와 비슷한 역할

 

 

 

 

2. request

: 사용자 요청과 관련된 기능을 제공하는 내장 객체
(주로 클라이언트에서 서버로 전달되는 내용을 처리하기 위해 사용)

- Servelt 에서 배운 것과 거의 비슷하다고 생각하면 됨

 

<실습>

 

 

HTML 파일에 이와 같이 구현해보고

 

 

 

JSP 파일로 연결하여 평균, 학점을 구해 웹에 출력(응답)하기 !

 

 

 

1) HTML 파일

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="Ex01request.jsp">
		<!-- 테두리 생성 태그 : fieldset(제목 달려면 legend태그와 같이 씀)-->
		<fieldset style="width: 300px">
			<legend>학점 확인 프로그램</legend>
			<table>
				<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><input type="submit" value="확인하기"></td>
				</tr>
			</table>
		</fieldset>
	</form>
</body>
</html>

 

 

 

2) 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>

	<!-- Ex01request.html 에서 보내주는 데이터를 받아
		출력 및 학점에 대한 로직 수행하기
	-->
	
	<%
		// 1. 요청에 대한 인코딩 작업하기
		request.setCharacterEncoding("UTF-8");
		
		// 2. 전송된 데이터 값 가져오기
		// 요청의 객체인 request 사용! (JSP 내에서는 내장객체로 존재함)
		// -> 사용하고자 하는 객체를 생성하거나 선언할 필요가 없다!
		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"));
		
		// 3. 평균 점수 구하기
		double avg = (java + web + db + python) / 4;
		
		// 4. 학점 판단하기
		String grade = "";
		
		if(avg >= 95 && avg <= 100){
			grade = "A+";
		}else if(avg >= 90){
			grade = "A";
		}else if(avg >= 85){
			grade = "B+";
		}else if(avg >= 80){
			grade = "B";
		}else{
			grade = "F";
		}
	%>
	
	<fieldset style="width: 300px">
		<legend>학점 확인 프로그램</legend>
		<table>
			<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><%=grade %></td>
			</tr>
		</table>
	</fieldset>
</body>
</html>

 

 

3. response

: JSP 페이지의 실행결과를 웹 브라우저로 되돌려줄 때 사용하는 내장객체

 

 

 

 

 

 

 

114 개념이랑 비슷한데 중간다리 역할?을 아주 잘 해준다!

 

 

<실습>

 

 

 

1) HTML 파일

 

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

	<fieldset align="center" style="width : 200px">
		<legend>로그인</legend>
		<form action="Ex05Login.jsp" method = post>
			<p><input type="text" name="id"></p> 
			<p><input type="text" name="pw"></p>
			
			<input type="submit" value="로그인">
		</form>
	</fieldset>

</body>
</html>

 

 

정보 보안을 위해서 post 방식으로 호출

 

 

 

2) JSP 파일 1 : 로그인 조건

- 클라이언트가 보내주는 데이터를 꺼내와 로그인 성공/실패 여부를 판단하고, 이에 따른 결과 페이지 연결하기

 

 
<%@ 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("smart") && pw.equals("123")){
			response.sendRedirect("Ex05LoginSuccess.jsp?id=" + id);
                                            // ?id= : 쿼리스트링 연결
                                            // url 작성하는 문자열 안에선 띄어쓰기 없이!
		}else{
			response.sendRedirect("Ex05LoginFail.jsp");
		}
	%>
	
</body>
</html>

 

 

response.sendRedirect(); 대신에 forward 방식으로 페이지 이동과 데이터 전송을 할 수 있다.

RequestDispatcher 를 이용!

 

RequestDispatcher rd = request.getRequestDispatcher("Ex05LoginSuccess.jsp");

request.setAttribute("id", id);  → key, value 값이 동시에 들어감

rd.forward(request, response);

 

 

 

 

3) JSP 파일 2 : 로그인 성공 시

 

<%@ 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");
    %>
    
	<h1><%=id %>님 환영합니다!</h1>
	<a href="Ex05Login.html">로그아웃</a>
	
</body>
</html>

 

 

 

 

 

4) JSP 파일 3 : 로그인 실패 시

 

<%@ 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>로그인 정보를 다시 확인하세요!</p>
	<a href="Ex05Login.html">로그인페이지</a>

</body>
</html>

 

 

728x90