728x90

분류 전체보기 207

[ Spring ] 게시판 02 - 회원 목록 페이지 나누기 기능 구현

프로젝트 구조 오늘은 이전 포스팅에서 생성했던 유저 목록 페이지에 페이지 나누기 기능을 추가해 보겠습니다. 페이지를 나누려면 별도로 페이지네이션 기능 공식 파일을 생성해서 변수로 추출해서 사용해야 하는데, 이전에 JSP 포스팅했을 때 사용했던 Pager.java 파일을 사용해서 기능 구현을 해보겠습니다. Pager.java Pager 파일은 페이지 나누는 공식과 변수를 담은 파일입니다. 각 변수의 역할은 주석으로 작성했습니다. package com.example.spring.service.board; public class Pager { public static final int PAGE_SCALE=10;//페이지당 게시물수(10개) public static final int BLOCK_SCALE=10;..

[ TomCat ] org.apache.jasper.jasperexception

메인 페이지에 상품 변수 값을 넣어주고 실행시켜 본 결과 org.apache.jasper.jasperexception 라는 에러가 발생했다. jsp로 웹 페이지를 만들다 보면 이 에러를 한 번씩은 만날 수 있다고 합니다. 상품 목록을 문으로 데이터를 웹에 띄우려고 했다가 에러 내용을 확인해 보니, 태그를 찾을 수 없다고 알려주네요. 코드 파일 경로를 전부 확인하면서 벨류 값을 수정해 보고 오타를 찾아봐도 오류 코드를 못 찾았는데. 해당 view 단 파일 태그를 보면서 코드가 잘못 구현되고 있다는 걸 확인했습니다..^^ 메인 페이지에서는 상품의 전체 목록을 가져오려고 하는데, 즉, 자바의 switch문을 조건 처리를 안 하고 사용하고 있었네요..ㅎ 메인 페이지에서는 조건을 별도로 처리할 게 없어서 해당 태..

[ Error ]/TomCat 2023.04.25

[ Spring ] 게시판 01 - 목록/글쓰기 구현

프로젝트 구조 오늘은 Spring을 사용해서 게시판 목록/글쓰기 기능 구현을 해보겠습니다. 파일 구조는 위 사진과 같고, 다음은 테이블을 생성합니다. SQL Table 생성 Board 테이블을 생성해서 연습용 데이터를 추가합니다. --게시판 테이블 create table board ( bno number not null, --게시물번호 title varchar2(200) not null, --제목 content clob, --본문 writer varchar2(50) not null, --작성자 regdate date default sysdate, --작성일자 viewcnt number default 0, --조회수 primary key(bno) ); insert into board (bno,title,c..

[ Java ] javax.el.PropertyNotFoundException

공지사항 페이지 구현하는 과정에서 javax.el.PropertyNotFoundException 에러가 발생했다... 위 에러는 EL 구문을 사용하는 과정에서 ${dto.name} name에 해당하는 프로퍼티를 찾지 못한 경우에 발생하는 에러입니다. EL 구문을 사용하기 위해서는 DTO를 자바빈즈 규약에 맞게 만들어야 하는데, 해당 DTO의 멤버 변수 name 값을 찾지 못해서 발생하기 때문에 경로를 찾아가서 코드를 확인해야 하는데, 이 에러는 크게 두 가지 실수로 나오는 에러라고 생각합니다. 1. 문 사용해서 멤버 변수를 가져올 때 변수 스펠링 (대문자/소문자) 확인 2. DTO에 해당 변수의 유/무 체크 저는 해당 멤버 변수를 생성하지 않고 요청을 보냈기 때문에 에러가 발생했습니다..^^ 프로젝트 기..

[ Error ]/JAVA 2023.04.23

[ SQL ] java.sql.SQLSyntaxErrorException

유저 페이지 기능을 하나씩 추가하면서 회원가입 기능을 점검하던 중... SQLSyntaxErrorException 예외가 발생했다. 에러 내용을 확인해 보면 too many values 라고 나오는데 컬럼 수보다 값을 더 추가해서 넣어서 예외가 발생했다고 합니다. 경로를 찾아가서 코드를 확인한 결과 SQL문이 잘못된 걸 확인할 수 있었다. 맨 처음 회원가입 코드를 구현하던 중, 회원 가입일, 수정일을 SQL에서 Defalut sysdate로 지정했는데... 코드에는 벨류 값으로 들어오지 않는데, insert를 시킨 것이다.. 다행히 sysdate 두 개를 삭제하고 다시 실행해보니 에러가 사라졌다. SQLSyntaxErrorException 예외에는 too many values 에러 말고도 ORA-0094..

[ Error ]/SQL 2023.04.21

[ Spring ] Ajax 파일업로드

FormData 객체 파일 업로드 Ajax 방식의 핵심은 FormData라는 브라우저에서 지원하는 클래스입니다. FormData는 과 같은 효과를 가져다주는 key/value 가 저장되는 객체이며, 태그처럼 데이터를 처리할 수 있게 해 줍니다. 이를 XMLHttpRequest(XHR)라는 Ajax 요청을 생성하는 JavaScript API에 실어서 서버에 보내면 마치 이 전송된 것과 같은 효과를 가집니다. UUID(Universally Unique IDentifier) UUID는 네트워크 상에서 고유성을 보장하는 ID를 만들기 위한 표준 규약입니다. UUID는 다음과 같이 32개의 16진수로 구성되며 5개의 그룹으로 표시되고 각 그룹은 붙임표(-)로 구분합니다. 8(비트)-4(비트)-4(비트)-4(비트)..

[ TomCat ] Not allowed to load local resource 에러 해결

오늘부터 Error 해결 포스팅을 시작해 보겠습니다. 쇼핑몰 토이 프로젝트를 하던 중 상품 이미지를 웹에 구현하는데... 위 사진처럼 이미지 엑박이 나오면서 개발자 모드에서 Not allowed to load local resource 라는 에러가 나왔다. 찾아보니 WAS 이외의 경로의 파일을 절대 경로로 읽으려고 할 때 나타나는 오류라고 합니다. 저는 곰곰이 생각해 보다가 코드를 보니까 경로가 이상하다는 걸 확인했습니다. 위 사진처럼 절대 경로로 파일을 읽으려고 하다 보니 오류가 발생했는데, 이럴 땐 파일을 읽기 위해서 Tomcat의 server.xml 파일을 수정해야 합니다. server.xml 파일을 열어보면 태그가 있습니다. 태그 안에 파일 경로와 Context Path 값을 지정해 주고 Rest..

[ Error ]/TomCat 2023.04.19

[ Spring ] 코드 난독화

자바 스크립트 난독화 자바 스크립트는 클라이언트에서 실행되는 스크립트 언어이므로 소스 코드가 그대로 노출됩니다. 물론 굳이 자바 스크립트까지 난독화할 필요는 없지만 만약 중요한 기능이라면 난독화 기능을 사용하여 배포하는 게 좋습니다. 자바스크립트 난독화 사이트 - http://dean.edwards.name/packer/ /packer/ Copyright © 2004-2023 Dean Edwards. All rights reserved. dean.edwards.name - https://obfuscator.io/ JavaScript Obfuscator Tool What is this? This tool transforms your original JavaScript source code into a ne..

[ Spring ] Interceptor

Interceptor란? Interceptor는 요청을 가로채는 작업을 의미합니다. 즉, 사용자의 요청이 Controller에 가기 전에 가로채고, 서버의 응답이 사용자에게 가기 전에 가로챕니다. 좀 더 풀어보자면, 해당 URL 요청이 MAIN ACTION 요청이 있을 때 우선 선 처리로 갔다가 세션이 없으면 즉, false면 로그인 페이지로 보내고, true면 정상적으로 MAIN ACTION으로 이동합니다. 선 처리, 후 처리는 어떤 역할을 할까?? 선 처리 : 세션 체크 해서 세션이 없으면 로그인 페이지로 보내고 세션이 있으면 정상적으로 URL 확장자로 간다. 후 처리 : 세션 체크는 후 처리할 내용이 없기 때문에 단지 추상 메서드 오버라이딩 처리만 해둔다. 그럼 중간에 가로채는 작업이면 실행 순서는..

[ Spring ] 상품 수정/삭제 기능 구현

프로젝트 구조 오늘은 이전 포스팅에서 생성했던 상품 목록 페이지에 기능을 추가하려고 합니다. 추가 기능은 수정/삭제입니다. product_list 이전 포스팅에서 상품 이름 아래에 관리자 ID값이 들어오면 편집 기능이 표출되게 코드 작업을 했습니다. 그렇다면 해당 태그를 Controller에 요청을 보내는 코드를 작성합니다. 상품목록 상품코드 상품명 가격 ${row.product_id} ${row.product_name} [편집] 저는 shop = > productController에 세부 url을 edit으로 설정하고 GET 방식으로 상품 아이디랑 같이 요청을 보냈습니다. 위 코드처럼 URI에 변수가 들어가는걸 실무에서 많이 볼 수 있습니다. 그렇다면 어떻게 처리를 해야 할까?? Controller U..

728x90