JSP 지시어, 스크립트 요소, 내장객체

MINJU KIM·2023년 11월 30일

JSP

목록 보기
2/30

지시어 < %@ %>

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

JSP 페이지를 자바(서블릿)코드로 변환하는 데 필요한 정보를 JSP엔진에 알려준다. 주로 스크립트 언어나 인코딩 방식등을 설정한다. 지시자 or 디렉티브라고 부르기도 한다.

<%@ 지시어 종류 속성1 = "값1" 속성2="값" ... %>
  • page 지시어 : jsp페이지에 대한 정보를 설정한다.
  • include 지시어 : 외부파일을 현재 jsp페이지에 포함시킨다.
  • taglib 지시어 : 표현 언어에서 사용할 자바 클래스나 jstl을 선언한다.

###language, contentType, pageEncoding 속성

  • language: 스크립팅 언어는 자바를 사용한다.
  • contentType: 문서의 타입, 즉 MIME타입은 text/html이고 캐릭터 셋은 UTF-8
  • pageEncoding: 소스 코드의 인코딩 방식은 UTF-8

스크립트 요소(Script Elements)

1)선언부

기본형태 <%! %>
선언부에서는 스크립틀릿, 표현식에서 사용할 변수나 메서드를 선언함
_jspService() 외부에 선언
선언부에서 선언한 메소드를 호출함--%>

2) 스크립틀릿

<% 자바 코드 %>
jsp 페이지가 요청을 받을 때 실행되어야할 자바 코드들이 작성되는 공간
_jspService() 메서드 내부에 위치함

3)표현식 <%= %>

실행결과로 하나의 값이 남는 문장

<%@ page import="static java.awt.AWTEventMulticaster.add" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%!
    public int add(int num1, int num2){
    return num1+num2;
    }
%>
<%--//선언부(메서드 선언)
    //선언부에서는 스크립틀릿, 표현식에서 사용할 변수나 메서드를 선언함
    //_jspService() 외부에 선언
    //선언부에서 선언한 메소드를 호출함--%>


<html>
<head>
    <title>스크립트 요소</title>
</head>
<body>

<%--
JSP 실행될 때 서블릿(java code)으로 변환되고 클래스로 컴파일되어서 응답하게 된다.
이 변환 과정에서 _jspService() 메서드가 생성이 된다.
선언부, 스크립틀릿,표현식

--%>
<%
//스크립틀릿
    //jsp 페이지가 요청을 받을 때 실행되어야할 자바 코드들이 작성되는 공간
    //_jspService() 메서드 내부에 위치함
    int result = add(1,2);

%>

<%--//표현식
//실행결과로 하나의 값이 남는 문장--%>

덧셈 결과 : <%= result%> <br/>
덧셈 결과 : <%= add(10, 20)%>



</body>
</html>

내장객체

https://velog.io/@ansalstmd/JSP5.-%EB%82%B4%EC%9E%A5-%EA%B0%9D%EC%B2%B4

업로드중..

  • JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
  • JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함
  • JSP 페이지에 별도의 import문 없이 자유롭게 사용 가능
  • 스크립틀릿 태그나 표혀문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능

request 객체

request 내장객체는 JSP에서 가장 많이 사용한다.
클라이언트(주로 웹 브라우저)가 전송한 요청 정보를 담고 있다.

  • 클라이언트와 서버의 정보 읽기
  • 클라이언트가 전송한 매개변수 읽기
  • 요청 헤더 및 쿠키 정보 읽기
//RequestMain

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>내장 객체 - Request </title>
</head>
<body>
<%--
## request 내장객체
request 내장객체는 JSP에서 가장 많이 사용한다.
클라이언트(주로 웹 브라우저)가 전송한 요청 정보를 담고 있다.

- 클라이언트와 서버의 정보 읽기
- 클라이언트가 전송한 매개변수 읽기
- 요청 헤더 및 쿠키 정보 읽기

--%>

<h2>1. 클라이언트와 서버의 환경 정보 읽기</h2>
<%--Get 방식으로 요청--%>
<a href="RequestWebInfo.jsp?eng=Heool&han=안녕">
    Get 방식 요청
</a>

<form action="RequestWebInfo.jsp" method="post">
    영어 : <input type="text" name="eng" value="Bye"><br/>
    한글 : <input type="text" name="han" value="잘 가"><br/>
    <input type="submit" value="POST 방식 전송" />


</form>
<h2>2. 클라이언트의 요청 매개변수 읽기</h2>
<form method="post" action="RequestParameter.jsp">
    아이디 : <input type="text" name="id" value=""/> <br/>
    성별 : <input type="radio" name="sex" value="man"/>남자
          <input type="radio" name="sex" value="woman"/>여자
         <br/>
    관심사항 :
    <input type="checkbox" name="favo" value="eco"/> 경제
    <input type="checkbox" name="favo" value="pol"/> 정치
    <input type="checkbox" name="favo" value="ent"/> 연애

    자기소개 :
    <textarea name="intro" cols="30" rows="4"></textarea>
    <br/>
    <input type="submit" value="서버 전송"/>

</form>

<h2>3. HTTP 요청 헤더 읽기</h2>
<a href="RequestHeader.jsp">
    요청 헤더 정보 읽기
</a>

</body>
</html>

업로드중..

//RequestWebInfo

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>내장 객체 request의 정보 읽기</title>
</head>
<body>
    <h2>1. 클라이언트와 서버의 환경정보 읽기</h2>
    <ul>
        <li>데이터 전송 방식 : <%= request.getMethod() %></li>
        <li>URL : <%= request.getRequestURL() %></li>
        <li>URI : <%= request.getRequestURI() %></li>
        <li>프로토콜 : <%= request.getProtocol() %></li>
        <li>서버명 : <%= request.getServerName() %></li>
        <li>서버 포트 : <%= request.getServerPort() %></li>
        <li>클라이언트 IP 주소 : <%= request.getRemoteAddr() %></li>
        <li>쿼리스트링 : <%= request.getQueryString() %></li>
        <li>전송된 값 1 : <%= request.getParameter("eng") %></li>
        <li>전송된 값 2 : <%= request.getParameter("han") %></li>
    </ul>

</body>
</html>
//RequestParameter

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Request 파라메터</title>
</head>
<body>

<%
    request.setCharacterEncoding("UTF-8");
    String id = request.getParameter("id");
    String sex = request.getParameter("sex");
    String[] favo = request.getParameterValues("favo");
    String favoStr = "";

    if (favo != null) {
            for (String temp : favo) {
                favoStr += temp;
            }
        }
    String  intro = request.getParameter("intro").replace("\r\n", "<br/>");
%>

<ul>
    <li> 아이디 : <%=id%></li>
    <li> 성별 : <%=sex%></li>
    <li> 관심사항 : <%=favoStr%></li>
    <li> 자기소개 : <%=intro%></li>
</ul>
</body>
</html>
//requestHeader
<%@ page import="java.util.Enumeration" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>3. 요청 헤더 정보 출력하기</h2>
<%
    Enumeration headers = request.getHeaderNames();
    while (headers.hasMoreElements()){
        String headerName = (String)headers.nextElement();
        String headerValue = request.getHeader(headerName);

        out.print("헤더명 : " + headerName + ",헤더값 : " + headerValue + "<br/>");
    }
%>
<p>이 파일을 직접 실행하면 referer 정보는 출력되지 않습니다.</p>
</body>
</html>

0개의 댓글