수색…


소개

Spring MVC와 같은 MVC 프레임 워크는 동적 웹 페이지를 제공하는 웹 애플리케이션을 만드는 데 사용됩니다. 저지는 REST 프레임 워크로 알려져 있지만 MVC 모듈을 사용하여 동적 웹 페이지를 만들 수도 있습니다.

저지 MVC Hello World

시작하려면 새로운 Maven 웹 애플리케이션을 만드십시오 (이 작업은이 예제의 범위를 벗어나는 방법입니다). pom.xml에 다음 두 가지 종속성을 추가합니다.

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.25.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-mvc-jsp</artifactId>
    <version>2.25.1</version>
</dependency>

또한 pom에 개발 중에 응용 프로그램을 실행하는 데 사용할 jetty-maven-plugin 을 추가하십시오.

<build>
    <finalName>jersey-mvc-hello-world</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <inherited>true</inherited>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.3.8.v20160314</version>
        </plugin>
    </plugins>
</build>

이제 컨트롤러를 만들 수 있습니다. 모든 MVC 프레임 워크에서 개념은 대개 동일합니다. 템플릿이 있고 컨트롤러를 사용하여 템플릿을 렌더링하는 데 사용할 모델을 채 웁니다. 여기에서 "렌더링"이라는 용어는 템플릿과 모델을 결합하여 최종 HTML 페이지를 만드는 것을 의미합니다. 예를 들어이 템플릿을 사용합니다.

src / main / webapp / WEB-INF / jsp / index.jsp

<html>
    <head>
        <title>JSP Page</title>
    </head>
    <body>
        <h1>${it.hello} ${it.world}</h1>
    </body>
</html>

이것은 JSP 파일입니다. JSP는 Jersey가 지원하는 템플릿 엔진 중 하나 일뿐입니다. 여기서 우리는 helloworld 두 모델 변수를 사용합니다. 이 두 변수는이 템플릿을 렌더링하는 데 사용되는 모델에 포함될 것으로 예상됩니다. 이제 컨트롤러를 추가해 보겠습니다.

package com.example.controller;

import org.glassfish.jersey.server.mvc.Viewable;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;

@Path("/")
public class HomeController {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public Viewable index() {
        Map<String, String> model = new HashMap<>();
        model.put("hello", "Hello");
        model.put("world", "World");
        return new Viewable("/index", model);
    }
}

여기서 helloworld 속성으로 모델을 채우는 것을 볼 수 있습니다. 또한 컨트롤러 메소드는 사용할 뷰 템플릿의 이름을 반환합니다.이 경우 index 입니다. 이를 통해 프레임 워크는 "인덱스"템플릿을 가져 와서 제공된 모델을 사용하여 렌더링합니다.

이제 구성 만하면됩니다. 다음과 함께 ResourceConfig 하위 클래스를 추가하십시오.

package com.example;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature;

public class AppConfig extends ResourceConfig {

    public AppConfig() {
        packages("com.example.controller");
        property(JspMvcFeature.TEMPLATE_BASE_PATH, "/WEB-INF/jsp");
        register(JspMvcFeature.class);
    }
}

여기에는 세 가지가 있습니다.

  1. packages 를 사용하여 Jersey에 @Path 로 주석 처리 된 클래스의 com.example.controller 패키지를 스캔하여 등록 할 수 있다고 알려줍니다. 이 경우 HomeController 등록합니다.

  2. 템플릿을 해결하기 위해 프레임 워크의 기본 경로를 설정하고 있습니다. 이 경우 우리는 Jersey에게 WEB-INF/jsp 에서 템플릿을 찾도록 지시합니다. 위의 index.jsp 예제는이 디렉터에서 볼 수 있습니다. 또한 컨트롤러에서는 템플릿 이름 index 만 반환합니다. 이것은 configure 기본 경로의 접두어와 암시 적 .jsp 접미사를 사용하여 템플리트를 찾는 데 사용됩니다

  3. JSP 렌더링을 처리하는 기능을 등록해야합니다. 이전에 언급했듯이 Jersey가 지원하는 렌더링 엔진은 JSP뿐 아닙니다. 상자가 두 개 더 지원됩니다.

마지막으로 web.xml에서 Jersey를 구성해야합니다.

<filter>
    <filter-name>Jersey</filter-name>
    <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.example.AppConfig</param-value>
    </init-param>
</filter>

<filter-mapping>
    <url-pattern>/*</url-pattern>
    <filter-name>Jersey</filter-name>
</filter-mapping>

여기서는 Jersey가 AppConfig 클래스를 사용하도록 구성합니다. 여기에서 지적해야 할 중요한 점 중 하나는 <servlet> 대신에 <filter> 사용하는 것입니다. 이는 JSP를 템플릿 엔진으로 사용할 때 필요합니다.

이제 우리는 그것을 실행할 수 있습니다. 명령 행에서 mvn jetty:run . 이것은 이전에 설정 한 Maven Jetty 플러그인을 실행합니다. "Started Jetty Server"가 표시되면 서버가 준비되었습니다. 브라우저 URL http://localhost:8080/ . Voila, "Hello World". 즐겨.

자세한 내용은 Jersey Documentation for MVC Templates를 참조하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow