ex03.JSP

바보·2023년 5월 11일

JSP

목록 보기
6/18

JSP 기초

JSP는 HTML태그와 Java코드를 같이 작성할 수 있는 페이지
하지만, JSP는 웹 문서가 아니기 때문에 웹 브라우저가 해석하지 못한다
JSP 페이지를 요청하면 서버는 jsp -> java -> class 순으로 변환한다

사진을 보면 클라이언트(사용자)가
request을 보내고
jsp -> java -> class
-> response을 받음

작성하고 있는 파일이 자바인데
이 자바 파일을 클래스로 보내고
이 클래스 파일이 대답으로 돌아가는 것임

<%
   for (int i = 1; i <= 5; i++) {
out.println("<p>" + i + " : Hello JSP!!</p>");
	}
%>

이 jsp코드가 바로 넘어가는 것이 아니라는 것을 명심!

소스를 확인하면 이렇게 표현되어 있고
이 표현방식이

웹 페이지에서 이렇게 보이는 것임
ㅇ요청 -> 응답
ㅇjsp -> java -> class


JSP 기초 태그 -1

이클립스에서 사용시
<%@ %> 는 공간을 비워두면 에러가 뜨는데 이를 막기 위해서 lt로 바꿔준다
&lt;%@ %> /  &lt; == <

---------------------------------------------------

지시자(directive) : <%@ %>
페이지 전반에 걸쳐 설정이나 외부 파일을 불러올 때 사용

---------------------------------------------------

선언부(declaration) : <%! %>
필드나 메서드를 선언하는 영역

class Peron {
	// 필드 : 맴버 변수, 객체의 속성
    private String name;
    private int age;
    
    // 메서드 : 맴버 함수, 객체의 기능
    public void eat() {...}
}
---------------------------------------------------

표현식(expression) : <%= %>
자바의 데이터를 HTML 영역에 출력

---------------------------------------------------

실행부(scriptlet) : <% %>
지역변수나 제어문을 사용

---------------------------------------------------


  • 주석에 대해서 잠깐 알고 넘어가기
자바에서 주석 : //
HTML에서 주석: <!-- --!>
JSP에서 주석 : <%-- --%>


JSP 기초 태그 -2

실전은 정말 작성이 더러움.
더럽게 작성되서 더 어렵다고 느껴질 수 있다함
공감함.. 벌써 ㅠㅠ(사실 그냥 어려워하는듯ㅋㅋ)

<%!
//선언부 : 여기는 자바 코드 영역. 필드나 메서드를 선언
//private 같은 접근제어자가 붙었네? 클래스 안쪽이구나~ 생각하면 됨
※ 자바 접근제어자!
private : 비공개
public : 오픈/공개
protected : 기본적으론 private속성/but 클래스를 상속한 자식에게만 공개함
default : 같은 패키지만 접근가능


private int n1 = 10;

public int adder(int n1, int n2) {
	return n1 + n2;
}
%>
<%-- JSP주석은 소스보기로 노출되지 않는다
     그래서 가급적 JSP주석으로 쓰기
     --%>
<h1>JSP 기초 태크</h1>
<hr>

<%-- 표현식(<%= %>)은 Java의 데이터를 HTML에 출력하는 방식이다
  단순한 변수부터 연산, 메서드도 호출이 가능하다
  --%>
  
  
  
<%-- private라 해도 해당 페이지가 클래스 내부라서 사용이 가능하다--%>
  <p>n1 = <%=n1 %></p>
  <p>n1 + 5 = <%= n1 + 5%></p>
  <p>adder(7, 5) = <%= adder(7, 5) %></p>
<%

//실행부 : 자바에서 main() 와 비슷하게 사용하면 된다
// private int n2 = 20;
// private는 클래스의 맴버에 작성가능
// 쓸거면 위에 쓰란 소리같음

int n2 = 20;

for (int i = 1; i <= 5; i++) {
// System.out.println(i + " : Hello JSP");
// - System은 표준 입출력 객체이다
// - 즉, 콘솔에 출력된다는 거시당
// 그럼 어떻게 쓰냐면

out.println(i + " : Hello JSP<br>");
// JSPWriter out : 웹 브라우저에 문자열을 출력하는 객체
// 이클립스에서 out위에 마우스 올리면 클립뜨니까 확인해보는 것도 좋음
// !! 그리고 태그는 손수 문자열로 써줘야함 <br> 이런거 ㅠ
}

out.println("<p>n2 = " + n2 + "</p>");

%>







ㄴ 보충 //



출력은 두가지 방법이 있음

1. 아웃객체로 출력을 하던지
out.println();

