0830 web JSP

onnbi·2022년 9월 30일
0

web

목록 보기
2/8
post-thumbnail

JSP

동적인 웹 페이지를 java언어를 이용하여 html, xml 기반으로 작성할 수 있는 기술

Servlet 수정 시 재컴파일 해야 하지만, jsp는 동적으로 컴파일 하기 때문에 재컴파일 하지 않는다

  • Servlet : java 코드에 HTML 코드를 삽입 out.println("<html>")) 비지니스로직 처리에 적합
  • JSP : HTML 코드에 java 코드를 삽입 <% for(int i=0; i<10; i++ %> 화면 로직에 적합

JSP element

Comments tag : <%-- 주석내용 -->

Directive tag : <%@ 지시자 %>

Declaration tag : <%! 코드 %>

Scriptlet tag : <% 코드 %>

Expression tag : <%= 표현식 %>

Directive tag

지시자 태그 <%@ %>

JSP 페이지 전체에 영향을 미치는 정보를 기술할 때 사용

  1. import에 사용된다

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

  2. 페이지를 만들어 끼워넣기 할 때 많이 사용된다 (header, footer)

    <%@ include file=“header.html” %

  3. jsp 내부에서 EL, Action Tag Library, JSTL를 사용할 때 사용된다

    <%@ taglib url=“경로” prefix=“a” %>

Declaration tag

선언식 태그 <%! %>

jsp로 생성퇴는 클래스의 전역변수 및 추가 메서드를 작성

<%! public static final String PI = 3.14; %>
  
<%!
	public String test(){
	return “testName”;
	}
%>

Scriptlet tag

_japService 메서드의 수행 내용을 작성할 때 사용 <% %>

<% 
  int age = 2;
%>
  <% if(age>19){ %>
	<p>성인</p>
  <% } else{ %>
    <p>미성년자</p>
  <% } %>

Expression tag

표현식 태그 <%= %>

java의 데이터를 HTML 컨텐츠로 표현하기 위해 사용

Servlet 코드에서 out.println() 역할을 수행하는 태그

<%
  int age = 20;
%>
<%if(age>19){ %>
<h3><%=age %>살은 성인입니다</h3>
<% }else {%>
<h3><%=age %>살은 미성년자입니다</h3>
<%} %>

JSP 내장 객체

request

HttpServletRequest 객체 참조 변수

서블릿에서 수행하는 요청에 대한 처리를 JSP에서도 바로 사용 가능하도록 한다

<주요 메서드>

  • getParameter(name) : form tag로 보낸 값을 name속성으로 꺼내어 리턴한다
  • getParameterValues(name) : name 파라미터의 값을 배열 형태로 리턴한다 (checkbox)
  • getParameterNames() : 요청에 포함된 파라미터 이름들을 리턴한다
  • getMethod() : 현재 요청 방식을 리턴한다
  • getSession() : 현재 사용중인 세션을 리턴한다, 현존하는 세션이 없으면 새로 만들어 리턴
  • getSession(false) : 현재 사용중인 세션을 리턴한다, 현존하는 세션이 없으면 Null 리턴
  • setAttribute("key", "value") : request에 hashmap형태로 값을 담아 전송한다

response

HttpServletResponse 객체 참조 변수

<주요 메서드>

  • sendRedirect(url) : 응답결과를 요청으로 하여 지정된 url에 재전송한다
  • setStatus(int statuscode) : 응답으로 전송될 상태 코드를 설정한다
  • sendError(int statuscode) : 에러가 발생할 경우 응답 헤더에 상태 코드를 설정한다
  • setContentType(String) : 서버에서 클라이언트로 전달될 값의 데이터 타입을 설정한다

session

HttpSession 객체 참조 변수

브라우저와 java가 공유하는 데이터를 저장하는 공간으로 페이지가 넘어가도 데이터를 저장하고 있다 (ex 로그인 정보)

내장 객체의 영역 (scope)

application > session > request > page

  • application : 하나의 웹 어플리케이션과 관련된 영역
  • session : 하나의 브라우저와 관련된 영역
  • request : 하나의 요청을 처리할 때 사용되는 영역
  • page : 하나의 JSP페이지를 처리할 때 사용되는 영역

MVC 아키텍처

Model - View - Controller

Model

웹 어플리케이션의 비지니스 로직, 수행할 서비스를 담당한다

  1. service
  2. DAO (Data Access Object)
  3. VO

View

사용자가 요청하거나 요청한 정보를 응답받아 볼 수 있는 화면을 담당하며 JSP, HTML 등을 통해 표현한다

Controller

사용자의 요청을 전달받아 응답 처리를 위한 Service를 호출하고 결과를 View에 전송하는 역할

전달받은 정보를 바탕으로 사용자 요청을 분석, 서비스에 전달할 VO객체를 생성하여 전달하고 Service로부터 결과를 리턴 받아 관련된 View 화면에 응답

MVC 패턴

MVC1

JSP가 controller를 맡아서 처리하는 것

소규모 프로젝트에 적합

MVC2

사용자의 요청을 받아 비니지스 로직은 Servlet이 수행하고, 수행 결과를 통한 View는 JSP로 구현하는 방식

DispatcherServlet

응답할 view 페이지가 동적 페이지인 경우

사용자의 요청을 다른 서블릿이나 JSP 페이지에 전달할 때 사용

// request 객체를 통한 RequestDistpatcher 객체 생성(매개변수가 결과를 보낼 페이지)
RequestDispatcher view = request.getRequestDispatcher("/result.jsp");

// 결과페이지에 전달할 값 저장("member"라는 key값으로 membe객체 전달
request.setAttribute("key", value);

// request와 response를 인자값으로 전달하여 정보 전송
// forward해주지 않으면 이동하지 않는다
view.forward(request, response);

HttpServletResponse

응답할 view 페이지가 정적 페이지인 경우

동적으로 화면을 생성할 필요가 없으므로 응답 view에 정보를 전달할 필요가 없다

이때 HttpServletResponse객체의 sendRedirect()를 사용한다

//클라이언트에게 /error.html 페이지를 요청하도록 함
response.sendRedirect("/error.html");

한 가지 요청을 받아 수행하여 응답하는 HttpServletRequest객체의 request 수행과 달리 response는 요청을 받고 응답할 수 있는 페이지를 알려준다. 사용자는 페이지를 다시 요청하여 페이지로 이동하는데, response의 역할은 사용자를 다른 페이지로 보내는 것으로 끝난다

profile
aelatte coding journal

0개의 댓글