8. 유효성 검사
유효성 검사: 폼 페이지에서 입력한 데이터 값이 서버로 전송되기 전에 특정 규칙에 맞게 입력되었는지 검증하는 것
HTML로 실행 가능한 유효성 검사
- 입력 데이터가 null인지 확인: required
- 날짜나 이메일 입력시 형식 확인: date/email, pattern
- 나이 입력시 숫자인지 확인: number
- 입력 데이터 길이 제한: maxlength
서버에서 실행하는 유효성 검사
- 로그인 인증시 아이디와 비밀번호 확인
- 회원가입시 아이디 중복 여부 확인
1. 데이터 유무 확인
validation01
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Validation</title>
</head>
<script type="text/javascript">
function checkLogin(){
var form = document.loginForm;
if(form.id.value == ""){
alert("아이디를 입력해주세요.");
form.id.focus();
return false;
}else if(form.passwd.value == ""){
alert("비밀번호를 입력해주세요.");
form.passwd.focus();
return false;
}
form.submit();
}
</script>
<body>
<form name="loginForm" action="validation02_process.jsp" method="post">
<p>아이디: <input type="text" name="id">
<p>비밀번호: <input type="password" name="passwd">
<p><input type="button" value="전송" onclick="checkLogin()">
</form>
</body>
</html>
validation01_process
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Validation</title>
</head>
<body>
<h3>입력에 성공했습니다.</h3>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
%>
<p>아이디: <%=id %>
<p>비밀번호: <%=passwd %>
</body>
</html>
이후 양식 동일, script 부분만 작성함
2. 값의 길이 확인
function checkLogin(){
var form = document.loginForm;
if(form.id.value.length<4||form.id.value.length>12){
alert("아이디는 4~12자 이내로 입력 가능합니다!");
form.id.select();
return;
}//if
if(form.passwd.value.length<4){
alert("비밀번호는 4자 이상으로 입력해야 합니다!");
form.passwd.select();
return;
}//if
form.submit();
}
3. 소문자, 숫자 여부 확인
function checkLogin(){
var form = document.loginForm;
for(i=0; i<form.id.value.length; i++){
var ch = form.id.value.charAt(i);
if((ch<'a'||ch>'z')&&(ch>'A'||ch<'Z')&&(ch>'0'||ch<'9')){
alert("아이디는 영문 소문자만 입력 가능합니다!");
form.id.select();
return;
}//if
}//for
if(isNaN(form.passwd.value)){
alert("비밀번호는 숫자만 입력 가능합니다!");
form.passwd.select();
return;
}
form.submit();
}
return과 return false
return은 null을 반환하고 return false는 false를 반환한다.
둘 다 뒤에 나오는 코드가 실행되지 않게 한다.
9. 다국어 처리
1. 개요
2. Locale 클래스 이용
3. JSTL fmt 클래스 이용
1. 다국어 처리 개요
2. Locale 클래스 이용
what?
특정 지리적, 정치적, 문화적 지역을 나타내는 클래스
글자뿐만 아니라 숫자, 날짜 시간 등 표현에 사용
how?
request 내장 객체를 이용해서 헤더에 저장된 정보 취득
java.util.Locale import 필요
java.util.Locale request.getLocale();
//데이터타입
+인스턴스화 방법
Locale locale = new Locale("ko", "KR");
//국가 언어
+미리 정의된 필드값 사용
Locale locale = Locale.KOREA;
2. 1. 로케일 감지
로케일 감지 메서드 종류
메서드 | 반환 유형 | 설명 |
getDefault() | static Locale | 디폴트 로케일의 현재값 |
getCountry() | String | 현재 로케일의 국가/지역 코드(대문자) |
getDisplayCountry() | String | 현재 로케일의 국가 이름 |
getLanguage() | String | 현재 로케일의 언어 코드(소문자) |
getDisplayLanguage() | String | 현재 로케일의 언어 이름 |
사용 예시
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.Locale" %>
<%
Locale locale = request.getLocale();
String displayLanguage = locale.getDisplayLanguage();
String language = locale.getLanguage();
String displayCountry = locale.getDisplayCountry();
String country = locale.getCountry();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println("로케일 언어: "+displayLanguage+"<br />");
out.println("로케일 언어 코드: "+language+"<br />");
out.println("로케일 국가: "+displayCountry+"<br />");
out.println("로케일 국가 코드: "+country+"<br />");
%>
</body>
</html>
로케일 언어: 한국어
로케일 언어 코드: ko
로케일 국가: 대한민국
로케일 국가 코드: KR
2.2 로케일 표현하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Locale,java.util.Date" %>
<%@ page import = "java.text.DateFormat" %>
<%@ page import = "java.text.NumberFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Internationalization</title>
</head>
<body>
<%
Locale locale = request.getLocale();
String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date());
%>
<p>로케일의 날짜 형식
<p><%out.print(date); %>
<%
NumberFormat curency = NumberFormat.getCurrencyInstance(locale);
NumberFormat percentage = NumberFormat.getPercentInstance(locale);
String fcurency = curency.format(1234567);
String fpercentage = percentage.format(0.25);
%>
<p>로케일의 통화 형식: <%out.print(fcurency); %>
<p>로케일의 비율 형식: <%out.print(fpercentage); %>
</body>
</html>
로케일의 날짜 형식
2023년 12월 11일 월요일 오후 4:18
로케일의 통화 형식: ₩1,234,567
로케일의 비율 형식: 25%
DateTimeInstance의 FULL과 SHORT 비교
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Locale,java.util.Date" %>
<%@ page import = "java.text.DateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Locale locale = request.getLocale();
String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date());
String date2 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale).format(new Date());
String date3 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale).format(new Date());
%>
<p>FULL SHORT locale
<p><%out.print(date); %>
<p>FULL FULL locale
<p><%out.print(date2); %>
<p>SHORT SHORT locale
<p><%out.print(date3); %>
</body>
</html>
FULL SHORT locale
2023년 12월 11일 월요일 오후 4:43
FULL FULL locale
2023년 12월 11일 월요일 오후 4시 43분 17초 대한민국 표준시
SHORT SHORT locale
23. 12. 11. 오후 4:43
'정리노트' 카테고리의 다른 글
[JSP] 시큐리티, 예외 처리, 필터 (0) | 2023.12.13 |
---|---|
[JSP] 다국어 처리, 시큐리티 (0) | 2023.12.12 |
[JSP] 마인드맵 정리 (0) | 2023.12.08 |
[JSP] 파일 업로드 (0) | 2023.12.07 |
[JSP] 내장 객체, 폼 태그 (0) | 2023.12.06 |