2. 표현식을 하던지
<p>n1 = <%=n1 %></p>

지시자

들어가기 전에 JSP로 생성한 자바소스파일 맨위를 보면..

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    이렇게 나와있다
    
위에는 페이지에 관한 설정이라고 보면 되는데
형식상 써둔거라 신경 안써도 된다.

그리고 저기 language에 java말고
c나 python을 적어도 되나요? 라고 하는데

이클립스에서 연동하여 사용하는 언어는
JAVA이다
Java
Server
Pages

혹시나 주변에서 물어보는 사람이 있다면
귓가에 JYP JSP라고 말해주자.

<body>

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>

// import 하는 것은 <!DOCTYPE html>의 위에
// 작성되지만 추가되는 내용을 보기 위해서 빼와씀 
  
  
  <%
     Date date = new Date();
     SimpleDateFormat sdf = new SimpleDateFormat("yyy년 mm월 dd일 E요일 a hh:mm:ss, hh->HH 24시로 표기");
     
     String time = sdf.format(date);
     
// simpled 까지 적고 ctrl + space / 자동완성으로 import까지 홀라당 써먹자
     %>

    <h1>지시자</h1>
    <hr>
    
    <h4>date = <%=date %></h4>
    <h4>time = <%=time %></h4>
      
</body>

date = Fri May 12 03:42:05 KST 2023
time = 2023년 42월 12일 금요일 오전 03:42:05 , 03->03 24시로 표기

라고 출력됨 지금 좀 맛간거같음
42월이 어딨음..

대충 어떻게 나오는지만 확인하기.


실행부 활용

들어가기 전에

main()의 역할을 톰캣이하고 이것을 IoC라고함

IoC : Inversion of Control
제어의 역행 : 기존에는 개발자가 했던 것을
이제는 컨테이너가 하므로 제어의 역행이라고 표현
- 기존에는 개발자가 작성한 프로그램이 외부 라이브러리 코드를 호출해서 사용
- 제어의 역행은 반대로 외부 라이브러리가 개발자가 작성한 코드를 호출해서 사용
- 필요에 따라 스프링 프레임워크가 개발자의 코드를 호출

*컨테이너는 객체의 생성,제거,관계설정등을 해주고
의존관계를 미리 설정해두면 이것 또한 자동으로 연결해줌

다시 사진을 보면(밑에 첨부할거임)
태그가 벗겨지고 자바코드를 사용함
자바 파일을 컴파일 시키고 클래스를 만들어
클래스를 톰캣이 실행시켜주는 순서

실행부는 끊어서 사용할 수 있다

<% for (int i = 1; i <= 5; i++) { %>

<p><%= i %> : Hello JSP!!!</p>
  
  <% } %>

    
<% for (int i = 1; i <= 5; i++) {
    out.println("<p>" + i " : Hello JSP!!!</p>");
    }
    이걸 위에처럼 사용해서 out을 생략시킴
    
    둘 중에 맘에 드는 것을 사용하면 되는데
    위에가 더 간략하게 사용하는 방법이지만
    아직 힘들다면 아래로 어떻게 사용하는지
    잘 익히고 위에 처럼 사용해도 괜찮다.
    
    난 촙오기 때문에!!!!! 아무도 건드릴수없어!!!
    뒤처질뿐이지..ㅜㅜ


  • 후기

으 작성하는데 JSP는 호환이 안되는가봉가
html이랑 java랑 따로 적어야하고
jsp로 작성하면 <p> 부분만 빨간색으로 뜨넹..
어젠 마지막 문장 쓰는게 저게 뭐지 뭔짓거리야!
했는데 <% %> 쓰고 p태그 쓰고 <% } %> 부분
지금 밑에 풀어서 써보니까
음~ 마싯다~ 이게 이렇게 쓰는거였구나~ 하면서 알게됨

역시 나는 손으로 다 적어봐야 x인지 된장인지 아나봄 ㅜㅜ
그리고 사진도 찍어야함..!

쌤이 칠판?에 적은 코드를? 사진으로 찍으니
"이걸 찍을 필요까진 없는데" 라고 하셔서
"남는건 사진뿐이라 찍어가요" 라고 하니
"그럴때 쓰는 말이 아닌거 같은데.." 라 하셨지만

모르면 찍어서 다시 봐야지ㅠㅠ 어쩌게쑴 ㅠㅠ

profile
바보는 타이핑으로 공부하자

1개의 댓글

comment-user-thumbnail
2023년 5월 17일

날짜 Month와
시간 minute 가 있어
mm은 분이 출력되어 42(분)월로 보인겁니다.
MM으로 해보세요!

답글 달기