728x90
top.jsp
<div class="gnb_depth gnb_depth2_2">
<ul class="submenu_list">
<li><a href="/board/list">공지사항</a></li>
<li><a href="javascript:;">문의하기</a></li>
</ul>
</div>
</li>
<li><a href="javascript:;" class="openAll3">상품투어</a>
<div class="gnb_depth gnb_depth2_3">
<ul class="submenu_list">
<li><a href="/program/list">프로그램 소개</a></li>
<li><a href="javascript:;">여행자료</a></li>
BoardController.java
package com.itwillbs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/board/*")
public class BoardController {
///board/list
@GetMapping("/list")
public String list() {
System.out.println("BoardController list()");
return "notice/notice";
}
}
notice/notice
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<title> 공지사항 | 고객센터 | 투어리스트인투어 </title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/resources/css/common.css">
<script src="/resources/js/jquery-1.11.3.min.js"></script>
<script src="/resources/js/common.js"></script>
<script src="/resources/js/jquery.smooth-scroll.min.js"></script>
<!--[if lte IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/placeholders.min.js"></script>
<![endif]-->
</head>
<body>
<ul class="skipnavi">
<li><a href="#container">본문내용</a></li>
</ul>
<!-- wrap -->
<div id="wrap">
<jsp:include page="../inc/top.jsp" />
<div id="container">
<!-- location_area -->
<div class="location_area customer">
<div class="box_inner">
<h2 class="tit_page">TOURIST <span class="in">in</span> TOUR</h2>
<p class="location">고객센터 <span class="path">/</span> 공지사항</p>
<ul class="page_menu clear">
<li><a href="#" class="on">공지사항</a></li>
<li><a href="#">문의하기</a></li>
</ul>
</div>
</div>
<!-- //location_area -->
<!-- bodytext_area -->
<div class="bodytext_area box_inner">
<form action="#" class="minisrch_form">
<fieldset>
<legend>검색</legend>
<input type="text" class="tbox" title="검색어를 입력해주세요" placeholder="검색어를 입력해주세요">
<a href="javascript:;" class="btn_srch">검색</a>
</fieldset>
</form>
<table class="bbsListTbl" summary="번호,제목,조회수,작성일 등을 제공하는 표">
<caption class="hdd">공지사항 목록</caption>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">제목</th>
<th scope="col">조회수</th>
<th scope="col">작성일</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td class="tit_notice"><a href="javascript:;">이번 여름 휴가 제주 갈까? 미션 투어 (여행경비 50만원 지원)</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>2</td>
<td class="tit_notice"><a href="javascript:;">박물관 미션 투어 응모 당첨자 발표</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>3</td>
<td class="tit_notice"><a href="javascript:;">추석 연휴 티켓/투어 배송 및 직접 수령 안내</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>4</td>
<td class="tit_notice"><a href="javascript:;">하롱베이 서비스 OPEN! (여행정보, 가이드북, 가이드맵)</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>5</td>
<td class="tit_notice"><a href="javascript:;">투어리스트인투어 서비스 점검 안내 - 투어리스트인투어에서 매월 실시하는 정기점검 안내</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>6</td>
<td class="tit_notice"><a href="javascript:;">이번 여름 휴가 제주 갈까? 미션 투어 (여행경비 50만원 지원)</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>7</td>
<td class="tit_notice"><a href="javascript:;">박물관 미션 투어 응모 당첨자 발표</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>8</td>
<td class="tit_notice"><a href="javascript:;">추석 연휴 티켓/투어 배송 및 직접 수령 안내</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>9</td>
<td class="tit_notice"><a href="javascript:;">하롱베이 서비스 OPEN! (여행정보, 가이드북, 가이드맵)</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
<tr>
<td>10</td>
<td class="tit_notice"><a href="javascript:;">투어리스트인투어 서비스 점검 안내</a> </td>
<td>123</td>
<td>2018-08-01</td>
</tr>
</tbody>
</table>
<!-- pagination -->
<div class="pagination">
<a href="javascript:;" class="firstpage pbtn"><img src="/resources/img/btn_firstpage.png" alt="첫 페이지로 이동"></a>
<a href="javascript:;" class="prevpage pbtn"><img src="/resources/img/btn_prevpage.png" alt="이전 페이지로 이동"></a>
<a href="javascript:;"><span class="pagenum currentpage">1</span></a>
<a href="javascript:;"><span class="pagenum">2</span></a>
<a href="javascript:;"><span class="pagenum">3</span></a>
<a href="javascript:;"><span class="pagenum">4</span></a>
<a href="javascript:;"><span class="pagenum">5</span></a>
<a href="javascript:;" class="nextpage pbtn"><img src="/resources/img/btn_nextpage.png" alt="다음 페이지로 이동"></a>
<a href="javascript:;" class="lastpage pbtn"><img src="/resources/img/btn_lastpage.png" alt="마지막 페이지로 이동"></a>
</div>
<!-- //pagination -->
</div>
<!-- //bodytext_area -->
</div>
<!-- //container -->
<jsp:include page="../inc/bottom.jsp" />
</div>
<!-- //wrap -->
<h2 class="hdd">빠른 링크 : 전화 문의,카카오톡,오시는 길,꼭대기로</h2>
<div class="quick_area">
<ul class="quick_list">
<li><a href="tel:010-7184-4403"><h3>전화 문의</h3><p>010-1234-5678</p></a></li>
<li><a href="javascript:;"><h3>카카오톡 <em>상담</em></h3><p>1:1상담</p></a></li>
<li><a href="javascript:;"><h3 class="to_contact">오시는 길</h3></a></li>
</ul>
<p class="to_top"><a href="#layout0" class="s_point">TOP</a></p>
</div>
</body>
</html>
ProgramController.java
package com.itwillbs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/program/*")
public class ProgramController {
@GetMapping("/list")
public String list() {
System.out.println("ProgramController list()");
return "program/program";
}
}
program/program
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<title> 프로그램 소개 | 상품투어 | 투어리스트인투어 </title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/resources/css/common.css">
<script src="/resources/js/jquery-1.11.3.min.js"></script>
<script src="/resources/js/common.js"></script>
<script src="/resources/js/jquery.smooth-scroll.min.js"></script>
<!--[if lte IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/placeholders.min.js"></script>
<![endif]-->
</head>
<body>
<ul class="skipnavi">
<li><a href="#container">본문내용</a></li>
</ul>
<!-- wrap -->
<div id="wrap">
<jsp:include page="../inc/top.jsp" />
<div id="container">
<!-- location_area -->
<div class="location_area package">
<div class="box_inner">
<h2 class="tit_page">TOURIST <span class="in">in</span> TOUR</h2>
<p class="location">상품투어 <span class="path">/</span> 프로그램 소개</p>
<ul class="page_menu clear">
<li><a href="javascript:;" class="on">프로그램 소개</a></li>
<li><a href="javascript:;">여행 자료</a></li>
</ul>
</div>
</div>
<!-- //location_area -->
<!-- bodytext_area -->
<div class="bodytext_area place_area box_inner">
<ul class="program_list clear">
<li>
<img class="img_place" src="/resources/img/img_place_01.jpg" alt="이응노 미술관" />
<h3>이응노 미술관</h3>
<p class="subttl">2019.01 ~ 2019.03</p>
<div class="program_content">
<p>고암 이응노 화백의 예술세계와 작품들을 감상할 수 있다. <span class="subtxt">대전에 위치한 이응노 미술관에서는 대전과 파리, 한국과 프랑스, 아시아와 유럽의 커뮤니케이션이 일어난다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_02.jpg" alt="김유정문학촌" />
<h3>김유정문학촌</h3>
<p class="subttl">2019.01 ~ 2019.03</p>
<div class="program_content">
<p>강원도 춘천시에서는 김유정이 우리나라 제일의 소설가인 것처럼 정성을 다해 김유정 문학촌을 꾸몄다. <span class="subtxt">기념관은 물론이고 소설의 마지막 장면을 실제크기 동상으로 재연하기도 했다. 우리를 감동시킨 많은 다른 문학가, 예술인들도 해당 지자체에서 성의를 다해 기렸으면 하는 바램이다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_03.jpg" alt="책과 인쇄 박물관" />
<h3>책과 인쇄 박물관</h3>
<p class="subttl">2019.01 ~ 2019.03</p>
<div class="program_content">
<p>생각보다 작은 공간이지만 활자가 문명에 끼친 어마어마한 영향력이 초판본들에서 느껴진다. <span class="subtxt">박물만 볼 수 있는 것이 아니라 아직까지도 그 시절에 인쇄 과정을 손수 체험 할 수 있는 시간을 제공하고 있다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_04.jpg" alt="백사실 현통사" />
<h3>백사실 현통사</h3>
<p class="subttl">2018.11 ~ 2018.12</p>
<div class="program_content">
<p>서울 종로구 부암동에서는 주택가에서 길 하나만 건너 들어가면 깨끗하고 맑은 계곡을 걸을 수 있다. <span class="subtxt">백사실 가는 길에 사찰도 있어주지만 더 들어가면 조선후기 별서 백석동천을 만날 수 있다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_05.jpg" alt="통영국제음악당" />
<h3>통영국제음악당</h3>
<p class="subttl">2019.01 ~ 2019.03</p>
<div class="program_content">
<p>작곡가 윤이상을 기리는 음악당으로 소리와 함께 수려한 경치도 즐길 수 있다. <span class="subtxt">봄과 가을에 통영국제음악제가 열리며 가을에는 윤이상국제음악콩쿠르가 열린다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_06.jpg" alt="아침고요수목원" />
<h3>아침고요수목원</h3>
<p class="subttl">2019.01 ~ 2019.02</p>
<div class="program_content">
<p>경기도 가평군 축령산에는 조용한 아침의 나라의 아기자기한 정원이 있다. <span class="subtxt">너무 거대하지 않으면서도 수려한 산림욕장을 원한다면 아침고요수목원을 산책하라.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_07.jpg" alt="제천 리솜포레스트" />
<h3>제천 리솜포레스트</h3>
<p class="subttl">2019.02 ~ 2019.03</p>
<div class="program_content">
<p>제천에는 촬영지 이상의 자연 친화 팬션이 있다. <span class="subtxt">리솜 포레스트는 아름드리 피톤치드 정글속에 모던한 빌라 하나씩을 꽂아 놓은 듯한 구조를 하고 있다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
<li>
<img class="img_place" src="/resources/img/img_place_08.jpg" alt="정동진" />
<h3>정동진</h3>
<p class="subttl">2019.04 ~ 2019.05</p>
<div class="program_content">
<p>동해 바다를 가장 가까운 코스로 가고 싶다면 역시 정동진. <span class="subtxt">정동진역은 세계에서 가장 바닷가에 가까운 기차역으로 기네스북에 등재되어 있다고 한다.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_09.jpg" alt="센트럴파크" />
<h3>센트럴파크</h3>
<p class="subttl">2019.04 ~ 2019.04</p>
<div class="program_content">
<p>센트럴파크는 뉴욕을 방문할 때 빼놓을 수 없는 코스이다. <span class="subtxt">여름이면 여름, 겨울이면 겨울 어느 때라도 실망시키지 않는 영화와 현실의 명소이다.</span> </p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_10.jpg" alt="석파정" />
<h3>석파정</h3>
<p class="subttl">2019.06 ~ 2019.06</p>
<div class="program_content">
<p>흥선대원군 별서에 딸린 정자로서 서울미술관 내에 있다. <span class="subtxt">자연과 역사, 현대미술을 동시에 원한다면 석파정으로 오라.</span></p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_11.jpg" alt="뉴욕공립도서관" />
<h3>뉴욕공립도서관</h3>
<p class="subttl">2019.07 ~ 2019.07</p>
<div class="program_content">
<p>뉴욕에는 미술관이나 박물관처럼 보이는 도서관이 있다. <span class="subtxt">외관 뿐 아니라 내부도 성이나 성당 못지 않은 중후한 멋을 뽐내는 이 곳은 주만들이 무료로 이용할 수 있는 도서관이다. </span> </p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
<li>
<img class="img_place" src="/resources/img/img_place_12.jpg" alt="강천산 계곡" />
<h3>강천산 계곡</h3>
<p class="subttl">2019.07 ~ 2019.08</p>
<div class="program_content">
<p>보성 녹차밭 근처에는 최초의 군립공원이 있다.<span class="subtxt">산으로 올라가는 길에는 맨발로 걸을 수 있는 황톳길이 있고 꼭대기에는 다리가 떨리는 구름다리가 있다.</span> </p>
</div>
<p class="btn_more"><a href="javascript:;">더보기</a></p>
</li>
</ul>
</div>
<!-- //bodytext_area -->
</div>
<!-- //container -->
<jsp:include page="../inc/bottom.jsp" />
</div>
<!-- //wrap -->
<h2 class="hdd">빠른 링크 : 전화 문의,카카오톡,오시는 길,꼭대기로</h2>
<div class="quick_area">
<ul class="quick_list">
<li><a href="tel:010-7184-4403"><h3>전화 문의</h3><p>010-1234-5678</p></a></li>
<li><a href="javascript:;"><h3>카카오톡 <em>상담</em></h3><p>1:1상담</p></a></li>
<li><a href="javascript:;"><h3 class="to_contact">오시는 길</h3></a></li>
</ul>
<p class="to_top"><a href="#layout0" class="s_point">TOP</a></p>
</div>
</body>
</html>
tbl_member, tbl_member_auth를 사용
join.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<title> 회원가입 | 투어리스트인투어 </title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/resources/css/common.css">
<script src="/resources/js/jquery-1.11.3.min.js"></script>
<script src="/resources/js/common.js"></script>
<script src="/resources/js/jquery.smooth-scroll.min.js"></script>
<!--[if lte IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/placeholders.min.js"></script>
<![endif]-->
</head>
<body>
<ul class="skipnavi">
<li><a href="#container">본문내용</a></li>
</ul>
<!-- wrap -->
<div id="wrap">
<!-- header -->
<jsp:include page="../inc/top.jsp" />
<div id="container">
<!-- location_area -->
<div class="location_area member">
<div class="box_inner">
<h2 class="tit_page">TOURIST <span class="in">in</span> TOUR</h2>
<p class="location">MEMBER <span class="path">/</span> 회원가입</p>
<ul class="page_menu clear">
<li><a href="javascript:;" class="on">회원가입</a></li>
</ul>
</div>
</div>
<!-- //location_area -->
<!-- bodytext_area -->
<div class="bodytext_area box_inner">
<!-- appForm -->
<form action="/member/insert" method="post" class="appForm">
<fieldset>
<legend>상담문의 입력 양식</legend>
<p class="info_pilsoo pilsoo_item">필수입력</p>
<ul class="app_list">
<li class="clear">
<label for="id_lbl" class="tit_lbl pilsoo_item">아이디</label>
<div class="app_content"><input type="text" name="userid" class="w100p" id="id_lbl" placeholder="아이디 입력해주세요"/></div>
</li>
<li class="clear">
<label for="pwd_lbl" class="tit_lbl pilsoo_item">비밀번호</label>
<div class="app_content"><input type="password" name="userpw" class="w100p" id="pwd_lbl" placeholder="비밀번호를 입력해주세요"/></div>
</li>
<li class="clear">
<label for="pwd2_lbl" class="tit_lbl pilsoo_item">비밀번호 확인</label>
<div class="app_content"><input type="password" name="userpw2" class="w100p" id="pwd2_lbl" placeholder="비밀번호를 다시 한번 입력해주세요"/></div>
</li>
<li class="clear">
<label for="name_lbl" class="tit_lbl pilsoo_item">작성자명</label>
<div class="app_content"><input type="text" name="username" class="w100p" id="name_lbl" placeholder="이름을 입력해주세요"/></div>
</li>
<li class="clear">
<label for="phone_lbl" class="tit_lbl pilsoo_item">연락처</label>
<div class="app_content"><input type="tel" name="phone" class="w100p" id="phone_lbl" placeholder="휴대폰”-”없이 숫자만 입력하세요"/></div>
</li>
<li class="clear">
<label for="email_lbl" class="tit_lbl pilsoo_item">이메일</label>
<div class="app_content email_area">
<input type="text" name="email" class="w160" id="email_lbl" title="이메일 주소" />
<span class="ico_space">@</span>
<input type="text" name="email2" class="w160" title="이메일 제공업체 입력" />
<div class="select_common">
<select title="이메일 제공업체 목록" >
<option value="">직접입력</option>
<option value="">naver.com</option>
<option value="">hanmail.net</option>
</select>
</div>
</div>
</li>
<li class="clear">
<span class="tit_lbl">성별</span>
<div class="app_content radio_area">
<input type="radio" class="css-radio" id="mmm_lbl" name="gender"><label for="mmm_lbl">남</label>
<input type="radio" class="css-radio" id="www_lbl" name="gender"><label for="www_lbl">여</label>
</div>
</li>
<li class="clear">
<span class="tit_lbl">개인정보 활용동의</span>
<div class="app_content checkbox_area">
<input type="checkbox" class="css-checkbox" id="agree_lbl" name="agree"><label for="agree_lbl">동의함</label>
</div>
</li>
<li class="clear">
<label for="content_lbl" class="tit_lbl">문의내용</label>
<div class="app_content"><textarea name="content" id="content_lbl" class="w100p" placeholder="간단한 상담 요청 사항을 남겨주시면 보다 상세한 상담이 가능합니다.
전화 상담 희망시 기재 부탁드립니다."></textarea></div>
</li>
</ul>
<p class="btn_line"><a href="javascript:memberInsert();" class="btn_baseColor">회원가입</a></p>
</fieldset>
</form>
<!-- //appForm -->
</div>
<!-- //bodytext_area -->
</div>
<!-- //container -->
<!-- footer -->
<jsp:include page="../inc/bottom.jsp" />
</div>
<!-- //wrap -->
<h2 class="hdd">빠른 링크 : 전화 문의, 카카오톡, 오시는 길, 꼭대기로</h2>
<div class="quick_area">
<ul class="quick_list">
<li><a href="tel:010-7184-4403"><h3>전화 문의</h3><p>010-1234-5678</p></a></li>
<li><a href="javascript:;"><h3>카카오톡 <em>상담</em></h3><p>1:1상담</p></a></li>
<li><a href="javascript:;"><h3 class="to_contact">오시는 길</h3></a></li>
</ul>
<p class="to_top"><a href="#layout0" class="s_point">TOP</a></p>
</div>
<script type="text/javascript">
//memberInsert()
function memberInsert(){
alert("회원가입 클릭");
}
</script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<title> 회원가입 | 투어리스트인투어 </title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/resources/css/common.css">
<script src="/resources/js/jquery-1.11.3.min.js"></script>
<script src="/resources/js/common.js"></script>
<script src="/resources/js/jquery.smooth-scroll.min.js"></script>
<!--[if lte IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/placeholders.min.js"></script>
<![endif]-->
</head>
<body>
<ul class="skipnavi">
<li><a href="#container">본문내용</a></li>
</ul>
<!-- wrap -->
<div id="wrap">
<!-- header -->
<jsp:include page="../inc/top.jsp" />
<div id="container">
<!-- location_area -->
<div class="location_area member">
<div class="box_inner">
<h2 class="tit_page">TOURIST <span class="in">in</span> TOUR</h2>
<p class="location">MEMBER <span class="path">/</span> 회원가입</p>
<ul class="page_menu clear">
<li><a href="javascript:;" class="on">회원가입</a></li>
</ul>
</div>
</div>
<!-- //location_area -->
<!-- bodytext_area -->
<div class="bodytext_area box_inner">
<!-- appForm -->
<form action="/member/insert" method="post" class="appForm" name="appForm">
<fieldset>
<legend>상담문의 입력 양식</legend>
<p class="info_pilsoo pilsoo_item">필수입력</p>
<ul class="app_list">
<li class="clear">
<label for="id_lbl" class="tit_lbl pilsoo_item">아이디</label>
<div class="app_content"><input type="text" name="userid" class="w100p" id="id_lbl" placeholder="아이디 입력해주세요"/></div>
</li>
<li class="clear">
<label for="pwd_lbl" class="tit_lbl pilsoo_item">비밀번호</label>
<div class="app_content"><input type="password" name="userpw" class="w100p" id="pwd_lbl" placeholder="비밀번호를 입력해주세요"/></div>
</li>
<li class="clear">
<label for="pwd2_lbl" class="tit_lbl pilsoo_item">비밀번호 확인</label>
<div class="app_content"><input type="password" name="userpw2" class="w100p" id="pwd2_lbl" placeholder="비밀번호를 다시 한번 입력해주세요"/></div>
</li>
<li class="clear">
<label for="name_lbl" class="tit_lbl pilsoo_item">작성자명</label>
<div class="app_content"><input type="text" name="username" class="w100p" id="name_lbl" placeholder="이름을 입력해주세요"/></div>
</li>
<li class="clear">
<label for="phone_lbl" class="tit_lbl pilsoo_item">연락처</label>
<div class="app_content"><input type="tel" name="phone" class="w100p" id="phone_lbl" placeholder="휴대폰”-”없이 숫자만 입력하세요"/></div>
</li>
<li class="clear">
<label for="email_lbl" class="tit_lbl pilsoo_item">이메일</label>
<div class="app_content email_area">
<input type="text" name="email" class="w160" id="email_lbl" title="이메일 주소" />
<span class="ico_space">@</span>
<input type="text" name="email2" class="w160" title="이메일 제공업체 입력" />
<div class="select_common">
<select title="이메일 제공업체 목록" >
<option value="">직접입력</option>
<option value="">naver.com</option>
<option value="">hanmail.net</option>
</select>
</div>
</div>
</li>
<li class="clear">
<span class="tit_lbl">성별</span>
<div class="app_content radio_area">
<input type="radio" class="css-radio" id="mmm_lbl" name="gender"><label for="mmm_lbl">남</label>
<input type="radio" class="css-radio" id="www_lbl" name="gender"><label for="www_lbl">여</label>
</div>
</li>
<li class="clear">
<span class="tit_lbl">개인정보 활용동의</span>
<div class="app_content checkbox_area">
<input type="checkbox" class="css-checkbox" id="agree_lbl" name="agree"><label for="agree_lbl">동의함</label>
</div>
</li>
<li class="clear">
<label for="content_lbl" class="tit_lbl">문의내용</label>
<div class="app_content"><textarea name="content" id="content_lbl" class="w100p" placeholder="간단한 상담 요청 사항을 남겨주시면 보다 상세한 상담이 가능합니다.
전화 상담 희망시 기재 부탁드립니다."></textarea></div>
</li>
</ul>
<p class="btn_line"><a href="javascript:memberInsert();" class="btn_baseColor">회원가입</a></p>
</fieldset>
</form>
<!-- //appForm -->
</div>
<!-- //bodytext_area -->
</div>
<!-- //container -->
<!-- footer -->
<jsp:include page="../inc/bottom.jsp" />
</div>
<!-- //wrap -->
<h2 class="hdd">빠른 링크 : 전화 문의, 카카오톡, 오시는 길, 꼭대기로</h2>
<div class="quick_area">
<ul class="quick_list">
<li><a href="tel:010-7184-4403"><h3>전화 문의</h3><p>010-1234-5678</p></a></li>
<li><a href="javascript:;"><h3>카카오톡 <em>상담</em></h3><p>1:1상담</p></a></li>
<li><a href="javascript:;"><h3 class="to_contact">오시는 길</h3></a></li>
</ul>
<p class="to_top"><a href="#layout0" class="s_point">TOP</a></p>
</div>
<script type="text/javascript">
//memberInsert()
function memberInsert(){
// alert("회원가입 클릭");
document.appForm.submit();
} //name="appForm"
</script>
</body>
</html>
MemberController.java
//회원가입버튼을 눌렀을 때
@PostMapping("/insert")
public String insertPro() {
System.out.println("MemberController insertPro()");
//회원가입처리
return "redirect:/member/login";
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itwillbs</groupId>
<artifactId>TourWeb</artifactId>
<name>TourWeb</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>11</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/
spring security 검색
-->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
security-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
<bean id="bcryptPasswordEncoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>
<!-- <bean id="customUserDetailsService" -->
<!-- class="com.itwillbs.security.CustomUserDetailsService"></bean> -->
<security:http>
<security:intercept-url pattern="/member/main" access="permitAll"/>
<security:intercept-url pattern="/member/list" access="hasRole('ROLE_MEMBER')"/>
<!-- <security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/> -->
<!-- <security:form-login/> -->
<security:form-login login-page="/member/login" />
<!-- <security:form-login login-page="/sample/customLogin" -->
<!-- authentication-success-handler-ref="customLoginSuccess"/> -->
<!-- <security:logout logout-url="/sample/customLogout" invalidate-session="true"/> -->
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<!-- <security:authentication-provider -->
<!-- user-service-ref="customUserDetailsService"> -->
<security:jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select userid, userpw, enabled from tbl_member where userid = ? "
authorities-by-username-query="select userid, auth from tbl_member_auth where userid = ? "/>
<security:password-encoder ref="bcryptPasswordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>
</beans>
root-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
</beans>
servlet-context
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.itwillbs.TourWeb" />
<context:component-scan base-package="com.itwillbs.controller" />
<context:component-scan base-package="com.itwillbs.dao" />
<context:component-scan base-package="com.itwillbs.service" />
<context:component-scan base-package="com.itwillbs.domain" />
</beans:beans>
MemberService
package com.itwillbs.service;
import org.springframework.stereotype.Service;
@Service
public class MemberService {
}
MemberDAO
package com.itwillbs.dao;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDAO {
}
MemberController
@Inject
private MemberService memberService;
MemberDTO
package com.itwillbs.domain;
import java.sql.Timestamp;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
public class MemberDTO {
private String userid;
private String userpw;
private String username;
private Timestamp regdate;
private Timestamp updatedate;
private String enabled;
private List<AuthDTO> authList;
}
728x90
'KDT > WEB' 카테고리의 다른 글
240405 WEB - TourWeb 1 (0) | 2024.04.05 |
---|---|
WEB - 롬복2 (0) | 2024.04.04 |
WEB - 테스트 1, 롬복 1 (0) | 2024.04.03 |
240328 Web - 보안 6 (0) | 2024.03.28 |
240326 WEB - 보안 5 (0) | 2024.03.26 |