728x90

 

 

div 자체를 불러오고 있어서 아래 찍히는게 엘레멘트 요소랑

div태그 전체가 브라우저 콘솔에 찍힘

밸류값인 텍스트를 받아오려면 어떻게 해야할까?

    <h3>class로 접근하기</h3>
    <p> getElementsByClassName() : 반환타입 [] HTMLCollection<br>
        해당 클래스에 속한 요소를 모두 선택함.
    </p>
    <div id="testClass1" class="area">getElementsByClassName()</div>
    <button onclick="testByClass();">html태그 접근 - class 접근 - getElementsByClassName()</button>
    <script>
        function testByClass(){
            var test = document.getElementsByClassName("area");
            console.log(test);
            console.log(typeof test);

            for(var i=0; i< test.length;i++){
                test[i].style.borderStyle = 'dashed';
            }
        }
    </script>

 

userName에 .value를 추가해서 밸류값만 가져오게 해야

전체 객체를 안가져오고 텍스트인 밸류값만 divEx1 변수에 넣어주게 되서 텍스트가 출력된다!

if(userName != null){
     divEx1.innerHTML = userName.value;
     console.log(divEx1);
}else{

 

 

 

 

728x90
반응형
728x90

 

 

코딩 자체가 별다른 에너지가 들지 않게 계속 써서 익숙해지기

전체 구조파악하고 세부적인 코드 써보기 & 반복

머리 아프거나 하기 싫을 때 이렇게만 해도 집중이 되고,

코딩을 손에 놓지 않고 계속 실력 향상을 할 수 있다!

짜투리 시간에 하기도 좋음. 3-40분정도 걸린 듯

 

<%@ 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>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script
  src="https://code.jquery.com/jquery-3.6.0.min.js"
  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
  crossorigin="anonymous"></script>
  

<style>
	.nav{margin-left:auto; margin-right:auto; text-align:center;}
	.menu{
		disply:inline-block; background:$e4fc41; text-align:center;
		line-height:50px; width:150px; height:50px; border-radius:20px;
		margin-left:5%; margin-right:5%;
	}
	.menu:hover{background:#b0c903; font-weight:bolder; cursor:pointer;}
	a:link{color:black; text-decoration:none;}
	a:visited{color:black; text-decoration:none;}
	
</style>

</head>
<body>

	<!-- 메뉴바는 어느 페이지든 포함하고 있을 테니 여기서 contextPath 변수 값 만들기 -->
	<c:set var="contextPath" value="${pageContext.servletContext.contextPath }" scope="application"/>
	
	<h1 align="center">Let's do it!!</h1>
	<br>
	
	<div class="loginArea" align="right">
		<c:if test="${ empty sessionScope.loginUser }"> <!-- user가 로그인 안했으면 로그인하게 id,pw 보여주는 창 보여줌-->
			<form action="login.me" method="post">
				<table id="loginTable" style="text-align:center;">
					<tr>
						<td>아이디</td>
						<td><input type="text" name="id"></td>
						<td rowspan="2">
							<button id="loginBtn">로그인</button>
						</td>
					</tr>
					<tr>
						<td>비밀번호</td>
						<td><input type="password" name="pwd"></td>
					</tr>
					<tr>
						<td colspan="3">
							<button type="button" onclick="location.href='enrollView.me'">회원가입</button>
							<button type="button">아이디/비밀번호 찾기</button>
						</td>
					</tr>
				</table>
			</form>
		</c:if>
		
		<c:if test="${ !empty sessionScope.loginUser }"> <!-- user가 로그인했으면 정보 변경, 로그아웃 등 보여줌 -->
			<h3 align="right"> <!-- h3태그 안에 c core와 button태그를 넣은게 신기 -->
				<c:out value="${loginUser.name }님 환영합니다."/>
				<c:url var="myinfo" value="myinfo.me"/>
				<c:url var="logout" value="logout.me"/>
				<button onclick="location.href='${myinfo}'">정보보기</button> 
				<button onclick="location.href='${logout}'">로그아웃</button>	
								<!-- c:url에서 var변수로 지정한 것을 버튼클릭하면 이동하게만듬 -->		
			</h3>
		</c:if>
		
		<!-- 위처럼 c:url을 통해서 지정할 수도 있지만 지금까지 해왔던 것처럼 바로 href에 url을 넣어도 상관없음 -->
		<div class="menubar">
			<div class="nav">
				<div class="menu"><a href="home.do">Home</a></div>
				<div class="menu"><a href="blist.bo">게시판</a></div>
			</div>
		</div>
	</div>


</body>
</html>
728x90
반응형
728x90

 

상황

VS CODE에서 Live Server를 쓰면 바로바로 적용되서 보이는데

이클립스나 STS에서 톰캣이랑 같이 서버를 돌리면서 내부에서 css를 수정하면 반영이 안되는데

컴퓨터를 재부팅하거나 브라우저를 껐다 다시 켜봐도 안되고 그러다가 또 어느새인가 적용되어있는데

기준도 모르겠고 난감한 적이 있었다

 

해결

1.html에서 경로 지정 코드 확인

<link>태그에 잘못된 부분이 없는지 href속성에서 경로부분에 잘못된 곳이 없는지 확인

2.브라우저 캐시 삭제

브라우저에서 전에 사용하던 css 정보를 계속 가져다 쓰기 때문에 정보가 변경된 최신 내용이 반영이 안되고 있는 것

 

1)익스플로러 엣지

설정 - 검색에서 쿠키 검색 - 지울 항목 선택 - 삭제

 

2) 크롬

