걱정하지 마세요. 바보 같은 질문은 없습니다 .-)
확실히, Restyle은 서버 측만 JavaSE와 함께 사용할 수 있습니다. 독립형 Java 응용 프로그램 내에서 Restlet 서버를 정의 할 수 있습니다. 이 작업은 Component 클래스를 사용하여 수행 할 수 있습니다. 인스턴스를 생성 한 후에 서버를 추가 할 수 있습니다. 아래에 설명 된대로
public static void main(String[] args) {
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8080);
(...)
component.start();
}
구성 요소를 시작하기 전에, 당신은 그것에 당신으로 Restlet 응용 프로그램을 첨부 할 수 있습니다 : 코드를 다음은이 설명
component.getDefaultHost().attach(new SampleApplication());
Restlet 프레임 응용 프로그램이 클래스 Application
를 확장 클래스를 à에 해당합니다. 다음 단계는 createInboundRoot
메서드를 재정의하는 것입니다. 이 메소드는 애플리케이션의 REST 라우트를 정의합니다. 으로 Restlet 응용 프로그램의 skelekon 코드를 설명합니다 다음은
public class SampleApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/myresource", MyServerResource.class);
(...)
return router;
}
}
정적 파일 (JS, CSS, ...)를 제공하기 위해 원하기 때문에
, 당신은 클래스
Directory
을 활용할 수 있습니다. 루트 폴더 내의 모든 폴더 및 파일을 경로에 자동 및 재귀 적으로 첨부 할 수 있습니다. 다음과 같이 구성 할 수 있습니다.
String rootUri = "file:///(...)/static-content";
Directory directory = new Directory(getContext(), rootUri);
directory.setListingAllowed(true);
router.attach("/static/", directory);
이제 서버 리소스에 집중하겠습니다. 우리는 당신의 사건에 대한 두 종류를 구별 할 수 있습니다 자신의 주석 방법 wwith으로 POJO 구조화 된 데이터를 교환하고 사용
- 사람 (
Get
, Post
, ...) 표현을 직접 관리하거나으로 Restlet에 따라
- 사람을 확장자
첫 번째 경우에는 answer을 stackoverflow에서 참조 할 수 있습니다.
두 번째 템플릿 엔진을 사용하여 클라이언트에 다시 보낼 콘텐츠를 생성 할 수 있습니다. 이것은 JavaEE의 JSP와 비슷한 것입니다. Freemarker 샘플 (http://freemarker.org/)과 해당 Restlet 확장 프로그램을 사용할 수 있습니다.아래에 설명 된대로
먼저 우리는 여기서 템플릿을 찾으려면 Restlet 프레임 응용 프로그램 내에서 프리 마커 엔진을 구성하는 데 주로 루트 디렉토리가 필요합니다
그런 다음에 같은 템플릿을 활용하는 프리 마커 표현을 만들 수 있습니다
public class SampleApplication extends Application {
(...)
private Configuration configuration;
public static Configuration configureFreeMarker(Context context) {
Configuration configuration = new Configuration();
ClassTemplateLoader loader = new ClassTemplateLoader(
SampleAppApplication.class,
"/org/myapp/sample/server/templates/");
configuration.setTemplateLoader(loader);
// configuration.setCacheStorage(new StrongCacheStorage());
return configuration;
}
public Configuration getConfiguration() {
return configuration;
}
}
후술하는 바와 같이, 출력 콘텐츠 (서버 측에서 생성 된 동적 컨텐츠)를 생성한다 : 여기서
private SampleApplication getSampleApplication() {
return (SampleApplication)getApplication();
}
private Representation toRepresentation(Map<String, Object> map,
String templateName, MediaType mediaType) {
return new TemplateRepresentation(templateName,
getSampleApplication().getConfiguration(), map, mediaType);
}
@Get("html")
public Representation getHtml() {
Map<String, Object> model = new HashMap<String, Object>();
model.put("titre", "my title");
model.put("users", getUsers());
return toRepresentation(model,
"myTemplate", MediaType.TEXT_HTML);
}
템플릿 myTemplate
의 내용이다.
<html>
<head>
<title>${title}</title>
</head>
<body>
Users:<br/><br/>
<ul>
<#list users as user>
<li>${user.lastName} ${user.firstName}</li>
</#list>
</ul>
</body>
</html>
희망이 있습니다. Thierry
고마워요. 이 답변은 실제로 구조가 잘되어 있습니다. 구조가 필요했습니다. 좀 더 질문이 있습니다. 나는 다시 여기 쓸 수 있다는 것을 모른다. – user1915570
당신을 진심으로 환영합니다! 귀하의 질문은이 하나의 관련이 있다면, 나는 우리가 여기에 의견을 갈 수 있다고 생각 ;-) 아니라면, stackoverflow에 대한 새로운 질문을 게시하고 언제든지 대답 해 드리겠습니다. –
다시 한번 감사드립니다. 아직 freemarker를 시도하지 않았습니다. freemarker가 JavaEE의 JSP와 비슷한 방식으로 작동하는 경우 "JavaEE의 JSP와 비슷한 것"이라는 설명에 문장이 있습니다. 그런 다음 JSP/JavaEE를 사용하지 않는 것이 좋습니다. 정확히 JavaEE를 통해 JavaSE를 사용하면 얻을 수있는 이점은 무엇입니까? JavaSE를 사용하는 것처럼 보이기 때문에 JavaEE와 유사하게 작업해야합니다. 여분의 도구 사용, freemarker 같은 확장 기능. 내가 restlet 사용자 가이드를 [restlet 홈페이지] (http://restlet.com/technical-resources/restlet-framework/guide/2.3/editions/jee/overview)에서 보았습니다. 그들은 다음과 같이 설명했습니다 : – user1915570