프로그래밍 공부

2025.02.14 JSP 공부

3452 2025. 2. 14. 17:56

파일 유효성 검사

 

유효성 검사는 사용자가 폼 페이지에서 입력한 데이터 값이 서버로 전송되기 전에 특정 규칙에 맞게 입력되었는지 검증하는 것을 말한다.

 

유효성 검사 자체는 HTML, JS, 자바에서 모두 가능하지만 대부분의 유효성 검사는 HTML만으로도 충분하기 때문에 최대한 HTML을 활용하고 서버에 저장되는 데이터의 경우에만  자바에서 처리하도록 한다.

 

유효성 검사 항목

 

  • 입력 데이터가 null 인지 확인하는 유효성 검사
  • 날짜나 이메일을 입력할 때 형식에 맞는지 확인하는 유효성 검사
  • 나이를 입력할 때 숫자인지 확인하는 유효성 검사
  • 입력 데이터의 제한 길이를 초과했는지 확인하는 유효성 검사
  • 로그인 인증 시 아이디와 비밀번호를 확인하는 유효성 검사
  • 회원 가입 시 아이디 중복 여부를 확인하는 유효성 검사

먼저 입력 데이터의 null을 확인 하는 것은 HTML의 input 태그의 require 속성으로 검사 가능하다.

 

날짜나 이메일 또한 HTML의 date 타입에 min max 속성을 주거나 email 타입을 이용하면 검사 가능하다.

 

입력 데이터의 제한길이는 text 타입의 minlength, maxlength를 이용하면 검사 가능하다.

 

결과적으로 서버에 저장되는 아이디와 비밀번호와 대조시켜야하는 경우에만 자바를 이용해서 유효성 검사를 하는것이 간단하고 빠르며 서버에 부하를 주지 않기 때문에 권장되는 방법이다.

 

 

데이터 형식 유효성 검사

 

정규 표현식 사용하기

 

var 변수 이름 = / 정규 표현식 /[Flag];

 

var 변수 이름 = new RegExp('정규 표현식', ['Flag']);

 

정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.

 

여기서 Flag는 정규 표현식의 끝인 / 다음에 오는 문자열로 생략할 수 있고, 주로 사용하는 것은 세종류이다.

 

i : 문자열의 대소문자를 구별하지 않고 검출한다.

g : 문자열 내의 모든 패턴을 검출한다.

m : 문자열에 줄 바꿈 행이 있는지 검출한다.

 

 

정규 표현식의 메서드

 

test() : 매개변수 값으로 전달되는 문자열이 정규 표현식에 부합한지 판단하여 true / false를 반환한다.

exec() : 매개변수 값으로 전달되는 문자열에서 정규 표현식에 부합된 문자열을 추출하여 반환한다.

 

 

이외에도 정규 표현식의 표현 방법에는 메타 문자라는것이 있다.

 

^ : 문자열의 시작

$ : 문자열의 끝

. : 임의의 한 문자

+ : 1번 이상 반복

* : 0번 이상 반복

x|y : x 또는 y를 찾는다.

(x) : 괄호 안의 내용을 캡쳐하고 그룹화 한다.

{n} : n번 반복된 문자를 찾는다.

{n, } : n번 이상 반복한 문자를 찾는다.

{n, m} : n번 이상 m번 이하 반복한 문자를 찾는다.

 

이러한 메타문자들이 있지만 정규 표현식은 누군가 만들어둔 패턴이 많기 때문에 이런게 있다는것 정도만 알고 필요할때 찾아 쓰는게 좋다.

 

 

다국어 처리

 

웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스를 말한다.

 

이때 언어 및 지역은 윈도우로 부터 웹 브라우저가 얻어온 데이터를 헤더로 부터 얻어서 클라이언트의 지역과 시간을 얻는다.

 

이렇게 얻어진 사용자의 국가에 대한 데이터를 기반으로 숫자, 날짜, 시간의 형식, 화폐, 키보드의 지원, 문자열의 순서와 정렬, 심볼, 아이콘, 색상등을 사용자의 국가에 맞게 적합화 하는것이 지역화이다.

 

 

