ㅤㅤㅤ

간만에 맛보는 짜릿한 404에러! (스프링) 본문

プログラミング/Spring

간만에 맛보는 짜릿한 404에러! (스프링)

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 2017. 6. 26. 09:28

프로젝트명 마우스 우클릭 -> Properties -> Web Project Settings의
Context root도 /로 되어있나요?
똑같이 맞춰줘야 경로가 제대로 반영됩니다.


terry님 @RequestMapping("/SpringTemplate/helloPage.do") 
이렇게 해야하나요?
server.xml에서 path를 "/" 로 잡아줬는데..



간만에 맛보는 짜릿한 404에러! (스프링)


안녕하세요 형누나들
옥희에서 java/jsp qna 게시판을 가장 좋아하는 꽁치여요
올 여름을 강타할 404에러와 맞서 싸우다
지쳐서 질문을 올려요

템플릿용 프로젝트를 하나 만들어 두려고 기존 프로젝트에서
jar파일들 옮기고 간단하게 하나 만드는 중이어요

근데 헐! 404 ㅠㅠ
콘솔에 크게 심각한 에러는 안나오네요

http://localhost:8080/helloPage.do  접속하면
컨트롤러를 아예 못타는듯 보여요
컨트롤러안에 시스템.아웃.프린트.엘엔("hello); 했는데도 안떠요 ㅠ
다음은 컨트롤러여요
package kr.co.springtemplate.controller;


@Component // 서블릿에서 빈으로 자동 등록 할 수 있게 컴포넌트 적용
@Controller // 이 클래스가 컨트롤러를 구현한 클래스라는 것을 지정
public class HelloConterller {

@Autowired
private HelloService helloService;

// @RequestMapping 어노테이션: 클라이언트의 요청을 처리할 메서드를 지정
// localhost:8080/컨텍스트경로/helloPage.do 요청이 오면 helloPage()메서드가 처리
@RequestMapping("/helloPage.do")
public String helloPage(HttpServletRequest request) throws Exception{
request.setCharacterEncoding("utf-8");

System.out.println("on hello controller!");

return "helloPage";
}

문제 없죠? 그죠?
리퀘스트매핑도 화끈하게 해줬고 이건 컨트롤러임, 컴포넌트임 지정도 해주었어요

다음은 디스패춰.xml이어요
<context:component-scan base-package="kr.co.springtemplate" />
<!-- tiles 설정 -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"></property>
</bean>

kr.co.springtemplate 패키지 밑으로 샅샅히 뒤져서
한놈도 남김없이 빈으로 등록하라고 엄명을 내렸는데 태업중인듯 해요

다음은 web.xml이어요

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<!-- 한글 인코딩 처리 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern> <!-- contextPath 밑으로 모두 -->
</filter-mapping>

<servlet>
<!-- 서블릿 클래스의 이름과 패키지 경로 -->
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

다음은 톰캣의 server.xml 이어요

<Context docBase="SpringTemplate" path="/SpringTemplate" reloadable="true" source="org.eclipse.jst.jee.server:SpringTemplate"/></Host>

정말 문제가 없는듯한데 왜 컨트롤러 조차 타지 않을까요?
더워서 그런가?;; 



0
0
  • 답변 14

  •  
    꽁치 
     1k
    4년 전
    헐 다들 식사하러 가셨나요? 맛있게 드셔용!
    꽁치는 뚝배기짬뽕밥 먹을거여요!
    0
  •  
    cynicjj 
     1k
    4년 전
    0
  •  
    꽁치 
     1k
    4년 전
    잉 http://localhost:8080/SpringTemplate/helloPage.do  로 해도 404가 뜨고
    에디님 말씀대로 server.xml의 path를 /로 바꾸고
    http://localhost:8080/helloPage.do로  해봤는데 안되네요 ㅠ

    톰캣 구동시 뜨는 로그입니다

    6월 11, 2013 1:09:39 오후 org.apache.catalina.core.StandardContext reload
    INFO: Reloading Context with name [/SpringTemplate] has started
    6월 11, 2013 1:09:39 오후 org.apache.catalina.core.ApplicationContext log
    INFO: Closing Spring root WebApplicationContext
    6월 11, 2013 1:09:39 오후 org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(D:\workSpace\neonuriJava\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\SpringTemplate\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    6월 11, 2013 1:09:41 오후 org.apache.catalina.core.ApplicationContext log
    INFO: No Spring WebApplicationInitializer types detected on classpath
    6월 11, 2013 1:09:41 오후 org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring root WebApplicationContext
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    log4j:WARN Please initialize the log4j system properly.
    6월 11, 2013 1:09:41 오후 org.apache.catalina.core.StandardContext reload
    INFO: Reloading Context with name [/SpringTemplate] is completed
    0
  •  
    꽁치 
     1k
    4년 전
    http://localhost:8080/치면  
    그냥 webcontent안의 index.jsp는 잘뜨거든요ㅜ
    현재 설정으로는 helloPage.do가 web-inf밑에 있어도 잘 뜰텐데ㅠ
    0
  •  
    꽁치 
     1k
    4년 전
    헐! 열받아서 프로젝트 다시 만들어보는 중입니다 씩씩~
    0
  •  
    꽁치 
     1k
    4년 전
    다시 만드니 되네요 ㅠㅠ 근데 뭐가 틀린건지 모르겠다능..
    0
  •  
    제타건담 
     5k
    4년 전
    이 소스대로라면 당연 안되는게 맞습니다..

    @RequestMapping("/helloPage.do") 

    이렇게 하심 당연 안되겠죠..
    0
  •  
    꽁치 
     1k
    4년 전
    terry님 @RequestMapping("/SpringTemplate/helloPage.do") 
    이렇게 해야하나요?
    server.xml에서 path를 "/" 로 잡아줬는데..
    0
  •  
    NG 
     2k
    4년 전
    프로젝트명 마우스 우클릭 -> Properties -> Web Project Settings의
    Context root도 /로 되어있나요?
    똑같이 맞춰줘야 경로가 제대로 반영됩니다.
    0
  •  
    제타건담 
     5k
    4년 전
    그게 아니라 확장자 do를 빼야 한다는거죠..
    web.xml에서 확장자를 do를 쓰는 것은 Spring의 DispatcherServlet을 통해 간다고 되어 있기땜에 @RequestMapping에서는 @RequestMapping("/helloPage")만 하는거죠..
    지금과 같은 설정으로 한다면 웹브라우저에서 helloPage.do.do로 하면 아마 접근 가능할껍니다..
    0
  •  
    꽁치 
     1k
    4년 전
    아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ㅠㅠ죄송합니다
    0
  •  
    난아직도초보 
     480
    4년 전
    오잉?
    log 설정 info 로 하셨는데 위와 같은 구동 로그가 뜬건가요?
    정상적으로 spring 로딩이 안?듯 합니다..;;
    정상적으로 spring 로딩이 되어 있다면. 컨트롤러 매핑등의 로그가 뜨거든요..
    이 경우 보통 설정상의 문제일 경우가 대부분이더군요..
    0
  •  
    de 
    4년 전
    0
  •  
    꽁치 
     1k
    4년 전
    넵 감사합니다 잘 읽어보겠슴다^^


Comments