[2022/10/26 WED] MVC - View(EL/JSTL)

kangsun·2022년 10월 26일

JSP

목록 보기
15/16
  • 2022-10-26 수요일 [수업내용]

  • myweb 계속 수정

    서버 테스트
    css추가
    기능 추가하기

  • 정보처리기능사 자격증 (6개월 수업 수료하면 지원 가능)

  • 기술면접

    - 추상클래스가 무엇인지?
    - 인터페이스가 무엇인지?
    - mvc 약자가 무엇인지?


MVC



- 서블릿은 view단을 구성하기에 너무 복잡하다.
- 서블릿 + JSP를 합쳐서 사용하는게 편하다.


MVC란?

Model Controller View

  • Model : 실제 데이터베이스 (DAO)
    - JDBC
    - JPA
    - MyBatis Framwork

  • View : Front 단
    - HTML, CSS, JavaScript, jQuery, JSP
    → .jsp .asp .php .py 서버와는 상관이 없다.
    - JSP는 자바코드도 들어갈 수 있어 코드가 복잡해지고 길어진다. (=스파게티코드)
    - EL/JSTL
    → 톰캣에서 서버와 연결해야한다.

▷ 백엔드에서 모두 코드를 짜고 사용자에게 보여줄 때는 EL/JSTL로 보여준다.
▷ 오늘은 백엔드와 프론트엔드를 최대한 구분시켜 코드를 짜볼 것!

  • Controller : view와 Model을 관리해주는 기능
    - Class 기능
    - HttpServlet

▷ Controller는 framework(다른 사람들이 만들어 놓은 것) controller를 사용하면 된다.
- DispatcherServlet (Struts Framework)
- ActionServlet (Spring Framework) → 추천




View





basic05_mvc 생성

  • JSP <%@ 빨간줄 해결방법


    → myweb/WEB-INF/lib에서 servlet-api.jar 복사해오기


  • Tomcat 서버에 basic05_mvc로 변경하기




  • basic05_mvc 서버 테스트하기




에러처리


https://articles09.tistory.com/5



404에러 - 없는 페이지 경로

basic05_mvc 폴더에 list.jsp 파일이 없는 것이다.

404 에러 처리방법

에러가 발생하는 경우, 에러 메세지를 직접 출력하지 않고, 다른 페이지로 이동시켜야 한다.
/WEB-INF/web.xml 배치 관리자에서 지정

  • 에러코드가 나왔을 때 사용자에게 보여줄 페이지를 따로 만들어준다.

web.xml

- /WEB-INF/web.xml 배치 관리자
- 환경설정에 관한 내용을 담고 있음
-Spring Framework에 가면 배치관리자를 관리해주는 클래스가 있다
- ※ 주의사항 : web.xml이 수정되면 반드시 서버를 재시작해야함

  • 첫페이지(index.jsp) 자동 호출 등록

  • 세션시간 등록 (20분)

  • 에러가 발생했을 때 이동할 페이지 지정

  <error-page>
  	<error-code>404</error-code>
  	<location>/error/404code.jsp</location>
  </error-page>
  • 서버 종료 후 다시 실행

  • 404code.jsp 결과확인




500에러 – 내부 서버 오류


- 이 부분을 확인하고 에러가 난 것을 알 수 있다.

원인

국어점수가 넘어오지 않았다.

?뒤에 Query String값으로 kor값을 넘겨야 에러가 발생하지 않음
http:// localhost:9090/basic05_mvc/error/errorTest.jsp?kor=30



505에러 해결방법

  • 500에러 나올 때 사용자에게 보여줄 페이지 생성

web.xml

  • 500에러 났을 때 보여줄 페이지 경로 작성

서버 재작동

결과확인






View


EL (Expression Language) 표현언어

${ }

EL은 자바스크립트에서 확장된 Xpath에서 힌트를 얻어 만들어진 언어이다.
그러나 EL은 값이 없는 변수(null)에 좀 더 관대하고 데이터 형 변환을 자동으로 해준다.

이러한 특징들은 질의 문자열을 처리하는데 주요하게 작용한다. 질의 문자열은 서버로 전달될 때 항상 문자열로 보내는데, 서버프로그램 내에서는 int, boolean으로 사용할 때가 있다. 이때 EL을 사용하면 값이 없거나 형변환 등에 전혀 신경 쓸 필요 없이 사용할 수 있다.

jsp를 최소화 시켜줄 수 있다.

※ 주의사항 : 반드시 jsp파일로 저장해야한다


  • EL(Expression Language) 표현언어


  • EL에서 사용되는 연산자


elTest2ok.jsp

  • EL 파라미터 예제
  • elTest2.jsp
  • elTest2ok.jsp
    elTest2.jsp에서 사용자가 입력한 값을 elTest2ok.jsp에 출력



EL 내장객체 (Collection)

