JSP, 실수를 줄이기 위한 작은 팁 모음

infoqoch·2021년 1월 22일
0

Servlet(JSP)

목록 보기
2/9

들어가며

JSP를 사용하며 실수할 수 있는 작은 부분들을 모았다.

자바 코드 블럭 선언

  • JSP내 자바 블럭을 선언하는 방법은 아래와 같다.
    • <% %> 스크립트릿 : 자바 블럭. 자바 코드 입력.
    • <%@ %> 지시자 : import, include, taglib 등 사용.
    • <%= %> 표현식 : 객체/변수/데이타 타입 등을 입력.

한글을 깨지지 않도록 인코딩하기

  • request의 인코딩 타입을 설정해야 한글이 깨지지 않는다.
  • filter나 controller에서 해당 코드를 활용하는 것이 더 좋을 테다.
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
%>

태그를 열고 닫기

  • 태그를 열고 닫는 방식은 두 가지가 있다. 클로징 태그가 있는 경우와 없는 경우.
  • 특정 태그는 클로징 태그의 존재 여부에 따라 입력할 수 있는 값과 출력되는 값이 다르므로 주의 해야 한다.
<jsp:forward page="result.jsp"> ............(1)
	<jsp:param value="20" name="age"/> 
</jsp:forward>

<jsp:forward page="result.jsp"> ...........(2)
</jsp:forward>

<jsp:forward page="result.jsp"/> .............(3)
  • (1) request로서 원하는 페이지로 데이타를 포워딩할 때, 클로징 태그를 사용하며, 가운데 블럭에 원하는 값을 넣는다.
  • (2) 클로징 태그를 사용하는데, 어떤 값도 넣지 않으면, 오류가 발생한다.
  • (3) 추가하고 싶은 값이 없으면 클로징 태그가 없이 태그를 닫아야 한다.

usebean을 사용할 때 신경써야 할 몇 가지가 있다.

<jsp:useBean id="mb1" class="MemberBean"/>.........(1.1)
<jsp:useBean id="mb1" class="member.MemberBean"/>.........(1.2)

<jsp:setProperty name="mb2" property="*"/> .........(2)

<jsp:setProperty name="mb1" property="name" param="name"/> .......(3)
<jsp:setProperty name="mb1" property="hobby" value="<%=temp %>"/> ........(4)

이름 : <jsp:getProperty name="mb1" property="name" /><br>.........(5)
취미 : <jsp:getProperty name="mb1" property="hobby" /><br>

(1) 패키지 설정

  • 첫번째 코드는 오류가 발생하고 두번째 코드는 가능하다. 빈으로 사용하는 클래스는 반드시 패키지를 필요로 한다.
  • 해당 빈의 생성자 설정에 주의를 해야 한다. 만약 생성자가 매개변수를 요구한다면, new Member(); 가 작동할 수 없다.

(2-4) 값의 주입

  • (1)에서 객체를 초기화 할 때 참조변수의 이름을 "id"로 정의한다. 그런데 해당 객체를 사용할 때 "name"을 식별자로 한다. (왜지!?)
  • (2) ModelAttribute와 같이 자동적으로 빈의 맴버 값을 주입한다.
  • (3) url의 파라미터의 값을 자동으로 주입한다.
  • (3) value를 자동으로 주입한다.

(5) 값의 출력

  • getProperty를 통해 빈의 맴버 중 원하는 값을 호출할 수 있다.

자동주입할 수 없는 타입

  • JSP는 기본타입과 String을 제외한 다른 데이타 타입을 주입할 수 없는 것 같다. Date 등.
  • 해당 값을 String이나 int로 변환하거나 아니면 스크립트릿 안의 자바 블럭에서 입력한다.
<%
	Date date = request.getAttribute("regDate");
	mb1.setRegDate(date));
%>
profile
JAVA web developer

0개의 댓글