[Velocity 3]Servlet+Velocity 기반 웹 응용
4579 단어 velocity
org.apache.velocity.tools.view.Velocity ViewServlet 를 사용 하면 Velocity 를 Servlet 기반 웹 응용 프로그램 에 통합 하여 Servlet+Velocity 방식 으로 웹 응용 을 실현 할 수 있 습 니 다.
Servlet+Velocity 의 일반적인 절차
1.servlet 을 사용자 정의 하여 Velocity ViewServlet 의 handle Request 방법 을 실현 합 니 다.Velocity ViewServlet 의 doGet 또는 doPost 방법 을 덮어 쓰 지 마 십시오.기본 구현 은 handle Request 방법 으로 요청 을 전송 하 는 것 입 니 다.handle Request 를 실현 할 때 vm 의 모드 이미지 템 플 릿 을 되 돌려 야 합 니 다.
2.웹.xml 에서 사용자 정의 Servet 을 설정 하 는 동시에 Velocity 프로필 velocity.properties 의 위 치 를 지정 해 야 합 니 다.
3.지정 한 디 렉 터 리 에서 velocity.properties 설정 파일 을 만 들 고 Velocity 설정 정 보 를 저장 합 니 다.예 를 들 어 vm 파일 의 로드 위치 등 입 니 다.
4.vm 파일 을 정의 합 니 다.필요 에 따라 첫 번 째 Servlet 의 handle Request 방법 에서 vm 에 필요 한 매개 변 수 를 Context 매개 변수 대상 으로 전송 합 니 다.
정의 Servlet
package com.tom.servlets;
import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.VelocityViewServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestVelocityViewServlet extends VelocityViewServlet {
@Override
protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
ctx.put("key", "This is value for the key");
ctx.put("favoriteFruit","All");
ctx.put("elements", new String[]{"One", "Two", "Three"});
return getTemplate("abc.vm");
}
}
웹.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Velocity</servlet-name>
<servlet-class>com.tom.servlets.TestVelocityViewServlet</servlet-class>
<!-- Velocity velocity.properties , web -->
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Velocity</servlet-name>
<url-pattern>/servlets/velocity</url-pattern>
</servlet-mapping>
</web-app>
Velocity 프로필 velocity.properties 설정
resource.loader=webapp
webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader
#relative to the web context, has the same parent directory with WEB-INF
#that is, vm and WEB-INF are sibling folders
webapp.resource.loader.path=/vm
위 에 vm 파일 의 로드 경 로 를 지정 하 였 습 니 다.Webapp ResourceLoader 이기 때문에 웹 응용 루트 에 비해 계산 하기 시 작 했 습 니 다.즉,vm 와 WEB-INF 동급 디 렉 터 리 입 니 다.
vm 파일 정의
<!--abc.vm-->
<html>
<body>
<p>$key</p>
#foreach($elem in $elements)
<li>$elem</li>
#end
<div>
#include("def.vm")
</div>
</body>
</html>
<!--def.vm-->
What's your favorite fruit? $favoriteFruit
결 과 는 velocity 라 는 servlet 에 방문 하여 얻 은 결 과 는:
This is value for the key
What's your favorite fruit? $favoriteFruit
총결산
Servlet+Velocity 기반 웹 응용 디 렉 터 리 구조:
|-web
|- WEB-INF
|- web.xml
|- velocity.properties
|- vm
|- abc.vm
|- def.vm
문제.
위의 디 스 플레이 결과 에서 주목 해 야 할 것 은 favoriteFruit 가 교체 되 지 않 았 다 는 것 입 니 다.이 를 통 해 Context 가 정의 한 값 이 전달 되 지 않 았 음 을 알 수 있 습 니 다!그러면 어떻게 변수 전달 을 합 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ 3300 Tour de FranceAt any time the chain connects one of the front sprockets to one of the rear sprockets. The drive ratio -- the ratio of ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.