jersey
저지 MVC 지원
수색…
소개
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가 지원하는 템플릿 엔진 중 하나 일뿐입니다. 여기서 우리는 hello
와 world
두 모델 변수를 사용합니다. 이 두 변수는이 템플릿을 렌더링하는 데 사용되는 모델에 포함될 것으로 예상됩니다. 이제 컨트롤러를 추가해 보겠습니다.
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);
}
}
여기서 hello
와 world
속성으로 모델을 채우는 것을 볼 수 있습니다. 또한 컨트롤러 메소드는 사용할 뷰 템플릿의 이름을 반환합니다.이 경우 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);
}
}
여기에는 세 가지가 있습니다.
packages
를 사용하여 Jersey에@Path
로 주석 처리 된 클래스의com.example.controller
패키지를 스캔하여 등록 할 수 있다고 알려줍니다. 이 경우HomeController
등록합니다.템플릿을 해결하기 위해 프레임 워크의 기본 경로를 설정하고 있습니다. 이 경우 우리는 Jersey에게
WEB-INF/jsp
에서 템플릿을 찾도록 지시합니다. 위의index.jsp
예제는이 디렉터에서 볼 수 있습니다. 또한 컨트롤러에서는 템플릿 이름index
만 반환합니다. 이것은 configure 기본 경로의 접두어와 암시 적.jsp
접미사를 사용하여 템플리트를 찾는 데 사용됩니다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를 참조하십시오.