[JSP] Request, Response 객체 / 아주아주 간단한 회원가입, 성적 입력 페이지 / request - 클라이언트 정보, 서버정보


Request 객체


  • 웹브라우저를 통해 어떤 정보를 요청하는 것을 request라고 하는데, 이러한 요청 정보는 request 객체가 관리함

  • request 객체의 웹 브라우저, 웹 서버 및 요청 헤더 정보 관련 메소드

    • getContextPath() : 해당 JSP가 속한 웹어플리케이션의 컨텍스트 패스를 리턴

    • getMethod() : 웹 서버로 요청 시, 요청에 사용된 방식(GET, POST, PUT, ..)을 리턴

    • getSession() : 세션 객체를 리턴

    • getProtocol() : 사용 중인 해당 프로토콜을 리턴

    • getRequestURL() : 요청 URL을 리턴

    • getRequesetURI() : 요청에 사용된 URL로 부터 URI를 리턴

    • getQuieryString() : 요청에 사용된 쿼리 스트링을 리턴

  • request 객체의 요청 파라미터 관련 메소드

    • String getParameter(name) : 파라미터 변수 name에 저장된 변수를 얻음, 변수의 값은 String으로 리턴

    • String[] getParameterValues(name) : name에 저장된 모든 변수값을 얻음, 변수의 값은 String 배열로 리턴

    • getParameterNames() : 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Eumeration 타입으로 리턴



Response 객체


  • 웹 브라우저의 요청에 응답하는 것을 response라고 하며, 이러한 응답 정보를 가지고 있는 객체를 response 객체라고 한다.

  • HTTP 응답 헤더 정보를 설정하거나, 쿠키 추가, 페이지 리다이렉트 등의 기능을 사용할 수 있다.

  • response 객체 관련 메소드

    • setHeader(String name, String value) : 헤더 정보의 값을 수정

      • response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        /* => 서버에서 모든 내용을 새롭게 다운로드 받는 진정한 새로고침ㅋ */
        
    • setCharacterEncoding() : 응답할 때의 문자 인코딩 형태 설정

    • setContentType(type) : 요청 결과로 보일 페이지의 contentType 설정

    • addCookie(Cookie cookie) : 쿠키 지정

    • sendRedirect(String URL) : 지정한 URL로 이동




회원가입 페이지 만들기


Servlet으로 간단한 회원가입 페이지 만들기


  • join.html

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>회원가입</title>
      </head>
      <body>
          <form action="joinJsp.jsp" method="post">
            
              이름 : <input type="text" name="name" size=10 required="required">
                
              <br><br>
                
              아이디 : <input type="text" name="id" size=10 required="required">
                
              <br><br>
                
              비밀번호 : <input type="password" name="pw" size=10 required="required">
                
              <br><br>
                
              관심 언어 : <input type="checkbox" name="interest" value="java">JAVA
                          <input type="checkbox" name="interest" value="python">Python
                          <input type="checkbox" name="interest" value="js">JavaScript
                          <input type="checkbox" name="interest" value="c">C
                            
              <br><br>
                
              이메일 수신 여부 : <input type="radio" name="email" value="y" checked="checked"><input type="radio" name="email" value="y">아니오
                            
              <br><br>
                
              <select name="route">
                  <option value="opt1">주위의 소개</option>
                  <option value="opt2" selected="selected">인터넷 검색</option>
                  <option value="opt3">기타</option>
              </select>
                
              <br><br>
                
              <input type="submit" value="가입하기">
              <input type="reset" value="다시 입력하기">
          </form>
    
      </body>
      </html>
    
  • joinJsp.jsp

      <%@page import="java.util.Arrays"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>회원가입 결과</title>
      </head>
      <body>
          <%
              String name, id, pw, email, route;
              String[] interest;
          %>
            
          <%
              request.setCharacterEncoding("UTF-8");
            
              name = request.getParameter("name");
              id = request.getParameter("id");
              pw = request.getParameter("pw");
              email = request.getParameter("email");
              route = request.getParameter("route");
                
              interest = request.getParameterValues("interest");
                
          %>
              전송받은 이름 : <%=name %>
              <br>
              전송받은 아이디 : <%=id %>
              <br>
              전송받은 비밀번호 : <%=id %>
              <br>
              전송받은 이메일 수신 여부 : <%=email %>
              <br>
              전송받은 가입 경로 : <%=route %>
              <br>
              전송받은 관심 언어 : <%= Arrays.toString(interest) %>
    
              <br>
              <button type="button" onclick="history.back()">되돌아가기</button>
    
      </body>
      </html>
    
  • 실행결과



