티스토리 뷰

끄적끄적 - 글

나는 jsp 한다

killog 2021. 1. 15. 11:06
반응형

JSP

<%@ page contentType ="text/html; charset=UTF-8" %> 
<%-- jsp 페이지에 대한 설명 정보 : jsp 가 생성할 문서가 html이고, utf 8 캐릭터셋이다. --%>
<%-- <%@ page  :page 디렉티브: jsp 페이지 정보 설정에 사용. 문서의 타입 뿐만 아니라 다양한 정보의 지정 --%>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<% 
String title="진달래꽃";
String author ="김소월";
%>
<b><%= title%> </b> (<%= author%>)입니다.    
</body>
</html>
<%-- html 코드 및 jsp 스크립트  <%= 스크립트 코드,, html 문서를 생성하ㅡㄴㄴ데 필요한 데이터를 생성하고 출력하는데 사용. --%>

JSP 제공 기능

  • 디렉티브(directive) <%@ page
  • 스크립트: 스크립트릿(Scriptlet), 표현식(Excpression), 선언부(Declaration)
  • 표현 언어(Expression Language)
  • 기본 객체(Implicit Object)
  • 정적인 데이터
  • 표준 액션 태그(Action Tag)
  • 커스텀 태그(Custom Tag)와 표준태그라이브러리(JSTL)

디렉티브

JSP 페이지에 대한 설정 정보를 지정할 때 사용한다.

<%@ page contentType ="text/html; charset=UTF-8" %> 
<%@ 디렉티브이름 속성1 ="값1" 속성2="값2"  %> 
  • JSP가 제공하는 디렉티브
    • 디렉티브: 설명
    • page:JSP 페이지에 대한 정보를 지정하낟. JSP 가 생성하는 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등을 jsp 페이지에서 필요로 하는 정보를 설정한다.
    • taglib: jsp 페이지에서 사용할 태그라이브러리를 지정한다.
    • include: jsp 페이지의 특정 영역에 다른 문서를 포함시킨다.

스크립트 요소

문서내용을 동적으로 생성하기 위해 사용한다. 스크립트 요소를 사용해 사용자가 폼에 입력한 정보를 DB 에 저장할 수 있고, 디비로부터 읽어와 출력할 수 있다.

  • 표현식(Expression): 값을 출력한다.
  • 스크립트릿(Scriptlet): 자바 코드를 실행한다.
  • 선언부(Declaration): 자바 메서드(함수)를 만든다.

기본 객체

어플리케이션 프로그래밍을 하는데 필요한 기능을 제공해준다. response, request, application, session, page등 다수의 기본 객체가 존재하는데, 이들은 각각 요청의 파라미터 읽어보기, 응답결과 전송하기, 세션 처리 하기 등의 기능을 제공한다.

표현 언어

jsp의 스크립트 요소(스크립트릿과 표현식 그리고 선언부)는 자바 문접을 그대로 사용할 수 있기 떄문에, 자바 언어의 특징을 그대로 사용할 수있다. 하지만, 표현언어를 이용해 코드를 간결하고 이해하기 좋게 만들어 준다.

a*b = ${param.a * param.b}

<!-- 

<% 
    int a = Integer.parseInt(request.getParameter("a"));
    int b= Integer.parseInt(request.getParameter("b"));
%>
-->

a*b = <%=a*b %>

표준 액션 태그와 태그 라이브러리

액션 태그는 jsp 페이지에서 특별한 기능을 제공한다.

예) <jsp:include> 가 액션 태그이다. 특정한 페이지의 실행결과를 현재 위치에 포함시킬 때 사용한다.

 <jsp:include page ="header.jsp" flush="true"/>

<jsp:액션태그>

커스텀 태그는 jsp를 확장시켜주는 기능으로써 태그 형태로 기능을 제공한다. 개발자가 직접 개발해줘야한다.

커스텀 태그 중에 자주 사용하는 것을 별도로 표준화된 태그 라이브러리가 있는데 이것이 바로 JSTL(Java Server Page Standard Tag Library )라는 것이다. JSTLif-else 조건문, 그리고 for 구문과 같은 반복 처리를 커스텀 태그를 이요해 구현할 수 있게 해준다. 또한, 커스텀태그는 스크립트 코드보다 이해하기 쉬워 자바 언어에 익숙치 않아도 jstl을 이용해 어느정도 처리가 가능하다.

page 디렉티브

import 속성

<%@ page import ="java.util.Date, java.util.Calendar" %>

* 로 패키지 모든 타입을 지정할 수 있다.

<%@ page import ="java.util.*" %>

trimDirectiveWhiteSpace 공백 제거 처리

