JSP

JSP | 회원가입, 로그인 수업(1)

개발 공부 2022. 12. 5. 20:15

include 이용하여 합치기

다이나믹 웹 프로젝트 생성, JAR 파일 lib파일에 옮기기

웹프로젝트 생성, jar파일 옮기기

쌤이 주신 파일 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 &copy; By Park 2018.XX.XX~</p>
                </div>
            </div>
        </div>
    </footer>
	
	
	
</body>
</html>

include

 

 

- 상대경로 : 지금 파일의 위치에서 상대적으로 가르키는 위치.

- 절대경로 : 지금 파일의 위치와는 상관없이, 프로젝트에서 카리키는 위치. (앞에 "/" 를 붙여야 함)

절대경로는, 프로젝트 밑 1단계 폴더를 생략합니다( Webcontent )

 

상대경로를 표현할 때

현재 폴더 : ./ (생략 가능)

하위 폴더 : 하위폴더/

상위 폴더 : ../

기존 member.jsp 파일도 header와 footer를 include 시키기

member.jsp 인클루드 완료!

4번처럼 나와야 하는 페이지가 스타일이 다 깨져서 나옵니다. 

왜 깨져서 나올까요?

이 문제를 해결하기 위해 header.jsp 파일로 이동합니다.

 

 

위 링크는 index.jsp의 맞는 절대경로에 위치하기에 member.jsp파일에는 에러가 납니다.

 

member.jsp파일에 맞게 절대경로로 링크를 걸었더니 정상작동됩니다!

하지만..

이번엔 index.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}

context path를 사용하여 해결!

로그인, 회원가입 만들기

회원가입 폼 만들기

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 메뉴 링크 연결