인공지능/JSP

5.20 인공지능 jsp ( 4 )

bibibig_data 2021. 6. 5. 21:01

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("아이디를 입력해 주세요.");

form.id.focus();

return false;

} else if (form.passwd.value == "") {

alert("비밀번호를 입력해 주세요");

form.passwd.focus();

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자 이내로 입력 가능합니다!");

form.id.select();

return;

} //end if

if (form.passwd.value.length < 4) {

alert("비밀번호는 4자 이상으로 입력해야 합니다!");

form.passwd.select();

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("아이디는 영문 소문자로만 입력 가능 합니다!");

form.id.select();

return;

}//end if

}//end for

if (isNaN(form.passwd.value)){

alert("비밀번호는 숫자로만 입력 가능 합니다!");

form.passwd.select();

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("아이디는 문자로 시작해 주세요!");

form.id.select();

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- 약속