설정 - 개인정보 및 보안 - 쿠기 및 기타 사이트 데이터 - 모든 쿠기 및 사이트 데이터 보기 - 모두 삭제

 

3.html파일에서 css를 연결하는 link태그의 href속성에 css파일명 마지막에 ?after 붙이기

2번 방법은 임시방편적인거고 3번이 근본 원인해결에 가깝다. ?를 css파일명 뒤에 붙이므로써 브라우저에서 다른 css파일을 인식하게 하는 개념. ?after를 많이 쓰는데 다른 문자를 써도 상관없긴 하다

CSS 파일을 링크하는 HTML 파일(PHP, JSP)을 열어 기존 CSS 파일의 URL 뒤에 ?after를 붙이면 됩니다. 요지는 브라우저에서 다른 CSS 파일을 인식하게 하는 것이므로 물음표 뒤에 어떤 문자열을 붙여도 상관없습니다. 저는 예시로 after라는 문자열을 추가했습니다. CSS 파일을 변경한 뒤 ?문자열을 추가하면 바로 변경사항이 적용되는 모습을 확인할 수 있습니다.

 

728x90
반응형
728x90

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> EVERYDAY</title>

<link rel="stylesheet" type="text/css" href="notice1.css?after">


</head>
<body>


    <form action="notice.bo" method="post">
        <fieldset>
            <table border="">
                <th>공지사항</th>
                <tr>
                    <td>번호</td>
                    <td>제목</td>
                    <td>작성자</td>
                    <td>작성일</td>
                    <td>조회</td>
                </tr>    
                <tr>
                    <td>1</td>
                    <td>마켓컬리 배송 안내</td>
                    <td>마켓컬리</td>
                    <td>22.07.13</td>
                    <td>50</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>마켓컬리 배송 안내</td>
                    <td>마켓컬리</td>
                    <td>22.07.13</td>
                    <td>55</td>
                </tr>
            </table>
        </fieldset>
    </form>


</body>
</html>
728x90
반응형
728x90

 

<목표>

따라치되 최대한 안보고 코딩하기

코딩 익숙해지기

구조 분석

세부코드 안보고 쓸 수 있게 되기

 

반복이 살 길이다!!!!!!!

 

<%@ 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>
<head>
<meta charset="UTF-8">

<script src="${ contextPath }/resources/js/jquery-3.6.0.min.js"></script> 

