응 괜찮아,

05. Spring 프로젝트 JSP 직접 호출 시, 404 에러 발생 본문

IT/Spring

05. Spring 프로젝트 JSP 직접 호출 시, 404 에러 발생

응 괜찮아, 2021. 2. 26. 00:25
728x90

안냐세염 😊

 

지난번 Spring 프로젝트 한글깨짐 해결했던 포스트에 이어

오늘은 Spring 프로젝트에서 발생할 수 있는 에러에 대해 다뤄보려고 합니다.

 

 

Spring 프로젝트 한글깨짐 해결방법에 대해 다시 보고 싶으신 분은 아래 링크 클릭 클릭 👇👇👇

2021/02/11 - [IT/Spring] - 04. Spring 프로젝트 한글깨짐 해결

 

04. Spring 프로젝트 한글깨짐 해결

안녕하세요. 설을 앞둔 즐거운 오후입니다. 오늘은 스프링 프로젝트와 큰 관련은 없지만, 지난번 포스트와 관련하여 잠깐 부가적인 설명을 하려고 합니다. 지난번에는 이클립스(Eclipse)에서 아파

itsokay92.tistory.com

 

그리고 HTML의 a 태그에 대해 모르시는 분은 아래 포스트 다녀와주세요 👇👇👇

2021/02/25 - [IT/HTML] - [HTML] a 태그 파헤치기

 

[HTML] a 태그 파헤치기

1. a 태그, 언제 사용하는 아이인가 현재 페이지에서 다른 페이지로 이동할 때 사용 2. a 태그 표기방법 내용 3. a 태그의 속성 속성 역할 href 이동할 페이지 주소 (= 목적지 주소) target 이동할 페이

itsokay92.tistory.com

 

저는 Spring 프로젝트의 /WEB-INF/views 폴더 안에 있던 home.jsp에서 joinMember.jsp을 호출하려고

아래와 같이 코드를 일단 작성해봤는데요.

/*********************************** home.jsp **************************************/

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Title</title>
</head>
<body>
  <a href="joinMember.jsp">회원가입</a>
</body>
</html>

 

코드를 작성하고 나서 프로젝트를 톰캣 서버에서 실행했습니다. 그

럼 웹 브라우저에서 아래 화면이 보여지는데 화면에 있는 "회원가입"을 클릭해봅니다.

헉!!!😧

404 에러가 발생하네요. 404 에러는 웹 페이지를 찾을 수 없을 때 나는 오류!!

 

이상하죠? joinMember.jsp는 분명 /WEB-INF/views 폴더 안에 존재하고 있고 웹 브라우저 주소도 맞는데 말이죠.

 

알고보니 home.jsp에서 a 태그로 joinMember.jsp를 호출했을 때 404 에러가 발생했던 이유는

joinMember.jsp가 위치해있는 WEB-INF 폴더가 브라우저에서 직접적으로 접근 불가능한 폴더이기 때문입니다.

외부에서의 직접적인 접근을 막고 있기 때문에 시스템의 구조(내부)를 감출 수 있는 장점을 갖추고 있죠.

 

따라서 아래 코드처럼 "~.do"와 같이 Controller에서 처리 가능하나 Request URL 형태로 호출하여,

View(home.jsp)가 아닌 Controller에서 또 다른 View(joinMember.jsp)로 이동할 수 있도록 해야 합니다.

/************************** View (home.jsp) *****************************/

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Title</title>
</head>
<body>
  <a href="joinMember.do">회원가입</a>
</body>
</html>
/***************************** Controller (HomeController.java) *****************************/
package com.test.myspring;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("method [" + Thread.currentThread().getStackTrace()[1].getMethodName() + "]");	// 로그에 메소드명 나타내기x
		return "home";
	}
	
	@RequestMapping(value = "joinMember.do")
	public String joinMmeber(Model model) {
		logger.info("method [" + Thread.currentThread().getStackTrace()[1].getMethodName() + "]");
		return "joinMember";	// joinMember.jsp 호출!!!
	}
	
}

 

좋아요는 언제나 환영입니다😊

못된 부분이나 문의사항 있으시면 언제든 댓글주세요!!

728x90
Comments