복붙노트

[SPRING] SpringSource IDE는 프로젝트 이름을 Spring MVC 애플리케이션의 루트 URL로 사용하지 않는다.

SPRING

SpringSource IDE는 프로젝트 이름을 Spring MVC 애플리케이션의 루트 URL로 사용하지 않는다.

SpringSource IDE로 Spring MVC 템플릿 프로젝트를 만들 때 애플리케이션을 실행하고 루트 URL이 기본 패키지 이름의 마지막 단어로 설정된다.

예를 들어 프로젝트를 만들 때 기본 패키지를 com.sample.myapp로 설정합니다. 응용 프로그램을 실행하면 http : // localhost : 8080 / myapp에서 열립니다. 루트 URL이 내 프로젝트 이름 인 MyProject를 대신 사용하지 않는 이유는 무엇입니까?

응용 프로그램의 모든 URL을 /myapp/resources/css/mycss.css로 지정해야하기 때문에 문제가됩니다. 그러나 .war 파일을 내 보내서 Tomcat 서버에 배포하면 Tomcat은 프로젝트 이름을 대신 예상합니다 ( /MyProject/resources/css/mycss.css를 사용하기를 원합니다. 결과적으로, 배포 할 때 모든 링크가 끊어집니다 (SpringSource IDE 내에서 Tomcat을 로컬로 실행할 때 ...).

다른 누구도이 문제에 부딪 혔습니까?

아래의 주석 논의 예 :

<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
    <property name="service"
        value="https://localhost:8443/MyProject/j_spring_cas_security_check" />
    <property name="sendRenew" value="false" />
</bean>

해결법

  1. ==============================

    1.응용 프로그램을 실행하는 방법에 따라 다릅니다. SpringSource IDE (STS)에서 "Run on Server"를 선택했다고 가정합니다. STS에서 서버 정의를 두 번 클릭하면 "모듈"탭이 나타납니다. 여기에서 "경로"를 편집하여 원하는대로 설정할 수 있습니다. "서버에서 실행"을 선택하면 STS는 컨텍스트 경로를 정의하고 단순히 기본 패키지의 마지막 요소로 기본 설정합니다. 제대로 기억한다면 기본적으로 Tomcat은 압축 또는 폭발 된 .war의 파일 이름 이름을 사용합니다. 두 경우 모두 오버라이드 할 수 있습니다.

    응용 프로그램을 실행하는 방법에 따라 다릅니다. SpringSource IDE (STS)에서 "Run on Server"를 선택했다고 가정합니다. STS에서 서버 정의를 두 번 클릭하면 "모듈"탭이 나타납니다. 여기에서 "경로"를 편집하여 원하는대로 설정할 수 있습니다. "서버에서 실행"을 선택하면 STS는 컨텍스트 경로를 정의하고 단순히 기본 패키지의 마지막 요소로 기본 설정합니다. 제대로 기억한다면 기본적으로 Tomcat은 압축 또는 폭발 된 .war의 파일 이름 이름을 사용합니다. 두 경우 모두 오버라이드 할 수 있습니다.

    희망이 도움이됩니다.

  2. ==============================

    2.호스트 및 포트 다음의 URL에서 첫 번째 부분은 컨텍스트 경로라고합니다. 당신의 경우에는 myapp. tomcat에서 context-path는 war-file의 이름과 같습니다. war-file ROOT.war의 이름을 지정하면 context-path가 사용되지 않습니다.

    호스트 및 포트 다음의 URL에서 첫 번째 부분은 컨텍스트 경로라고합니다. 당신의 경우에는 myapp. tomcat에서 context-path는 war-file의 이름과 같습니다. war-file ROOT.war의 이름을 지정하면 context-path가 사용되지 않습니다.

    bimsapi가 언급 했으므로 STS에서도 컨텍스트 경로를 변경할 수 있습니다.

    하지만 : 앱을 컨텍스트 경로와 독립적으로 만들 수 있어야합니다. JSP를 사용하는 경우 태그를 사용하여 링크를 작성하십시오.

    <c:url value="/resources/css/mycss.css" />
    

    실제 컨텍스트 경로를 포함하여 올바른 URL을 출력합니다. 또는 변수에 저장하고 나중에 사용할 수 있습니다.

    <c:url value="/items/index" var="cancel-url" />
    <a href="${cancel-url}">Cancel</a>
    

    Java 코드에서 다음을 사용하여 컨텍스트 경로를 얻을 수 있습니다.

    request.getContextPath()
    

    여기서 request는 현재 HttpServletRequest 객체입니다. 이 기능을 사용하면 애플리케이션을 실제 컨텍스트 경로와 완전히 독립적으로 만들어 배포를 단순화 할 수 있습니다.

  3. ==============================

    3.STS에 대해서는 확실하지 않지만 전쟁 파일 이름은 pom 파일에 설정되어 있습니다.

    STS에 대해서는 확실하지 않지만 전쟁 파일 이름은 pom 파일에 설정되어 있습니다.

    </dependencies>    
    <build>
    <finalName>yourProject</finalName>
    

    (그냥 당신이 메이븐, 오 잘 지정하지 않았다는 것을 깨달았다)

  4. from https://stackoverflow.com/questions/13705685/springsource-ide-does-not-use-project-name-as-root-url-for-spring-mvc-applicatio by cc-by-sa and MIT license