성적 입력 받아 합격/불합격 알려주기


  • GET 방식

    • score.html

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>점수 입력</title>
        </head>
        <body>
      
            <form action="scoreRes.jsp" method="get">
                이름 : <input type="text" name="name" size="10">
                <br>
                <br>
                점수 : <input type="number" name="score" size="10">
                <br>
                <br>
                <input type="submit" value="합격여부 확인하기">
            </form>
      
        </body>
        </html>
      
    • scoreRes.jsp

        <%@ page import="java.net.URLEncoder"%>
        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
      
        <%
            request.setCharacterEncoding("UTF-8");
            String name = request.getParameter("name");
            int score = Integer.parseInt(request.getParameter("score"));
      
            String encodeName = URLEncoder.encode(name, "UTF-8");
        %>
      
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>합격 여부 확인</title>
        </head>
        <body>
      
            <%
                if(score < 0 || score > 100){
                    out.print("0에서 100 사이의 숫자만 입력 가능합니다.");
                    out.print("<br><a href='score.html'>점수 다시 입력하기</a>");
                    return;
                }
            %>
                  
                  
            <%
                // 점수에 따른 페이지 이동
                      
                if(score >= 70) {
                    response.sendRedirect("pass.jsp?name=" + encodeName + "&score=" + score);
                }
                else {
                    response.sendRedirect("fail.jsp?name=" + encodeName + "&score=" + score);			
                }
            %>
        </body>
        </html>
      
    • pass.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        <%
            request.setCharacterEncoding("UTF-8");
            String name = request.getParameter("name");
            String score = request.getParameter("score");
        %>
      
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>합격</title>
        </head>
        <body>
      
            <h1><%=name %>님은 <%=score %>점으로 합격하셨습니다. 🎉👏</h1>
      
        </body>
        </html>
      
    • fail.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
                  
        <%
            request.setCharacterEncoding("UTF-8");
            String name = request.getParameter("name");
            String score = request.getParameter("score");
        %>
      
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>불합격</title>
        </head>
        <body>
      
            <h1> <%=name %>님은 <%=score %>점으로 불합격하셨습니다. 😥 </h1>
                  
        </body>
        </html>
      
    • 실행결과


  • POST 방식

    • score.html

        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>점수 입력</title>
        </head>
        <body>
      
            <form action="scoreRes.jsp" method="post">
                이름 : <input type="text" name="name" size="10">
                <br>
                <br>
                점수 : <input type="number" name="score" size="10">
                <br>
                <br>
                <input type="submit" value="합격여부 확인하기">
            </form>
      
        </body>
        </html>
      
    • scoreRes.jsp

        <%@ page import="java.net.URLEncoder"%>
        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
      
        <%
            request.setCharacterEncoding("UTF-8");
            String name = request.getParameter("name");
            int score = Integer.parseInt(request.getParameter("score"));
      
            String encodeName = URLEncoder.encode(name, "UTF-8");
        %>
        <%
            pageContext.getSession().setAttribute("name", name);
            String strScore = request.getParameter("score");
            pageContext.getSession().setAttribute("strScore", strScore);
        %>
      
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>합격 여부 확인</title>
        </head>
        <body>
      
            <%
                if(score < 0 || score > 100){
                    out.print("0에서 100 사이의 숫자만 입력 가능합니다.");
                    out.print("<br><a href='score.html'>점수 다시 입력하기</a>");
                    return;
                }
            %>
                  
                  
            <%
                // 점수에 따른 페이지 이동
                      
                if(score >= 70) {
                    response.sendRedirect("pass.jsp");
                }
                else {	
                    response.sendRedirect("fail.jsp");
                }
            %>
        </body>
        </html>
      
    • pass.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        <%
            request.setCharacterEncoding("UTF-8");
        %>
        <%
            String name = (String)pageContext.getSession().getAttribute("name");
            String score = (String)pageContext.getSession().getAttribute("strScore");
      
        %>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>합격</title>
        </head>
        <body>
      
            <h1><%=name %>님은 <%=score %>점으로 합격하셨습니다. 🎉👏</h1>
      
        </body>
        </html>
      
    • fail.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
                  
        <%
            request.setCharacterEncoding("UTF-8");
        %>
        <%
            String name = (String)pageContext.getSession().getAttribute("name");
            String score = (String)pageContext.getSession().getAttribute("strScore");
      
        %>
      
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>불합격</title>
        </head>
        <body>
      
            <h1> <%=name %>님은 <%=score %>점으로 불합격하셨습니다. 😥 </h1>
                  
        </body>
        </html>
      
    • 실행결과



클라이언트 정보 및 서버 정보 보기


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

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Request Client Information</title>
    <style>
    	td:first-child {
			font-size: 20px;
			font-weight: bold;
			text-align: right;
		}
		td:last-child {
			font-size: 20px;
			padding-left:25px;
		}
    </style>
</head>
<body>
	<h1>Request Client Information</h1>
	<table>
		<tbody>
			<tr>
				<td>프로토콜</td>
				<td><%=request.getProtocol() %></td>
			</tr>
			<tr>
				<td>서버 이름</td>
				<td><%=request.getServerName() %></td>
			</tr>
			<tr>
				<td>서버 포트 번호</td>
				<td><%=request.getServerPort() %></td>
			</tr>
			<tr>
				<td>사용자 컴퓨터 주소</td>
				<td><%=request.getRemoteAddr() %></td>
			</tr>
			<tr>
				<td>사용자 컴퓨터 이름</td>
				<td><%=request.getRemoteHost() %></td>
			</tr>
			<tr>
				<td>전달방식 (method)</td>
				<td><%=request.getMethod() %></td>
			</tr>
			<tr>
				<td>URL</td>
				<td><%=request.getRequestURL() %></td>
			</tr>
			<tr>
				<td>URI</td>
				<td><%=request.getRequestURI() %></td>
			</tr>
			<tr>
				<td>접속 브라우저</td>
				<td><%=request.getHeader("User-Agent") %></td>
			</tr>
			<tr>
				<td>브라우저 파일 지원 형식</td>
				<td><%=request.getHeader("Accept") %></td>
			</tr>
		</tbody>
	</table>
</body>
</html>

Categories:

JSP/Servlet