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

 

EL

JSP 2.0버전에서 추가된 표현언어로, Expression Language의 약자

화면에 데이터 출력 시키는 것이 메인 기능

 

화면에 표현하고자 하는 부분을  ${ value }과 같은 형식으로 코드로 구현

(jQuery의 $표시와 혼동 주의)

JSP의 <%= 출력할 데이터 %>나 System.out.print(출력할 데이터)와 비슷

<%= request.getParameter(“name”) %> ${ param.name }

 

 

EL 연산자 기호

EL 연산자가 적용되는 우선순위

 

 

EL 기본 내장 객체

 

 

예시

데이터 가져올 뷰화면 코드

<form action=”loginEx.jsp” method=”get” >
	<label for=”id”>아이디 : </label> 
    <input type=”text” name=”id” id=”id” <label for=”pass”> 
    <input type=”text” name=”id” id=”id”/><br>
    
    <label for=”pass”> 암호 : </label> 
    <input type=”password” name=”pass” id=”pass” /><br> 
    <input type=”submit” value=”로그인” />
</form>

 

데이터 받을 jsp 페이지

<h1>표현식 버전</h1>
아이디 : <%=request.getParameter(“id”) %>
암호 :  <%=request.getParameter(“pass”) %>

<h1>EL 버전</h1>
아이디 : ${param.id }
암호 : ${param.pass }

 

728x90
반응형
728x90

JSP 표준 액션 태그

JSP에서 기본으로 제공하는 태그

 

jsp:include

현재 페이지에 특정 페이지를 포함할 때 사용

공통 코드를 복붙 하기보다 각각 JSP 페이지에 구성을 하고 액션태그를 이용해 페이지를 포함시키는 것이 좋다 공통적으로 적용된 부분을 한꺼번에 수정할 수 있게 되어 유지보수가 수월

jsp include 지시자와의 차이

<%@ include file=“파일 명” %>과 쓰임이 동일하나 jsp파일이 java파일로 변환될 때 삽입되는 <%@ include %>와는 달리

jsp파일이 java파일로 바뀌고 컴파일이 완료되어 런타임 시 삽입

<jsp:include page=“파일 명“ flush=“true”/>
<jsp:include page=“./header.html”>
		<jsp:param name=“str” value=“안녕하세요”> 
</jsp:include>

 

 

jsp:forward

현재 페이지 접근 시, 특정 페이지로 이동

하나의 JSP페이지에서 다른 JSP페이지로 요청 처리를 전달할 때 사용 전달하는 페이지에서 request, response객체가 같이 전달되며, URL 변경x

RequestDispatcher 의 forward와 비슷

<jsp:forward page=”이동할페이지”>
		<jsp:param name=”변수명” value=”값” /> 
</jsp:forward>

 

<% if(str.equals(“A”)) { %>
		<jsp:forward page=“test1Class.jsp”>
<% } else { %>
		<jsp:forward page=“test2Class.jsp”> <% } %>

 

jsp:useBean

Java Bean객체를 사용하기 위한 태그

JSP에서 사용하는 VO, DTO, Entity와 동일

java class를 참조하여 빈(java bean) 객체를 생성하고 setProperty와 getProperty를 통해 값 저장 및 조회 가능

이미 같은 이름의 객체가 생성된 경우 기존의 객체 참조

 

   - id : 객체 인스턴스를 식별하는 이름

   - class : 완전한 형태의 클래스 이름

   - scope : 객체 참조의 유효범위(default : page)

<jsp:useBean id=”빈 이름” scope=”범위” class=”빈의 저장위치”/〉

<jsp:useBean id=“객체명“ class=“패키지 명. 클래스 명“ scope=“범위 지정자“/>
728x90
반응형
728x90

 

 

에러메시지

javax.propertyNotFoundException: [age] 특성이 [action.model.vo.Person] 유형에 없습니다.

 

상황

El 내장객체 xxxScope 사용하여 값 출력 중 발생

 

원인

나이를 끌어오는 정보에서 값을 받아오는 부분이 게터명에서 데이터를 끌어오는 건데, 서블릿에서 Person p = new Person(name, gender, age);의 age에서 나이를 불러오는 줄 알고 age로 적어서 에러 뜸

vo 클래스의 필드명과 생성자들을 중간 nai로 바꿔서 헷갈린 듯

 

해결

requestScope.person.age에서

requestScope.person.nai로 코드 수정

 

 

 

728x90
반응형

+ Recent posts