Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

1.JSP 구조 본문

카테고리 없음

1.JSP 구조

refindmySapporo 2023. 6. 14. 16:11
반응형

xx.jsp-> xxx_jsp.java => xxx_jsp.class=> xxx_jsp.obj(자바 환경에서 나온 결과물을 동작) => HTML

웹 컨테이너 => WAS(web application server) (웹컨테이너(Tomcat)) : 기계가 개발자 코드 이해하게 만듬

Web폴더가 Webcontainer역할이라고 보면 됨

루트폴더 오른쪽 마우스 클릭하여 jsp 파일 생성 -> jsp는 웹컨테이너에 포함되므로 webcontent폴더에 넣음

<%--
  Created by IntelliJ IDEA.
  User: soo
  Date: 2023/06/08
  Time: 2:56 PM
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  <a href="./Hello.test" methods="get">Servlet으로 넘어갑니다.</a>
  </body>
</html>
<%--HTML파일에 jsp를 넣는 것라서 합쳐서 만든 것--%>
<%--여기에서 jsp를 추가하면 된다--%>
<%--body에 코딩 가능함--%>

동적인 파일일 때  이 파일 이 어떤지 지시어다 맨위에 

 

실제로 서버에서 구동하는 법

런버튼 클릭

 

톰캣서버 7부턴가 8부터 코드가 수정되면 조금 시간 지나면 바뀜

 

 

servlet

웹 컨테이너에서 컴파일 해서 response로 사용자에게 응답함

web.xml, metainf, webinf

servlet => 순수 자바파일

 

servlet파일 작성

printwriter 출력의 객체

PrinterWriter out = response.getWriter();
out.print("<html>");

PrinterWrite  out 값에 response.getWriter()를 할당해주면 

OUT객체가 Print메소드호출하면 태그형성

urlmapping => url주소에 /이름 으로 들어가는 거임

 

 

Servlet 맵핑: 외부에서 요청하기 쉽도록 특정문자를 이용해서 맵핑

jsp : 뷰에 해당하는 부분

servlet: 컨트롤러나 모델 

 

servlet 맵핑 : 간결한 맵핑 http://localhost:8080/sdsfds/SE

브라우저에서 servlet 

 

Web.xml파일을 이용한매핑

<servlet>
<servlet-naeme>servletEx</servlet-name>
<servlet-class>com.servlet.ServletEx</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletEx</servlet-name>
<url-pattern>/SE</url-pattern>
</servlet-mapping>

/SE로 매핑한다

 

 

java annotation 이용한 매핑

@WebServlet(name = "CalcServlet2", value = "/CalcServlet2")

사용자가 서버에게 데이터 요청할 때

Httpservletrequest

 

서버가 사용자게 데이터 응답할 때

HttpServletResponse

http servlet -> servlet

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  <a href="./Hello.test" methods="get">Servlet으로 넘어갑니다.</a>
  </body>
</html>

%@는 지시어
%!는 스크립트 요소(선언부)

<%= str1 %> 스크립트 요소(표현식)

 

1.3 지시어

JSP페이지를 자바코드로 변환하는데 필요한 정보를 JSP엔진에 알림

<%@ 지시어종류 속성1="값" 속성2="값2" .... %>

page 지시어: JSP 페이지에 대한 정보를 설정

include 지시어: 외부 파일을 현재 jsp페이지에 포함

taglib 지시어: 표현 언어에서 사용할 자바 클래스나 JSTL선언

 

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

language: 스크립팅언어는 자바를 사용

contentType: 문서의 타입, 즉 MIME타입은 text/html이고 캐릭터셋은 UTF-8

pageEncoding: 소스코드의 인코딩 방식은 UTF-8입니다.

 

Import 속성

JSP파일에서도 필요한 클래스가 있으면 import해와야 한다

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

 

<%--
  Created by IntelliJ IDEA.
  User: soo
  Date: 2023/06/14
  Time: 1:23 PM
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page  import ="java.text.SimpleDateFormat" %>
<%@ page  import ="java.util.Date" %>

<html>
<head>
    <title></title>
</head>
<body>
<%
    Date today = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
    String todayStr = dateFormat.format(today);
    out.println("오늘 날짜 : " + todayStr);
%>
</body>
</html>

import <%@ %>로 자바 모듈을 가지고 옴

가지고 온 모듈을 활용하여 <% %>로 바디에서 활용함 println으로 생성

 

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="isErrorPage.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

 

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

에러페이지설정 errorPage = "isErrorPage.jsp"

에러페이지에는 true를 설정해야만 에러 내용 넘겨받을 수 있음 isErrorPage="true"

 

 


buffer, autoFlush 속성

 

JSP파일은 서블릿 코드로 변환된 후 컴파일되어 class파일로 만들어집니다. 이를 실행한 결과물을 HTML형태로 웹 브라우저에 보내 최종적으로 화면에 출력

 

버퍼란  네트워크로 영상 데이터를 전송할 떄, 작은 단위로 여러 번 전송하는 것보다 큰 단위로 묶어서 한 번에 보내는 편이 훨씬 효율적이기 때문에 버퍼라는 임시 저장소를 두어 데이터들이 충분히 쌓일 때까지 기다림

 

-> 만약 포워드(페이지 전달)와 에러 페이지 처리를 할 수 있다. JSP가 생성한 결과는 일단 버퍼에 저장

 


Include 지시어

반복되는 부분을 별도의 파일에 작성해두고 필요한 페이지에서 include 지시어로 포함시킬 수 있다

<%@ include file ="포함할 파일의 경로"%>

<%@ page import ="java.time.LocalDateTime" %>
<%@ page import ="java.time.LocalDate" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    LocalDate today = LocalDate.now();
    LocalDateTime tomorrow = LocalDateTime.now().plusDays(1);
%>

이 파일 활용해서

<%@ include file ="includeFile.jsp"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
    out.println("오늘 날짜 : " + today);
    out.println("<br/>");
    out.println("내일 날짜 : " + tomorrow);
    %>
</body>
</html>

나타냄

 

1.4 스크립트 요소(Script Elements)

1.4.1 선언부(Declaration)

선언부에서는 스크립틀릿이나 표현식에서 사용할 멤버 변수나 메서드를 선언한다. 서블릿으로 변환 시 _jspService()메서드 '내부'에 그대로 기술

<%! 메서드 선언 %>

 

1.4.2 스크립틀릿(Scriptlet)

JSP 페이지가 요청을 받을 때 실행해야 할 자바 코드를 작성하는 영역, 서블릿으로 변환 시 _jspService()메서드 '내부' 그대로 기술

<% 자바 코드 %>

스크립틀릿에 메서드를 선언한다면 _jspService() 내부에 또 다른 메서드를 선언한 꼴로 에러를 발생, 즉 스크립틀릿에서는 선언부에서 정의한 메시지만 호출 할 수 있다.

 

1.4.3 표현식(Expression)

<%= 자바 표현식 %>

프로그래밍 언어에서 표현식은 '실행 결과로 하나의 값이 남는 문장' 

상수,변수,연산자를 사용한 수식, '반환값이 있는' 메서드 호출 등이 모두 표현식에 속한다.

JSP의 표현식도 이와 마찬가지로, 주로 변수의 값을 웹 브라우저 화면에 출력할 때 사용한다. 

 

 

예제

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%!
public int add(int num1, int num2) {
    return num1 + num2;
}
%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int result = add(10,20);
%>
덧셈 결과 1: <%= result %> <br/>
덧셈 결과 2: <%= add(30,40) %>
</body>
</html>

선언부를 <%! %>통해 메서드를 선언하고

body <% %>를 통해 스크립틀릿으로 선언부 메서드를 활용한다

표현식으로 <%= %>을 사용해 값을 간단하게 출력한다

반응형