JSP
JSP | 회원가입, 로그인 수업(1)
개발 공부
2022. 12. 5. 20:15
include 이용하여 합치기
다이나믹 웹 프로젝트 생성, JAR 파일 lib파일에 옮기기


쌤이 주신 파일 webapp파일에 복붙!
01MVC2디자인(수업).zip
1.48MB
include 파일 생성 > header.jsp 와 footer.jsp 파일 생성


기존 index.jsp 파일을 header와 footer로 나누고 include 시키기

더보기

header
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-idth, initial-scale=1">
<title>Welcome to MyWorld</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/business-casual.css" rel="stylesheet">
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
<script>
$('.carousel').carousel({
interval: 2000 //changes the speed
})
</script>
<style>
.abc {
position: sticky;
top: 0px;
width: 100%;
z-index: 10;
}
</style>
</head>
<body>
<!-- header -->
<div class="brand">My Web</div>
<div class="address-bar">Welcome to MyWorld</div>
<nav class="navbar navbar-default abc" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/hong">My First Web</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li>
<a href="">HOME</a>
</li>
<li>
<a href="">Member</a>
</li>
<li>
<a href="">BOARD</a>
</li>
<li>
<a href="">LOGIN</a>
</li>
<li>
<a href="" style="color:red">JOIN</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- end header -->
footer
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<p>Copyright © By Park 2018.XX.XX~</p>
</div>
</div>
</div>
</footer>
</body>
</html>
include

- 상대경로 : 지금 파일의 위치에서 상대적으로 가르키는 위치.
- 절대경로 : 지금 파일의 위치와는 상관없이, 프로젝트에서 카리키는 위치. (앞에 "/" 를 붙여야 함)
절대경로는, 프로젝트 밑 1단계 폴더를 생략합니다( Webcontent )
상대경로를 표현할 때
현재 폴더 : ./ (생략 가능)
하위 폴더 : 하위폴더/
상위 폴더 : ../
기존 member.jsp 파일도 header와 footer를 include 시키기


4번처럼 나와야 하는 페이지가 스타일이 다 깨져서 나옵니다.
왜 깨져서 나올까요?
이 문제를 해결하기 위해 header.jsp 파일로 이동합니다.


하지만..

context path사용하기
더보기
절대 경로 컨텍스트 패스(Context Path)란?
웹 어플리케이션 서버(Web Application Server) = Tomcat에서 웹상의 어플리케이션들을 구분하기 위한 Path입니다.
출처 : https://jyh1861.tistory.com/10
웹 페이지 경로에 따른 리소스 참조 문제
-파일에 대한 참조를 절대경로로 처리하는 경우
리소스에 대한 참조가 컨트롤러의 위치에 상관 없이 일정하게 유지된다.
출처 : https://sooblair84.tistory.com/18
ㆍ서블릿이나 JSP의 JAVA소스코드에서의 처리
request.getContextPath()
ㆍJSTL에서의 처리
${pageContext.request.contextPath}

로그인, 회원가입 만들기
회원가입 폼 만들기
user 폴더 생성 > user_join.jsp 파일 생성

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="../include/header.jsp"%>
<section>
<div align = "center">
<h3>회원가입 연습</h3>
<form action="">
<table>
<tr>
<td>아이디</td>
<td><input type="text" name = "id" placeholder= "4~8영문자숫자" pattern="\w{4,8}" required="required"></td>
</tr>
<tr>
<td>비번</td>
<td><input type="password" name = "pw" placeholder= "4~8영문자숫자" pattern="\w{4,8}" required="required"></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="email" name = "email"></td>
</tr>
<tr>
<td>성별</td>
<td><input type="radio" name = "gender" value="w" checked="checked">여자
<input type="radio" name = "gender" value="m">남자</td>
</tr>
</table>
<input type="submit" value = "가입">
<input type="button" value = "로그인하기">
</form>
</div>
</section>
<%@ include file="../include/footer.jsp"%>
<input type="text" name = "id" placeholder= "4~8영문자숫자" pattern="\w{4,8}" required="required">
태그에서 제공하는 인풋유효성 검사
- pattern = "\w{4,8}" : JS 정규표현식 - 영문(대소문자)과 숫자만 4자리~8자리이하
- required="required" : 공백 허용 X
- 라디오 or 체크박스 미리선택
checked ="checked" - 셀렉트박스 미리선택
selected = "selected" - 인풋태그의 수정불가(읽기전용)
불가하지만 넘어감
readonly = "readonly" - 인풋태그 사용안하기
값이 넘어가지도 않음
disabled = "disabled"
로그인 폼 만들기
header 메뉴 링크 연결