코드에서 jsp 스크립트로 인한 공백을 제거한다.

<%@ page trimDirectiveWhiteSpace="true" %>

스크립트 요소

  • 스크립트릿(Scriptlet)

  • 표현식(Expression)

  • 선언부(Declaration)

스크립트릿

<%
    자바코드1;
    자바코드2;
    자바코드3;    
%>
<%@ page contentType ="text/html; charset=UTF-8" %> 
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<% 
int sum =0;
for(int i=1; i<=10; i++){
    sum+=i;
}

%>
<b><%= sum%> </b>
<% 
int sum2 =0;
for(int i=1; i<=12; i++){
    sum2+=i;
}

%>   <b><%= sum2%> </b>
</body>
</html>

표현식

<%=  값 %>
<%=  1+2+3+4+5 %> //15

선언부

<%!
    public  리턴타입 메소드 이름(파라미터 목록){
    자바코드1;
    자바코드2;
    ...
    자바코드n;
    return 값;

    }

    %>
<%@  page contentType = "text/html; charet=utf-8"%>
<%!
    public  int multiple(int a, int b){
    int c =a*b;
    return c;
    }
    %>
<%=multiple(10,23)%>

request 기본 객체

request 기본 객체는 jsp 페이지에 있는 가장 많이 사용되는 기본 객체로 웹 브라우저 요청과 관련이 이 있다. 웹 브라우저에 웹 사이트 주소를 입력하면, 웹 브라우저는 해당 웹 서버에 연결한 후 요청 정보를 전송하는데 요청정보를제공하는 것이 바로 request 기본 객체이다.

1. 클라이언트 정보 및 서버 정보 읽기

  • request 기본객체가 제공하는 기능

    • 클라이언트와 관련된 정보 읽기 가능
    • 서버와 관련된 정보 읽기 가능
    • 클라이언가 전송한 요청 파라미터 읽기 기능
    • 클라이언트가 전송한 요청 헤더 읽기 기능
    • 클라이언트가 전송한 쿠키 읽기 기능
    • 속성 처리 기능
    <%@ page contentType ="text/html; charset=UTF-8" %> 
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>클라이언트 및 서버 정보</title>
    </head>
    <body>
        클라이언트 ip=<%= request.getRemoteAddr() %> <br>
        요청 정보 길이=<%= request.getContentLength() %> <br>
        요청정보 인코딩=<%= request.getCharacterEncoding() %> <br> 
        요청 정보 컨텐츠 타입=<%= request.getContentType() %> <br>
        요청정보 프로토콜=<%= request.getProtocol() %> <br>
        요청 정보 전송방식=<%= request.getMethod() %> <br>   
        요청 URI=<%= request.getRequestURI() %> <br>
        컨텍스트 경로=<%= request.getContextPath() %>
        서버 이름=<%= request.getServerName() %> <br>
        서버 포트=<%= request.getServerPort() %> <br>   
    
    </body>
    </html>

요청 파라미터처리

2.1 html 폼과 요청 파라미터
<%@ page contentType ="text/html; charset=UTF-8" %>
 <%@ page import="java.util.Enumeration" %>
  <%@ page import="java.util.Map" %>
  <%
request.setCharacterEncoding("utf-8");

  %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<h2> 사람살려 </h2>
<h3>request.getParameter() 메서드 사용 </h3>
name 파라미터 = <%= request.getParameter("name") %> <br>
address 파라미터 = <%= request.getParameter("address") %> <p>

<h3>request.getParameterValues() 메서드 사용 </h3>
<%
String[] values = request.getParameterValues("pet");
if(values!=null){
    for(int i=0; i<values.length;i++){
%>
<%= values[i] %>
<%  
    }

}
%>

<h3>request.getParameterNames() 메서드 사용 </h3>
<%
Enumeration paramEnum = request.getParameterNames();

while(paramEnum.hasMoreElements()){
    String name = (String) paramEnum.nextElement();

%>
<%= name %>
<%  

}
%>
<h3>request.getParameterMap() 메서드 사용 </h3>
<%
Map parameterMap= request.getParameterMap();
String[] nameParam = (String[])parameterMap.get("name");
if(nameParam!=null){

%>
 name = <%= nameParam[0] %>
<%  

}
%>

</body>
</html>

반응형

'끄적끄적 - 글' 카테고리의 다른 글

TIL  (0) 2021.01.29
인스턴스 접속이 안되는 이유  (2) 2021.01.23
NVC 패턴과 그에 대한 고찰  (0) 2021.01.13
미성숙  (0) 2021.01.08
2020년 회고  (2) 2021.01.02
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함