<style>
	.nav{margin-left:auto; margin-right:auto; text-align:center;}
	.menu{
		display:inline-block; background:#e4fc41; text-align:center;
		line-height:50px; width:150px; height:50px; border-radius:20px;
		margin-left:5%; margin-right:5%;
	}
	.menu:hover{background:#b0c903; font-weight:bolder; cursor:pointer;}
	a:link{color:black; text-decoration:none;}
	a:visited{color:black; text-decoration:none;}
</style>

</head>
<body>

	<c:set var="contextPath" value="${ pageContext.servletContext.contextPath }" scope="application"/>
	
	<h1 align="center">first page & Spring</h1>
	<br>
	
	
	<div class="loginArea" align="right">
		<c:if test="${ empty sessionScope.loginUser }">	<!-- user가 로그인 안했으면 로그인하게 id,pw 보여주는 창 보여줌-->
			<form action="login.me" method="post">
				<table id="loginTable" style="text-align:center;">
					<tr>
						<td>아이디</td>
						<td><input type="text" name="id"></td>
						<td rowspan="2">
							<button id="loginBtn">로그인</button>
						</td>
					</tr>
					<tr>
						<td>비밀번호</td>
						<td><input type="password" name="pwd"></td>
					</tr>
					<tr>
						<td colspan="3">
							<button type="button" onclick="location.href='enrollView.me'">회원가입</button>
							<button type="button">아이디/비밀번호 찾기</button>"
						</td>					
					</tr>
				</table>
			</form>
		</c:if>
	
		<c:if test="${ empty sessionScope.loginUser }"> <!-- user가 로그인했으면 정보 변경, 로그아웃 등 보여줌 -->
			<h3 align="right"> <!-- h3태그 안에 c core와 button태그를 넣은게 신기 -->
				<c:out value="${ loginUser.name }님 환영합니다."/>
				<br>
				<c:url var="myinfo" value="myinfo.me"/>
				<c:url var="logout" value="logout.me"/>
				<button onclick="location.href='${myinfo}'">정보보기</button>
				<button onclick="location.href='${logout}'"	>로그아웃</button>
							<!-- c:url에서 var변수로 지정한 것을 버튼클릭하면 이동하게만듬 -->
			</h3>		
		</c:if>
	</div>
	

<!-- 위처럼 c:url을 통해서 지정할 수도 있지만 지금까지 해왔던 것처럼 바로 href에 url을 넣어도 상관없음 -->
	<div class="menubar">
		<div class="nav">
			<div class="menu"><a href="home.do">Home</a></div>
			<div class="menu"><a href="blist.bo">게시판</a></div>		
		</div>
	</div>


</body>
</html>

 

 

728x90
반응형
728x90

 

관리자 페이지에서 공지사항 작성할 수 있게 쓰기 페이지 제작

인풋태그로 짧은 글 받고

텍스트 애어리어로 내용 부분 받아서 컨트롤러로 전달

쓰기 폼하나 새로 만들고 이를 작성완료하면 db쪽과 왔다갔다 하도록 구성

 

HTML

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>


<link rel="stylesheet" type="text/css" href="${ pageContext.servletContext.contextPath }/resources/css/admin/adminNoticeWriteView.css">



</head>
<body>

	<c:import url="adminMenubar.jsp" />



    <div class="title">
        <h2>공지사항</h2>   
    </div>    
    
	<form id="form" name="form" method="post">
	    <table class="tableWhole">
	            <thead>
	                <tr>
	                    <th>제목</th>
	                        <td style="width: 1050px;">
	                        	<input type="text" placeholder="제목을 입력하세요">
	                        </td>
	                </tr>
	                <tr>
	                    <th>작성자</th>
	                    <td>${board.adminId}</td>
	                </tr>
	                <tr>
	                    <th>작성일</th>
	                    <td>${board.boardCreateDate}</td>
	                    <th>조회수</th>
	                    <td style="width:100px" align="center">
	                    	${board.boardCount}
	                    </td>
	                </tr>
	            </thead>
	    </table>
    

	    <div class="content">
	        <textarea class="textarea_field" placeholder="   내용을 입력해주세요."></textarea>
	    </div>
			<input type="hidden" id="boardId" name="boardId" value="${board.boardId }" > <!-- qnaNo를 컨트롤러로 보내서 어느 게시물이 수정되는지 알려 줘야함  -->
	    <div class="listButton">
	    	<c:url var="blist" value="adminNoticeList.ad">
				<c:param name="page" value="${ page }"/>
			</c:url>
	        <button type="submit" onclick="javascript:form.action='adminNoticeWriteForm.ad'">작성 완료</button> 
	        <button type="submit" onclick="javascript:form.action='adminNoticeList.ad'">목 록</button> 
	    </div>
	 </form> 
    




<!-- ############ PAGE END 끝~ -->

<!-- / -->

<!-- theme switcher -->

<!-- ############ LAYOUT END-->

<!-- build:js scripts/app.html.js -->
<!-- jQuery -->
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/jquery/dist/jquery.js"></script>
<!-- Bootstrap -->
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/tether/dist/js/tether.min.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/bootstrap/dist/js/bootstrap.js"></script>
<!-- core -->
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/underscore/underscore-min.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/jQuery-Storage-API/jquery.storageapi.min.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/PACE/pace.min.js"></script>

<script src="${ pageContext.servletContext.contextPath }/resources/scripts/config.lazyload.js"></script>

<script src="${ pageContext.servletContext.contextPath }/resources/scripts/palette.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-load.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-jp.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-include.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-device.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-form.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-nav.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-screenfull.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-scroll-to.js"></script>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ui-toggle-class.js"></script>

<script src="${ pageContext.servletContext.contextPath }/resources/scripts/app.js"></script>

<!-- ajax -->
<%-- 	<script src="${ pageContext.servletContext.contextPath }/resources/libs/jquery/jquery-pjax/jquery.pjax.js"></script> --%>
<script src="${ pageContext.servletContext.contextPath }/resources/scripts/ajax.js"></script>
<!-- endbuild -->
    


</body>
</html>

 

CSS




th{
    width: 130px;
    background-color: #f7f5f8;
    font-weight: 600;
    line-height: 200%;
}

input{
	border:none;
}

.title{
    width: 890px;
    text-align: center;
    margin: 0 auto;
}
.title > p{
    color:rgb(149, 146, 146);
    margin-bottom: 3%;
}
thead{
    border-bottom: rgb(149, 146, 146);
}

.tableWhole{
    width:100%;
    max-width: 890px;
    border-top : 2px solid black;  
    border-bottom: 1px solid lightgray;
    line-height: 180%;
    margin: 0 auto;
}
.tableWhole > thead > tr > td{
	padding-left:10px;	
	padding-top:5px;
	padding-bottom:5px;
	
}
thead > tr{
    border-bottom : 1px solid rgb(149, 146, 146);  
}
.tableTop td{
    width:450px;
}

    
.content{
    width:890px;
    margin: 0 auto;
    word-break: break-all;
}
.content > p{
    padding: 2%;
    padding-bottom: 5%;
    border-bottom: 1px solid  lightgray;
}

.listButton{
    width:890px;
    text-align: right;
    margin:2% auto;
    padding-right: 3%;
    
}
.listButton > button:hover{
    background-color:#f7b7b5;
    color:#fff;
    border:1px solid #FE8F8F;
    
}
.listButton > button{
    width:100px;
    height:35px;
    background-color: #FE8F8F;
    border: 1px solid #FF5C58;
    color:#fff;
}

/**************************/

.content{
    text-align: center;
}
.content textarea{
    width:890px;
    min-height: 150px;
    padding:1% 0;
    margin: 0 auto;
    resize: none;
    border:none;
    border-bottom: 1px solid lightgray;
}

 

 

728x90
반응형
728x90

 

 

 

form태그 안에 여러개의 버튼과 submit이 필요한데

삭제할 때는 정말 지울껀지 확인 메세지까지 던져줘야해서

어떻게 할지 막혀있던 상태

 

삭제 버튼만 type="button"으로 바꿔주고 삭제 메세지가 뜰 수 있게 js함수로 만들어서

밖으로 빼두었다

 

<form id="form" name="form" method="post">
	<div class="listButton">
    	<c:url var="blist" value="adminNoticeList.ad">
			<c:param name="page" value="${ page }"/>
		</c:url>
        <button type="submit" onclick="javascript:form.action='adminNoticeUpdateForm.ad'">수정</button> 
        <button type="button" onclick="ConfirmDelete()">삭제</button> 
        <button type="submit" onclick="javascript:form.action='adminNoticeList.ad'">목록</button> 
 
    </div>
 </form>

 

정말 지울껀지 confirm()을 이용해서 확인절차 거치고

어느 게시판을 삭제할지 해당 게시판 번호를 알아야해서 boardId를 컨트롤러로 보내주고

form태그에 id속성을 줘서 밖에서도 form를 쓸 수 있게 getElementById를 사용해서 submit 시키고

location.href로 url과 동시에 boardId도 같이 보내준다

 (참고로 location.href는 get방식)

<script>
	function ConfirmDelete(){
		var ask = confirm("정말로 삭제하시겠습니까?");
		if(ask){
			var boardId = $('#boardId').val();
			document.getElementById('form').submit();
			location.href='adminNoticeDelete.ad?boardId='+boardId;
		}
	};
</script>
728x90
반응형
728x90

 

분명 수정 후 게시판 전체조회로 가게끔 url 설정을 해두었는데

수정하고 나서 print찍히는거보면 상세보기로 가게 되어있는 것이다.

url 지정도 제대로 했는데 왜 뜬금없이 상세보기의 print가 찍혔나 봤더니

 

form태그 하나 안에 버튼이 여러개인데 이것들이 충돌되고 이중에서 상세보기 url이 

남아있는 구조가 되어버려서 뜬금없이 일로 튀는 것처럼 보이게된 것

 

<form id="form" name="form" method="post">
    <button type="submit" onclick="javascript:form.action='adminNoticeUpdateForm.ad'">수정</button> 
    <button type="button" onclick="ConfirmDelete()">삭제</button> 
    <button type="submit" onclick="javascript:form.action='adminNoticeList.ad'">목록</button>
 </form>

위에 처럼 버튼에 각각 타입 지정해주고 온클릭에 자바스크립트 코드를 넣어서 해결함

이렇게 하면 하나의 폼태그에 버튼 태그 각각에 액션 속성을 주어 따로따로 url 갈 수 있게 된다

728x90
반응형
728x90

 

<textarea> 크기 고정하기

html css

아래 표시처럼 textarea는 유저가 크기를 조정할 수 있다.

이를 불가능하게 크기를 고정하게 하는 옵션이 style="resize: none;”

 

 

<textarea rows="10" cols="80" name="boardContent" style="resize: none;">

 

 

유의사항

<textarea> 단일로 넣어줘야 코드가 작동하는 듯함

아래처럼 상속으로 범위로 넣으면 안되는 것 같다

.QuesContent > textarea{
    width:890px;
    padding:1% 0;
    resize: none;
}

 

 

728x90
반응형
728x90

 

 

details, summary (toggle)+ <c:foreach> 적용 코드

1.반복하기 위해 가장 바깥 테두리에 <c:foreach>를 위치시킴

2.detail태그 기능을 사용할려면 처음과 끝이 detail태그로 덮어야하므로 처음과 끝은 detail태그로

3.summary가 접혀져있고 요약부분을 보여주는 부분이기에 접혀져있는 상태에서 보여주고 싶은 부분을 summary 안에 집어넣고 펼쳐있을 때(open) 보여주고 싶은 부분은 <p>,<ul,li>태그 같은 걸로 처리해야한다

4.summary부분을 하나로 묶고 css 하기위해 div로 한번 감싸고 그 안에 게시판 번호,타이틀,작성날짜 등을 넣었다

5.펼쳐지는 부분(open)을 하나로 관리하기 위해 <div class="QnaToggleOpen"> 만들고 그 안에 <ul>과 <li>로 펼쳐지는 부분을 구현

 

 

728x90
반응형

+ Recent posts