JSP 예제로 공부하기 ①
by 효기’s
주의 사항
JSP 파일은 webapp 하위폴더에 생성해야 정상적으로 실행이 가능하다.
Sevlet을 사용하여 시간을 출력하기
hello.jsp
<!-- jsp 페이지 속성을 지정합니다. -->
<!-- 페이지의 콘텐츠 유형이 텍스트 형식이며 문자 인코딩은 EUC-KR로 설정 -->
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!-- jsp 페이지가 java 언어로 작성되어 있음을 나타냅니다. -->
<%@page import="java.util.Calendar" %>
<!DOCTYPE html>
<html>
<head>
<%
Calendar c = Calendar.getInstance(); // 클래스 인스턴스 생성
int hour = c.get(Calendar.HOUR_OF_DAY); // 현재 시간에서 시간을 가져옴
int minute = c.get(Calendar.MINUTE); // 분을 가져옴
int second = c.get(Calendar.SECOND); // 초를 가져옴
%>
<!-- html 문서 내에 제목과 함께 출력할 내용 -->
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Servlet Test</title>
</head>
<body>
<h1>현재 시간은 <%=hour %>시 <%=minute %>분 <%=second %>초 입니다.</h1>
</body>
</html>
SevletTest.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SevletTest
*/
@WebServlet("/Batman")
public class SevletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SevletTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 GET방식으로 처리
*/
@Override
// 웹 통신을 Get방식으로 처리
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("euc-kr"); // 힌글
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
PrintWriter out = response.getWriter();
out.write("<HTML><HEAD><TITLE>ServletTest</TITLE></HEAD>");
out.write("<BODY><H1>");
out.write("현재 시각은 ");
out.write(Integer.toString(hour));
out.write("시 ");
out.write(Integer.toString(minute));
out.write("분 ");
out.write(Integer.toString(second));
out.write("초입니다.");
out.write("</H1></BODY></HTML>");
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 POST방식으로 처리
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
계산기 출력하기
Calc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>덧셈 계산기</h3>
<HR>
<!-- Calc으로 지정된 action 속성값 지정하고 POST 방식으로 데이터를 전송 -->
<form name=form1 action=./Calc method=post>
<input type="text" NAME="num1" width=200 size="5">
<select NAME="operator">
<option selected>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
<option>%</option>
</select>
<input type="text" NAME="num2" width=200 size="5">
<input type="submit" value="계산" name="B1">
<input type="reset" value="다시입력" name="B2">
</form>
</body>
</html>
※ Calc.java, CalcServlet.java 두개의 클래스를 src/main/java 하위폴더인 calc 패키지 안에 넣어야한다.
Calc.java
package calc;
public class Calc {
private int num1;
private int num2;
private String operator;
public Calc(int num1, int num2, String operator) {
this.num1 = num1;
this.num2 = num2;
this.operator = operator;
}
public int getResult() {
if (operator.equals("+")) {
return num1 + num2;
} else if (operator.equals("-")) {
return num1 - num2;
} else if (operator.equals("*")) {
return num1 * num2;
} else if (operator.equals("/")) {
return num1 / num2;
}
return 0; // 연산자가 잘못된 경우 0을 반환
}
}
CalcServlet.java
package calc;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SevletTest
*/
//@WebServlet("/Batman")
public class CalcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CalcServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 GET방식으로 처리
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 POST방식으로 처리
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 변수선언
int num1, num2;
int result;
String op;
// 클라이언트 응답시 전달될 컨텐츠에 대한 mime type과 캐릭터셋 지정
response.setContentType("text/html; charset=euc-kr");
// 클라이언트 응당을 위한 출력 스트림 확보
PrintWriter out = response.getWriter();
// HTML form 을 통해 전달된 num1, num2 패러미터 값을 변수에 할당
// 이때 getParameter() 메서드는 문자열을 리턴하므로 숫자형 데이터의 경우 integer.parseInt()을 통해 int로 변환함
num1 = Integer.parseInt(request.getParameter("num1"));
num2 = Integer.parseInt(request.getParameter("num2"));
op = request.getParameter("operator");
// calc() 메서드 호출로 결과 받아옴
// result = calc(num1, num2, op);
Calc calc = new Calc(num1, num2, op);
result = calc.getResult();
// 출력 스트림을 통해 화면 구성
out.println("<HTML>");
out.println("<HEAD><TITLE>계산기</TITLE></HEAD>");
out.println("<BODY><center>");
out.println("<H2>계산결과</H2>");
out.println("<HR>");
out.println(num1 + " " + op + " " + num2 + " = " + result);
out.println("</BODY></HTML>");
}
// 실제 계산 기능을 수행하는 메서드
public int calc(int num1, int num2, String op) {
int result = 0;
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("*")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
return result; // 연산자가 잘못된 경우 0을 반환하도록 설정
}
}
Calc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>덧셈 계산기</h3>
<HR>
<!-- Calc으로 지정된 action 속성값 지정하고 POST 방식으로 데이터를 전송 -->
<form name=form1 action=./calc method=POST>
<input type="text" NAME="num1" width=200 size="5">
<select NAME="operator">
<option selected>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
<option>%</option>
</select>
<input type="text" NAME="num2" width=200 size="5">
<input type="submit" value="계산" name="B1">
<input type="reset" value="다시입력" name="B2">
</form>
</body>
</html>
회원가입 페이지 정보 가져오기
members.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입 페이지</title>
<style>
table,
th,
td {
border: 1px solid black;
border-collapse: collapse;
border-color: #baebff;
}
</style>
</head>
<body>
<script src="script.js"></script>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<form action=./Signup method=post onsubmit="return isThatRight();">
<table width="650" height="500" border="1" align="center" name="table">
<tr>
<td align="center" bgcolor="#baebff" colspan="2">회원 기본 정보</b></td>
</tr>
<tr>
<td align="center"><b>아이디:</b> </td>
<td><input type="text" NAME="id" id="id" maxlength="12" minlength="4"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td align="center"><b>비밀번호: </b></td>
<td><input type="password" NAME="pw" id="pw" maxlength="12" minlength="4"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td align="center"><b>비밀번호 확인: </b></td>
<td><input type="password" NAME="pwCheck" id="pwCheck"></td>
</tr>
<tr>
<td align="center"><b>메일주소: </b></td>
<td><input type="email" NAME="email" id="email"> 예) id@domain.com</td>
</tr>
<tr>
<td align="center"><b>이름: </b></td>
<td><input type="text" NAME="name" id="name"></td>
</tr>
<tr>
<td align="center"><b>주소: </b></td>
<td>
<input type="text" NAME="zip-code" id="zip-code" placeholder="우편번호" readonly>
<input type="button" onclick="execDaumPostcode()" value="주소찾기"><br>
<input type="text" NAME="address-1" id="address-1" placeholder="도로명주소" size="30" readonly>
<input type="text" NAME="address-1-1" id="address-1-1" placeholder="지번주소" size="30" readonly><br>
<input type="text" NAME="address-2" id="address-2" placeholder="상세주소" size="30">
</td>
</tr>
<tr>
<td align="center" bgcolor="#baebff" colspan="2">개인 신상 정보</td>
</tr>
<tr>
<td align="center"><b>주민등록번호: </b></td>
<td><input type="text" NAME="RRN" id="RRN"> 예) 1234561234567</td>
</tr>
<tr>
<td align="center"><b>생일: </b></td>
<td>
<input type="text" size="4" NAME="year" id="year">년
<select type="month" NAME="month" id="month">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
월
<select id="day" NAME="day">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
일
</td>
</tr>
<tr>
<td align="center"><b>관심분야: </b></td>
<td>
<input type="checkbox" name="관심분야" value="컴퓨터">컴퓨터
<input type="checkbox" name="관심분야" value="인터넷">인터넷
<input type="checkbox" name="관심분야" value="여행">여행
<input type="checkbox" name="관심분야" value="영화감상">영화감상
<input type="checkbox" name="관심분야" value="음악감상">음악감상
</td>
</tr>
<tr>
<td align="center" height="300"><b>자기소개: </b></td>
<td><textarea id="intro" NAME="intro" name="intro" rows="10" cols="50"></textarea></td>
</tr>
</table>
<br>
<div align="center">
<input type="submit" value="회원가입">
<input type="reset" value="다시입력" align="center">
</div>
</form>
</body>
</html>
script.js
// 유효성 검사를 함수로 정의
function isValidId(id) {
// 아이디의 길이가 4에서 12 사이인지 확인
if (id.length < 4 || id.length > 12) { // 아이디 길이가 4 이하거나 12 이상일때 false
return false;
}
// 모든 문자가 알파벳 대소문자 또는 숫자인지 확인
for (let i = 0; i < id.length; i++) {
let char = id[i]; // 인덱스 i에 해당하는 문자를 char에 할당하고
if (!(char >= 'a' && char <= 'z') && !(char >= 'A' && char <= 'Z') && !(char >= '0' && char <= '9')) {
// 대소문자, 숫자가 아니면 false를 합니다.
return false;
}
}
// 위의 조건들을 모두 만족하면 유효한 아이디로 판단
return true;
}
function isValidPw(pw) {
// 같은 방식으로 아이디의 길이가 4에서 12 사이인지 확인
if (pw.length < 4 || pw.length > 12) {
return false;
}
// 모든 문자가 알파벳 대소문자 또는 숫자인지 확인
for (let i = 0; i < pw.length; i++) {
let char = pw[i];
if (!(char >= 'a' && char <= 'z') && !(char >= 'A' && char <= 'Z') && !(char >= '0' && char <= '9')) {
return false;
}
}
// 위의 조건들을 모두 만족하면 유효한 아이디로 판단
return true;
}
function isValidName(name) {
// 이름의 길이가 2에서 4 사이인지 확인
if (name.length < 2 || name.length > 4) {
return false;
}
// 모든 문자가 한글인지 확인
for (let i = 0; i < name.length; i++) {
let charCode = name.charCodeAt(i); // name에 있는 문자의 유니코드 값을 charCode 변수에 넣습니다.
if (!(charCode >= 0xAC00 && charCode <= 0xD7A3)) { // '가'와 '힣'의 유니코드 범위를통해 문자가 한글인지 확인합니다.
return false;
}
}
// 위의 조건들을 모두 만족하면 유효한 이름으로 판단
return true;
}
function isValidEmail(email) {
// '@' 기호를 기준으로 분리해서 parts 변수에 넣습니다.
let parts = email.split('@');
// '@'가 하나만 있는지, 그리고 아이디와 도메인 부분이 존재하는지 확인
// parts[0]부분이 아이디부분이고 parts[1]부분이 도메인 부분입니다.
if (parts.length !== 2 || parts[0] === '' || parts[1] === '') {
return false;
}
// 도메인 부분을 '.'으로 분리
let domainParts = parts[1].split('.');
// '.'가 적어도 하나 있으며, 마지막 도메인 부분이 비어있지 않은지 확인
if (domainParts.length < 2 || domainParts[domainParts.length - 1] === '') {
return false;
}
// 위의 조건들을 모두 만족하면 유효한 이메일로 판단
return true;
}
function isThatRight() {
//id 유효성 검사
const inputId = document.getElementById("id"); // 아이디를 가져와서 inputId 변수에 넣고
if (inputId.value == "") { // id 텍스트가 비어있으면
alert(("아이디를 입력하세요.")); // 아이디 입력 경고창 팝업
inputId.focus();
return false;
} else if (!isValidId(inputId.value)) { // 아이디 유효성 검사 함수가 아닌경우
alert("아이디는 영문 대소문자와 숫자 4~12자리로 입력해야 합니다!"); // 경고창 팝업
inputId.value = ""; // 텍스트 비움
inputId.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
//pw 유효성 검사
const inputPw = document.getElementById("pw"); // pw 아이디를 가져와서 inputpw 변수에 넣고
if (inputPw.value == "") { // 비밀번호가 비어있을경우
alert("비밀번호를 입력하세요."); // 경고창 팝업
inputPw.focus();
return false;
} else if (!isValidPw(inputPw.value)) { // 비밀번호 유효성 검사 함수가 아닌경우
alert("비밀번호는 영문 대소문자와 숫자 4~12자리로 입력해야 합니다!"); // 경고창 팝업
inputPw.value = ""; // 텍스트 비움
inputPw.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
if (inputId.value === inputPw.value) { // 텍스트에 아이디와 비밀번호가 같은경우
alert("아이디와 비밀번호가 같을 수 없습니다."); // 경고창 팝업
inputPw.value = ""; // 텍스트 비움
inputPw.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
//pwCheck 유효성 검사
const inputPwCheck = document.getElementById("pwCheck"); // pwCheck 아이디로 내용을 가져와서 inputPwcheck 변수에 넣습니다.
if (inputPw.value !== inputPwCheck.value) { // 일치여부를 확인하고 경고창을 띄웁니다.
alert("비밀번호와 비밀번호 확인이 일치하지 않습니다.");
inputPwCheck.value = ""; // 일치하지 않으면 비밀번호 확인 내용을 지웁니다.
inputPwCheck.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
//이메일 유효성 검사
const inputEmail = document.getElementById("email"); // email 아이디로 내용을 가져와서 inputEmail 변수에 넣습니다.
if (inputEmail.value == "") { // 이메일 칸에 비어 있을 경우
alert("이메일을 입력하세요."); // 경고창 팝업
inputEmail.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
} else if (!isValidEmail(inputEmail.value)) { // 이메일 유효성 검사에서 아닌경우
alert("이메일이 올바르지 않습니다."); // 경고창 팝업
inputEmail.value = ""; // 텍스트 비움
inputEmail.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
//이름 유효성 검사
const inputName = document.getElementById("name"); // name 아이디로 내용을 가져와서 inputName 변수에 넣습니다.
if (inputName.value == "") { // 이름 칸에 비어 있을 경우
alert("이름을 입력하세요."); // 경고창 팝업
inputName.value = ""; // 텍스트 비움
inputName.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
} else if (!isValidName(inputName.value)) { // 이름 유효성 검사에서 아닌경우
alert("이름이 올바르지 않습니다."); // 경고창 팝업
inputName.value = ""; // 텍스트 비움
inputName.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
const inputAdress1 = document.getElementById("zip-code"); // zip-code 아이디로 내용을 가져와서 inputAdress1 변수에 넣습니다.
if (inputAdress1.value == "") { // 우편변호 칸에 비어 있을 경우
alert("우편번호를 입력하세요."); // 경고창 팝업
inputAdress1.value = ""; // 텍스트 비움
inputAdress1.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
const inputAdress2 = document.getElementById("address-2"); // address-2 아이디로 내용을 가져와서 inputAdress2 변수에 넣습니다.
if (inputAdress2.value == "") { // 상세주소 칸에 비어 있을 경우
alert("상세주소를 입력하세요."); // 경고창 팝업
inputAdress2.value = ""; // 텍스트 비움
inputAdress2.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
// 주민등록번호
const userInfo = document.getElementById("RRN"); // RRN 아이디로 내용을 가져와서 userInfo 변수에 넣습니다.
if (userInfo.value == "") { // 아무것도 입력하지 않았을때
alert("주민번호를 입력하세요."); // 경고창 팝업
userInfo.focus();
return false; // 입력 필드에 자동으로 포커스 이동
};
// 주민번호 13자리인지 확인한다.
if (userInfo.value.length != 13) {
alert("주민번호가 올바르지 않습니다."); // 경고창 팝업
return false;
}
let sum = 0;
const weights = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]; // weights 변수에 값을 입력
// 마지막 자리 제외하고 반복
for (let i = 0; i < userInfo.value.length - 1; i++) {
// 숫자인지 확인
if (userInfo.value.charAt(i) < '0' || userInfo.value.charAt(i) > '9') {
alert("주민번호가 올바르지 않습니다."); // 경고창 팝업
return false;
}
// 각 자리수에 가중치 weights를 각각 곱해서 합산
sum += parseInt(userInfo.value.charAt(i)) * weights[i];
}
sum = (11 - (sum % 11)) % 10; // 합을 11로 나눈 나머지값에 11을빼고 10나머지로 한자리수 체크 디지트를 만듬
// 체크디지트랑 주민번호 끝자리랑 비교
if (sum !== parseInt(userInfo.value.charAt(12))) {
alert("주민번호가 올바르지 않습니다."); // 경고창 팝업
return false;
}
// 생년월일 검사 및 자동입력
// 각각 년 월 일별로 아이디를 가져옵니다.
const yearcheck = document.getElementById("year");
const monthcheck = document.getElementById("month");
const daycheck = document.getElementById("day");
// 19년도는 남자가 1, 여자가2이고 20년도에는 2보다 이상입니다.
let birthYearPrefix = "19";
if (parseInt(userInfo.value.charAt(6)) > 2) {
birthYearPrefix = "20";
}
// birthYearPrefix와 문자열 처음 두글자를 합쳐서 yearcheck 값으로 설정
yearcheck.value = birthYearPrefix + userInfo.value.substring(0, 2);
// userInfo의 세번째 글자가 0이면
if (userInfo.value.charAt(2) === '0') {
monthcheck.value = userInfo.value.charAt(3); // 4번째 글자를 가져와서 monthcheck에 설정
}
else { // 아닐경우
monthcheck.value = userInfo.value.substring(2, 4); // 3번째와 4번째 글자를 가져와서 설정한다.
}
// 일도 같은 방식으로 설정한다.
if (userInfo.value.charAt(4) === '0') { // 5번째 글자가 0이면
daycheck.value = userInfo.value.charAt(5); // 6번째 글자를 가져와서 day에 설정
}
else { // 또는
daycheck.value = userInfo.value.substring(4, 6); // 5번째와 6번째 글자를 가져와서 설정.
}
// 관심분야라는 이름을 가진 체크박스 요소를 선택한다.
let checkboxes = document.querySelectorAll('input[type="checkbox"][name="관심분야"]');
// 선택된 체크박스 중 최소 하나 이상 선택되어 있는지 확인
let checkedOne = Array.prototype.slice.call(checkboxes).some(x => x.checked);
if (!checkedOne) { // 최소 하나 이상 선택되어있지 않다면
alert("적어도 하나 이상의 관심 분야를 선택해주세요."); // 경고창 팝업
return false;
}
//자기소개 유효성 검사
const inputIntro = document.getElementById("intro"); // intro 아이디를 가져와서 inputIntro 변수에 설정한다.
if (inputIntro.value == "") { // 비어있을경우
alert("자기소개를 입력하세요."); // 경고창 팝업
inputIntro.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
// 10 이상 300 이하로 입력이 되지 않았을때
} else if (!(inputIntro.value.length >= 10 && inputIntro.value.length <= 300)) {
alert("자기소개는 10자 이상 300자 이하로 입력해야 합니다."); // 경고창 팝업
inputIntro.focus(); // 입력 필드에 자동으로 포커스 이동
return false;
}
alert("회원가입이 완료되었습니다."); // 마무리 경고창
}
// 주소
function execDaumPostcode() {
new daum.Postcode({
oncomplete: function (data) {
document.getElementById('zip-code').value = data.zonecode;
document.getElementById('address-1').value = data.address;
document.getElementById('address-1-1').value = data.jibunAddress;
document.getElementById('address-2').focus();
}
}).open();
}
MemberServlet.java
package member;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SevletTest
*/
//@WebServlet("/Batman")
public class MemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 GET방식으로 처리
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response) 웹 통신을 POST방식으로 처리
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 변수선언
String id, pw, email, name, address1, address2, address11;
String RRN, year, month, day, intro;
String[] interest;
// 클라이언트 응답시 전달될 컨텐츠에 대한 mime type과 캐릭터셋 지정
response.setContentType("text/html; charset=euc-kr");
// 클라이언트 응당을 위한 출력 스트림 확보
PrintWriter out = response.getWriter();
// HTML form 을 통해 전달된 num1, num2 패러미터 값을 변수에 할당
// 이때 getParameter() 메서드는 문자열을 리턴하므로 숫자형 데이터의 경우 integer.parseInt()을 통해 int로 변환함
id = request.getParameter("id");
pw = request.getParameter("pw");
email = request.getParameter("email");
name = request.getParameter("name");
address1 = request.getParameter("address-1");
address11 = request.getParameter("address-1-1");
address2 = request.getParameter("address-2");
RRN = request.getParameter("RRN");
year = request.getParameter("year");
month = request.getParameter("month");
day = request.getParameter("day");
interest = request.getParameterValues("관심분야");
intro = request.getParameter("intro");
// calc() 메서드 호출로 결과 받아옴
// result = calc(num1, num2, op);
// CSS 추가: 테이블 스타일 지정
String cssTag = "<style>" + ".info-table { width: 50%; margin-top: 20px; border-collapse: collapse; }"
+ ".info-table th { border: 1px solid #ddd; padding: 8px; text-align: left; background-color: #f2f2f2; color: black;} "
+ ".info-table td { border: 1px solid #ddd; padding: 8px;} " + "</style>";
out.println("<HTML>");
out.println("<HEAD><TITLE>회원가입 정보</TITLE>" + cssTag + "</HEAD>");
out.println("<BODY><center>");
// 이름 크게 출력
out.println("<H2>" + name + "님의 회원가입 정보" + "</H2>");
// 테이블 형식으로 데이터 출력
out.println("<table class='info-table'>" + "<tr><th>ID</th><td>" + id + "</td></tr>" + "<tr><th>PW</th><td>"
+ pw + "</td></tr>" + "<tr><th>Email</th><td>" + email + "</td></tr>" + "<tr><th>이름</th><td>" + name
+ "</td></tr>" + "<tr><th>주소</th><td>" + address1 + " " + address11 + " " + address2 + "</td></tr>"
+ "<tr><th>주민등록번호</th><td>" + RRN + "</td></tr>" + "<tr><th>생일</th><td>" + year + "년" + month + "월"
+ day + "일 " + "</td></tr>" + "<tr><th>자기소개</th><td>" + intro + "</td></tr>");
out.println("<tr><th>관심분야</th><td>");
for (int i = 0; i < interest.length; i++) {
out.print(interest[i]);
if (i < interest.length - 1) {
out.print(", ");
}
}
out.println("</td></tr>");
out.println("</table></center></BODY></HTML>");
}
}
'Studying > JAVA' 카테고리의 다른 글
JSP 지시어, 액션, 객체 개념정리 (0) | 2023.09.21 |
---|---|
서블릿(servlet)과 HTTP 상태코드 (0) | 2023.09.20 |
[JAVA] Day 01 네트워크와 소켓 (1) | 2023.09.01 |
JAVA 문자열타입: 다양한 관리방법 (7) | 2023.07.26 |
JAVA 최댓값 최소값 쉽게 구하기 (7) | 2023.07.17 |
블로그의 정보
감성 개발자 효기
효기’s