elTest3.jsp

  • 1) jsp



  • 2) EL



  • 2) EL에서 쓰는 객체는 객체명을 생략할 수 있다.

    ◎ 이렇게 생략해서 쓰면 scope의 범위가 어떤 건지 어떻게 알 수 있는지?

    ▷ EL에서는 page → request → session → allication 순서로 알아서 자동으로 검색을 해준다.
    ▷ 변수명으로 구분을 시켜준다.
    - p_kor, r_eng, s_mat, a_aver 처럼 바꿔준다.


    ◎ 변수명이 동일하면 ?


    - 내장객체명이 생략되면 자동으로 작은 영역순으로 찾게된다.


    ◎ 각 Scope의 내장변수가 없는 경우 ?


    - JSP : null
    - EL : 글자개수 0개인 빈 문자열이 출력된다.




elTest4.jsp

JSP와 EL의 값 공유

  • JSP와 EL은 현재 페이지에서는 서로 값을 공유할 수 없다.
    → pageScope 사용하면 된다.



  • 현재 페이지에서 JSP와 EL이 서로 값을 공유하기 위해서는 pageScope를 활용한다






JSTL

JSP Standard Tag Library
JSP 전용태그


  • jsp 명령어를 선언해놓은 사이트를 연결하고 사용해야한다

    - <%@ include %> : header, footer 같은 공통코드 삽입할 때
    - <%@ taglib %> : 커스텀 태그가 있는 도서관. Custom tag(사용자 정의 태그) 사용할 때


  • JSTL 설치

    /tomcat-8/webapps/examples/WEB-INF/lib
    /taglibs-standard-impl-1.2.5.jar
    /taglibs-standard-spec-1.2.5.jar

  • I:\java202207\apache-tomcat-9.0.67\webapps\examples\WEB-INF\lib
    ▷ 여기 경로로 가서 jar 파일 복사한다.


  • basic05_mvc/lib 폴더에 붙여넣는다.


  • uri에 커서를 놓고 ctrl+space누르면 주소들이 나온다.

  • http://java.sun.com/jsp/jstl/core 입력

    - url사이트에서 jstl문법을 제공해준다.
    - prefix="c"로 명령을 해주면 된다.


  • 1-2)prefix="c"로 JSPL 변수선언




  • 3) JSPL 출력




  • 4) b,c 변수 제거




  • 5) 자바 객체 선언도 가능






JSTL 제어문 연습

jstlTest2.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>jstlTest2.jsp</title>
</head>
<body>
	<h3>* JSTL 제어문 연습 *</h3>
	<form action="jstlTest2ok.jsp"> <!-- 결과페이지 JSP -->
	이름 : <input type="text" name="name"> <br>
    나이 : <input type="text" name="age">  <br>
          <input type="submit" value="확인">
	</form>	
</body>
</html>



jstlTest2ok1.jsp

JSP, JSTL 두가지 버전으로 모두 출력해본다.

(1) JSP

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>jstlTest2ok.jsp</title>
</head>
<body>
	<h3>* 결과페이지(JSP) *</h3>
<% 
	String name=request.getParameter("name");
	int age    =Integer.parseInt(request.getParameter("age"));
	out.print("이름 : " + name + "<br>");
	out.print("나이 : " + age + "<br>");

	//문1) 나이가 10미만 "어린이", 20미만 "청소년", 나머지 "성인" 출력
	if(age<10){
		out.print("어린이");
	}else if(age<20){
		out.print("청소년");
	}else{
		out.print("성인");
	}//if end
	
	//2) 1~나이까지 짝수는 파랑색, 홀수는 빨강색으로 출력
	for(int i=1; i<=age; i++){
		if(i%2==0){
			out.print("<span style='color:blue'>" + i + "</span>");
		}else{
			out.print("<span style='color:red'>" + i + "</span>");
		}//if end
	}//for end
%>
</body>
</html>

(2) JSTL

jstlTest2ok2.jsp


- 이걸로 변경

  • jstlTest2.jsp에 사용자가 입력한 값 가져오고, 변수 설정하기


  • 조건문 / 다중조건문

    - 이름이 itwill이면 대한민국 출력
    - 나이가 10미만이면 어린이, 20미만이면 청소년, 나머지는 성인

  • 결과확인

  • 반복문

    - a가 1부터 나이까지 +1씩 증가하면서 나이만큼 # 찍기



  • 반복문 + 조건문 합치기






JSTL 함수

jstlTest3.jsp

  • Directive prefix="fn", prefix="c" 걸어주기
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

→ 공통적으로 들어가기 때문에 header.jsp에 넣어두면 편하다.


  • 변수지정


fn:length, fn:trim

글자개수, 공백제거 함수

  • 결과확인


fn:substring, fn:toLowerCase, fn:toUpperCase

문자열자르기, 소문자,대문자로 바꿔주는 함수



fn:replace

엔터를 <br>로 바꿔주는 함수 (JSP, EL+JSTL)



fn:escapeXml

< > & ' " 특수문자 바꿔주는 함수































profile
코딩 공부 💻

0개의 댓글