다른 프로젝트에서는 정상적으로 되었으나 Sping 프로젝트에서 jsp 파일 실행시 톰캣 실행이 안될 때

우선 window > preferences로 이동한다.

이동 후 기존의 Tomcat을 Remove한다.

Remove 후 다시 Add로 Tomcat을 추가한다.

Tomcat 추가 후 하단에 Server > New > Server로 서버를 새로 추가해준다.

그 후 기존 Spring Project > pom.xml에서 plugin의 Tomcat을 정상 pom의 Tomcat을 정상 pom의 Tomcat으로 수정한다,

 

 


 

그 다음 두번째 방법

오류가 발생한 Spring 프로젝트의 Maven Dependencies로 이동한다.

경로를 확인한 후 해당 폴더의 파일을 모두 삭제한다.

삭제 후 Spring 프로젝트 우클릭 > Maven > Update Project를 진행한다.

아래 순서대로 프로젝트 > 우클릭 > close Project를 진행하면 열려있던 모든 파일들을 닫을 수 있다.

 

스프링 실행시 프로젝트 안에 아무런 문제가 없는데도 404 오류가 발생한다면,

이클립스 서버를 Restart 한 후에 동일한지 확인해보도록하자.

 

 

Java Script를 html에서 호출하는 방법은 여러가지가 있지만 우선 두가지를 보려고한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<script>
function func(){
	alert("로그인이 필요합니다.");
	location.href="login.jsp";
}
</script>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>글 목록</h1>
<c:set var="name" value="${user }" />
<h2>${name }</h2>
<c:if test="${name eq null }">
<script type="text/javascript">
	func();
</script>
</c:if>
</body>

첫번째 코드는 위와 같이 script 함수를 상단에 따로 선언하고 html에는 함수명만 입력하는 것이다.

여기서 주의할 것은 script를 제일 상단이 아닌 하단에 정의하거나 scirpt를 사용하려 하는 부분 이후에 정의한다면 html 코드가 위에서 아래로 실행이 되므로 해당 코드는 지나가고 제일 하단에 script가 실행되게 된다. 그러므로 꼭 상단에 정의하는 것이 중요하다.

 

위와 같이 하단에 정의시 Script가 실행안되는 것을 확인할 수 있다.

그리고 두번째 방법은 바로 스크립트를 입력하는 것이다.

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>글 목록</h1>
<c:set var="name" value="${user }" />
<h2>${name }</h2>
<c:if test="${name eq null }">
<script type="text/javascript">
alert("로그인이 필요합니다.");
location.href="login.jsp";
</script>
</c:if>
</body>

위와 같이 별도의 함수 없이 sciprt 내용만 입력해서도 동작이 가능하다.

그러므로 위의 두가지 방법을 참고하여 진행하도록하자.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>글 목록</h1>
<c:set var="name" value="${user }" />
<h2>${name }</h2>
<c:if test="${name eq null }">
<script type="text/javascript">
alert("로그인이 필요합니다.");
location.href="login.jsp"
</script>
</c:if>{
<table border="1">
<tr>
	<th bgcolor="orange" width="150">번호</th>
	<th bgcolor="orange" width="150">제목</th>
	<th bgcolor="orange" width="150">작성자</th>
	<th bgcolor="orange" width="150">등록일</th>
	<th bgcolor="orange" width="150">조회수</th>
</tr>
<c:if test="${name ne null }">
<c:forEach items="${boardList }" var="board">
<tr>
	<td>${board.seq }</td>
	<td><a href="getBoard.do?seq=${board.seq }">${board.title }</a></td>
	<td>${board.writer }</td>
	<td>${board.regDate }</td>
	<td>${board.cnt }</td>
</tr>
</c:forEach>
</c:if>
</table>
</body>
</html>

 

게시판을 불러올 때 user 세션이 없을 경우 로그인을 하도록 처리하려고한다.

여가서 문제가 있었던 부분은 위에 name 변수에 user 세션을 넣을 때 주의할 점은 ""이다.

따옴표가 있어야 value값 저장이 되니 이 점 참고하도록하자 작동 원리는 아래와 같다.

 

로그인 화면에서 위와 같이 로그인을 진행한다.

로그인을 하면 위와 같이 변수 name에 user세션에 대한 정보가 저장된다.

위의 전체 코드에서 보면 알 수 있듯이 user 세션이 있다면 위와 같이 게시판 정보가 보이도록 처리가 되어 있으며, user 세션이 있으므로 위의 게시판 정보가 정상 출력이 된다.

이후 로그아웃을 진행한 후 바로 list를 출력한다.

 

출력화면 위와 같이 아까 글 목록 화면 아래에 아무런 정보가 없는 것을 확인할 수 있다.

이유는 user session 값이 null 값이므로 아무런 정보가 노출되지 않는 것이다.

이후 확인 버튼을 클릭하면 작성한 코드와 같이 로그인 페이지로 이동한다.

위의 사진을 보면 작성된 script대로 로그인 페이지로 이동한 결과를 확인할 수 있다.

+ Recent posts