본문 바로가기

Backend Study/Jsp

Jsp 개요

1. Jsp 개념

jsp 기술은 동적으로 콘텐츠를 생성하기 위해 프로그래밍 코드가 담긴 스크립트를 포함할 수 있게하고, HTML과 유사한 태그를 통해 어려운 자바 코딩 없이도 자바 객체를 사용할 수 있다.

jsp는 프로그램적인 명령문들만 컨테이너가 해석해서 처리하고, HTML 태그 부분은 그대로 HTML로 처리되므로 별도의 명령문들로 처리할 필요가 없다.

Jsp 파일이 웹 브라우저에서 실행되었다는 것은 JSP 파일이 자바 소스로 변환되었고, 자바 소스가 컴파일되어 클래스 파일이 생성되었으며, 서블릿 컨테이너가 이 클래스 파일을 실행했다는 것이다.

 

<HTML>
<BODY>
	<H1> HELLO WORLD! </H1>
</BODY>
</HTML>

 

2. 동적인 데이터의 추가

 

<HTML>
<BODY>
	<H1> HELLO WORLD! </H1>
    <%= request.getParameter("name")%>
</BODY>
</HTML>

 

➡️ name이라는 질의 문자열을 추출하여 출력 /  이처럼 Jsp에서는 템플릿 데이터와 함꼐 출력을 쉽게 할 수 있는 '표현식'이라는 스크립팅 요소 제공

 

액션, 표현식, 스크립팅 제공

액션: JSP에서 사용되는 요소의 하나로 내장 객체, 혹은 서버 측 객체와 상호 동작할 수 있도록 유용한 기능을 추상화한 표준 태그이다.
스크립팅 요소: 자바 코드를 그대로 쓸 수 있음.

표현식: 데이터에 접근하기 위해 제공 -> 스크립트는 이러한 기능들을 서로 엮어서 콘텐츠를 생성해 낼 수 있도록 페이지 내에 자바 코드를 삽입 가능할 수 있는 영역 제공

 

예제) 

<html>
<body>
	<%
    	String user=request.getParameter("name");
        if (user==null)
        	user="Geust";
    %>
    <h1>
		Hello
		<%=user%>!
    </h1>
</body>
</html>

 

3. JSP 스크립트 태그

<%@ ... %> 페이지에 대한 정보 설정

<%! ... %> 멤버변수 또는 메소드 선언

<% ... %>  _jspService() 내에 그대로 옮겨짐

<%= ... %> _jspService() 내에 그대로 옮겨짐. 단 out.print() 으로 변경됨

 

예제

 

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title> 구구단 </title>
</head>
<body>

<h3> 스크립트릿으로 구구단 출력 </h3>

<%
	for (int i=2;i<10;i++){
    	for(int j=1;j<10;j++){
        	out.print(i+"*"+j "=" + (i*j));%><br>
            <%}%> <br>
	<% } %> 

</body>
</html>

 

4. JSP의 내장 객체

- request: 요청정보 처리 객체

- response: 응답정보 처리 객체

- session: 상태정보 유지 객체

- application: 상태정보 유지 객체

- config: 서블릿 정보 추출 객체

- out: 출력 처리 객체

- pageContext: JSP 페이지 처리 객체

 

예제

<%-- 로그인 -->
<body>
	<form action = "example10.jsp" method="post">
    ID: <input type="text" name="id"><br>
    비밀번호: <input type="password" name="pwd"><br>
    <input type="submit" value="로그인">
    </form>
</body>

<%-- 로그아웃 -->

<body>
<%
	String id = request.getParameter("id");
    String pwd=request.getParameter("pwd");
%>

 

5. 표준 액션 태그와 JSP 자바빈즈

JSP에서 XML 기반 태그는 두가지. 

1) 표준 액션 태그:
많이 쓰이는 기능을 JSP 스펙으로 이미 정의한 다음, 컨테이너마다 동일하게 구현
액션 태그명과 속성, 그리고 하위 요소들이 정해져 있고 수행되는 기능도 정해져있다. 
ex. jsp:attribute / jsp:body / jsp:element / jsp:fallback / jsp:forward / jsp:getProperty / jsp:include

 

2) 커스텀 태그:

개발 시 자주 사용하는 기능을 자바 클래스 형태로 구현한 후 JSP 태그와 매핑, JSP 페이지에서 매핑한 JSP 태그 이름으로 연결된 자바 클래스의 메소드를 실행시키는 것

 

만약 표준 액션 태그, 커스텀 태그의 이름이 중복된다면
<jsp:output> <a:output> <b.output> 이렇게 사용!

 

6. JSP 자바빈즈

JSP 자바빈즈란, jsp의 표준 액션 태그로 접근할 수 있는 자바 클래스로서 값을 가지는 속성(멤버 변수)과 값을 설정하는 메소드(setter), 값을 추출하는 메소드(getter)로 이루어져있다.

자바빈즈는 하나의 JSP 페이지에 종속적으로 사용되는 것이 아니라, 여러 JSP 페이지에서 사용될 수 있다. 클라이언트로부터 전달된 데이터를 쉽게 추출하고 다른 페이지에서 참조할 수 있게 하는 것이 JSP 자바 빈즈의 최대 장점이다.

 

JSP 자바 빈즈의 사용

 

* 새로운 객체를 생성하는 표준 액션 태그

HelloBean hello = new HelloBean();

->

<jsp:useBean class="HelloBean" id="hello">

 

* getter 메소드, setter 메소드 호출

 

hello.getName();

<jsp:getProperty property="name" name="hello">

hello.setName("Amy");

<jsp:setProperty property="name" name="hello" value="Amy">

 

예제

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title> Java Bean </title>
</head>
<body>
	<jsp:userBean class="com.edu.beans.HelloBean" id="hello" />
    <jsp:getProperty property="name" name="hello" /><br>
    <jsp:getProperty property="number" name="hello" /><br>
    
    <jsp:setProperty property="name" name="hello" value="Amy"/>
    <jsp:setProperty property="number" name="hello" value="12345"/>
    
    <hr>
    <jsp:getProperty property="name" name="hello"/><br>
    <jsp:getProperty property="number" name="hello"/> <br>
</body>
</html>

'Backend Study > Jsp' 카테고리의 다른 글

커스텀 태그  (0) 2022.09.05