5.20 인공지능 jsp ( 4 )
9-10:30
254p
유효성검사
유효성검사 : 사용자가 폼 페이지에서 입력한 데이터 값이 서버로 전송되기 전에 특정 규칙에 맞게 입력되었는지를 검증하는 것
유효성 검사가 필요한 이유 : 보안공격
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
function CheckForm() {
alert("아이디 : " + document.loginForm.id.value + "\n" +
"비밀번호 : " + document.loginForm.passwd.value);
}
</script>
<body>
<form name="loginForm" >
<p> 아 이 디 : <input type="text" name="id">
<p> 비밀번호 : <input type="password" name="passwd">
<p> <input type="submit" value="전송" onclick="CheckForm()">
</form>
</body>
</html>
-----------------------------------------------------
예제 8-2
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
function checkLogin() {
var form = document.loginForm; //변수지정해서 간단하게 쓸려고
if (form.id.value == "") {
alert("아이디를 입력해 주세요.");
return false;
} else if (form.passwd.value == "") {
alert("비밀번호를 입력해 주세요");
return false;
}//end if
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>
W3Schools Online Web Tutorials
예제3
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
function checkLogin( ){
var form = document.loginForm;
if (form.id.value.length < 4 || form.id.value.length > 12){
alert("아이디는 4~12자 이내로 입력 가능합니다!");
return;
} //end if
if (form.passwd.value.length < 4) {
alert("비밀번호는 4자 이상으로 입력해야 합니다!");
return;
} //end if
form.submit();
}
</script>
<body>
<form name="loginForm" action="validation03_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>
예제 4
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
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("아이디는 영문 소문자로만 입력 가능 합니다!");
return;
}//end if
}//end for
if (isNaN(form.passwd.value)){
alert("비밀번호는 숫자로만 입력 가능 합니다!");
return;
}//end if
form.submit();
}
</script>
<body>
<form name="loginForm" action="validation04_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>
예제 5
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Validation</title>
</head>
<script type="text/javascript">
function checkMember() {
var regExpId = /^[a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
var regExpName = /^[가-힣]*$/;
var regExpPasswd = /^[0-9]*$/;
var regExpPhone = /^\d{3}-\d{3,4}-\d{4}$/;
var regExpEmail = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
var form = document.Member;
var id = form.id.value;
var name = form.name.value;
var passwd = form.passwd.value;
var phone = form.phone1.value + "-" + form.phone2.value + "-" + form.phone3.value;
var email = form.email.value;
if (!regExpId.test(id)) {
alert("아이디는 문자로 시작해 주세요!");
return;
}//end if
if (!regExpName.test(name)) {
alert("이름은 한글만으로 입력해 주세요!");
return;
}//end if
if (!regExpPasswd.test(passwd)) {
alert("비밀번호는 숫자만으로 입력해 주세요!");
return;
}//end if
if (!regExpPhone.test(phone)) {
alert("연락처 입력을 확인해 주세요!");
return;
}//end if
if (!regExpEmail.test(email)) {
alert("이메일 입력을 확인해 주세요!");
return;
}//end if
form.submit();
}
</script>
<body>
<h3>회원 가입</h3>
<form action="validation05_process.jsp" name="Member" method="post">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="password" name="passwd">
<p> 이름 : <input type="text" name="name">
<p> 연락처 : <select name="phone1">
<option value="010">010</option>
<option value="011">011</option>
<option value="016">016</option>
<option value="017">017</option>
<option value="019">019</option>
</select> - <input type="text" maxlength="4" size="4" name="phone2"> -
<input type="text" maxlength="4" size="4" name="phone3">
<p> 이메일 : <input type="text" name="email">
<p> <input type="button" value="가입하기" onclick="checkMember()">
</form>
</body>
</html>
1-2
9장 다국어 처리
예제 9-1
<%@ page contentType="text/html; charset=utf-8"%>
<%@page import="java.text.NumberFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.*"%>
<html>
<head>
<title>Internationalization</title>
</head>
<body>
<h3>현재 로케일의 국가, 날짜, 통화</h3>
<%
Locale locale = request.getLocale(); //loccale 가져오기
Date currentDate = new Date();
DateFormat dateFormat =
DateFormat.getDateInstance(DateFormat.FULL, locale);
NumberFormat numberFormat = NumberFormat.getNumberInstance(locale);
%>
<p> 국가 : <%= locale %>
<p> 날짜 : <%= dateFormat.format(currentDate) %>
<p> 숫자 (12345.67) : <%= numberFormat.format(12345.67) %>
</body>
</html>
예제9-2 리소스 번들
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>Internationalization</title>
</head>
<body>
<p> --------기본 로케일--------
<fmt:setBundle basename="ch09.com.bundle.myBundle" var="resourceBundle" />
<p> 제목 :<fmt:message key="title" bundle="${resourceBundle}" />
<p> <fmt:message key="username" var="userMsg" bundle="${resourceBundle}" />
이름 : ${userMsg}
<p> --------영문 로케일 --------
<fmt:setLocale value="en" />
<fmt:setBundle basename="ch09.com.bundle.myBundle" var="resourceBundle" />
<p> 제목 :<fmt:message key="title" bundle="${resourceBundle}" />
<p> 이름 :<fmt:message key="username" bundle="${resourceBundle}" />
</body>
</html>
bundle 다운받아서 java resources 폴더에 ch09.com.bundle 패키지 만들어서 두 개 다 넣기
예제 9-3 숫자태그
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>Internationalization</title>
</head>
<body>
<p> 숫자 : <fmt:formatNumber value="3200100" />
<p> <fmt:formatNumber value="3200100" type="number" />
<p> <fmt:formatNumber value="3200100" type="number" groupingUsed="false" />
<p> <fmt:formatNumber value="3200100" type="currency" groupingUsed="true" />
<p> <fmt:formatNumber value="3200100" type="currency" currencySymbol="&" />
<p> <fmt:formatNumber value="0.45" type="percent" />
<p> <fmt:formatNumber value="3200100" minIntegerDigits="10" minFractionDigits="2" />
<p> <fmt:formatNumber value="3200100.45" pattern=".000" />
<p> <fmt:formatNumber value="3200100.456" pattern="#,#00.0#" />
</body>
</html>
예제 9-4 날짜 형태
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>Internationalization</title>
</head>
<body>
<p> <jsp:useBean id="now" class="java.util.Date" /> //기본
<p> <fmt:formatDate value="${now}" type="date" />
<p> <fmt:formatDate value="${now}" type="time" />
<p> <fmt:formatDate value="${now}" type="both" />
<p> <fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default" />
<p> <fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short" />
<p> <fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium" />
<p> <fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long" />
<p> <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" />
<p> <fmt:formatDate value="${now}" type="both" pattern="yyyy년MM월dd일 HH시mm분ss초 E요일" />
</body>
</html>
예제 9-5 timeZone (시차)
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>Internationalization</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<p> 한국 :
<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" />
<p>
<fmt:timeZone value="America/New_York">
뉴욕 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full" />
</fmt:timeZone>
<p>
<fmt:timeZone value="Europe/London">
런던 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full" />
</fmt:timeZone>
</body>
</html>
10장 시큐리티
시큐리티란 ? 허가된 사용자만이 특정 웹 페이지에 접근할 수 있도록 제한하는 보안기능
보안제약이 있는지 확인하고 사용자에게 -> 인증 요청
사용자가 페이지에 접근할 수 있는지 확인하여 승인 = 권한부여
에외 ? -- 처리해야하는 것
에러 ? -- 좋은 것
버그 ? -- 나쁜것
--> 미지의 영역 -->개발자
예제 2
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page errorPage="errorPage_error.jsp"%>
<html>
<head>
<title>Exception</title>
</head>
<body>
name 파라미터 : <%=request.getParameter("name").toUpperCase()%>
</body>
</html>
7-9 유니브 회의
9- 약속