Locale 클래스를 이용한 다국어 처리

 

Locale 클래스는 특정 지리적 정치적 문화적 지역을 나타내는 클래스로, 사용자의 지역 환경에 따라 결정되는 지역적 문화의 정보를 담고 있다.

 

Locale 객체의 생성은 request 내장 객체를 이용하여 현재 웹 브라우저에 미리 정의된 언어나 국가 정보를 가져오는 방법으로 형식은 다음과 같다.

 

java.util.Locale request.getLocale();

 

Locale locale = new Locale("ko", "KR");

 

Locale locale = Locale.KOREA;

 

메서드 반환 유형 설명
getDefault() String Locale 디폴트 로케일의 현재 값을 가져온다.
getCountry() String 현재 로케일의 국가/지역 코드(대문자)를 가져온다
getDisplayContry() String 현재 로케일의 국가 이름을 가져온다.
getLanguage() String 현재 로케일의 언어 코드(소문자)를 가져온다.
getDisplayLanguage() String 현재 로케일의 언어 이름을 얻어온다.

 

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

 

<%

      Locale locale = request.getLocale();

      String displayLanguage = locale.getDisplayLanguage();

      String language = locale.getLanguage();

      String displayContry = locale.getDisplayCountry();

      String country = locale.getCountry();

%>

 

<%

      out.println("로케일 언어 : " + displayLanguage + "<br>"/);

      out.println("로케일 언어 코드 : " + language + "<br>"/);

      out.println("로케일 국가 : " + displayContry  + "<br>"/);

      out.println("로케일 국가 코드 : " + country  + "<br>"/);

%>

 

위와 같은 형태로 국가에 대한 정보를 가져올수 있다.

 

 

화폐 3자리 마다 콤마 찍기

 

<%

      Locale locale = request.getLocale(); // 국가 정보를 가져오기 위해 객체생성

      NumberFormat currency = NumberFormat.getCurrentcyInstance(locale); // 숫자, 통화 정보를 가져오기 위해 객체생성

      String fcurrency = currency.format(10000000); // 가져온 포맷을 이용해 콤마 찍기

%>

 

 

JSTL fmt 태그를 이용한 다국어 처리

 

JSTL fmt 태그는 다국어 문서 처리를 위한 국제화 및 지역화 태그이다.

 

<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>

 

위의 태그를 페이지 설정에 두고, JSTL 라이브러리인 jstl.jar 파일이 필요하다.

 

fmt 태그

 

<fmt:태그 >의 형태로 쓰이며 태그는

 

setLocal : 로케일을 실행한다.

requestEncoding : 요청 파라미터의 문자 인코딩을 설정한다.

 

bundle : 사용할 리소스번들을 설정한다.

message : 리소스번들에서 로케일에 맞는 메시지를 가져와 출력한다.

setBundle : 리소스번들을 읽어와 특정 변수에 저장한다.

 

formatDate : 날짜 형식을 표현한다.

parseDate : 문자열에서 원하는 패턴의 날짜 형식으로 변환한다.

 

parseNumber : 문자열에서 원하는 패턴의 숫자 형식으로 변환한다.

formatNumber : 숫자 형식을 표현한다.

 

setTimeZone : 특정 범위의 시간대를 설정한다.

timeZone : 시간대를 설정한다.

 

<fmt:setLocale value ="언어 코드[_국가코드]" [scope = "{page | request | session | application}"] />

 

이러한 방식으로 사용하며, 스코프는 객체의 수명을 의미한다.

'프로그래밍 공부' 카테고리의 다른 글

2025.02.18 JSP 공부  (0) 2025.02.18
2025.02.17 JSP 공부  (0) 2025.02.17
2025.02.13 JSP 공부  (0) 2025.02.13
2025.02.12 JSP 공부  (0) 2025.02.12
2025.02.11 JSP 공부  (0) 2025.02.11