springmvc 3.1 통합 속도
1. 먼저 웹. xml 에 MVC 의 통합 을 추가 합 니 다.
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
contextConfigLocation 초기 화 인자 가 없 으 면 classpath 에서 {servlet - name} - servlet. xml 설정 파일 을 찾 습 니 다.
public String getNamespace() {
return (this.namespace != null ? this.namespace : getServletName() + DEFAULT_NAMESPACE_SUFFIX);
}
2. spring - mvc. xml 설정 에서 velocity 설정 속성 과 보기 분석
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm"/>
<property name="configLocation" value="classpath:velocity.properties"/>
</bean>
velocity. properties 에 velocity 속성 설정:
#encoding
input.encoding =UTF-8
output.encoding=UTF-8
contentType=text/html;charset=UTF-8
#autoreload when vm changed
file.resource.loader.cache=false
file.resource.loader.modificationCheckInterval =1
velocimacro.library.autoreload=true
#macro
velocimacro.library=macro.vm
#velocimacro.library =/WEB-INF/vm/macro.vm
#layout
#tools.view.servlet.layout.directory =/WEB-INF/vm/layout/
#tools.view.servlet.error.template=/WEB-INF/vm/error.vm
#tools.view.servlet.layout.default.template=default.vm
runtime.log.logsystem.class=org.springframework.ui.velocity.CommonsLoggingLogSystem
runtime.log=com.sa
runtime.log.error.stacktrace=true
runtime.log.warn.stacktrace=true
runtime.log.info.stacktrace=false
runtime.log.invalid.reference=true
위의 velocimacro. library 설정 macro 는 classpath 에 놓 여 있 습 니 다. 다른 경로 가 있 으 면 velocimacro. library = / WEB - INF / vm / macro. vm 와 같은 이상 을 던 집 니 다.이것 은 내 가 배치 하 는 데 문제 가 있 는 지, 달인 을 지나 가서 구 해 달라 고 부탁 했다.
VelocityException: Velocimacro : Error using VM library : /WEB-INF/vm/macro.vm
물론 이 속성 들 은 spring - mvc. xml 에서 설정 할 수 있 습 니 다.
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm"/>
<property name="configLocation" value="classpath:velocity.properties"/>
<!--
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<prop key="contentType">text/html;charset=UTF-8</prop>
<prop key="file.resource.loader.cache">false</prop>
<prop key="file.resource.loader.modificationCheckInterval">1</prop>
<prop key="velocimacro.library.autoreload">true</prop>
<prop key="velocimacro.library">macro.vm</prop>
<prop key="runtime.log.logsystem.class">org.apache.velocity.runtime.log.SimpleLog4JLogSystem</prop>
<prop key="runtime.log">com.sa</prop>
<prop key="runtime.log.error.stacktrace">true</prop>
<prop key="runtime.log.warn.stacktrace">true</prop>
<prop key="runtime.log.info.stacktrace">false</prop>
<prop key="runtime.log.invalid.reference">true</prop>
</props>
</property>
-->
</bean>
물론 layot 도 지원 합 니 다: 위의 해상도 기 는 수정 이 필요 합 니 다:
org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver
속성 증가:
<property name="layoutUrl" value="layout.vm"/>
여기 서 주의해 야 할 것 은 layot. vm 과 layot. vm 에 관련 된 템 플 릿 파일, 예 를 들 어 head. vm, bottom. vm 등 은 classpath 경로 에 함께 놓 아야 합 니 다.그렇지 않 으 면 해당 템 플 릿 을 찾 을 수 없 는 이상 을 던 집 니 다.
3. velocity 의 보기 해석 기
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".vm"/>
<!-- springMacro、 servlet -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="exposeRequestAttributes" value="true"/>
<property name="exposeSessionAttributes" value="true"/>
<property name="contentType" value="text/html;charset=UTF-8" />
<!-- spring -->
<property name="dateToolAttribute" value="dateTool"/>
<!-- velocity toolbox -->
<property name="toolboxConfigLocation" value="/WEB-INF/vm/toolbox.xml"/>
</bean>
위의 velocity toolbox 설정 에서 toolbox. xml 을 다른 위치 에 두 면 NullPointer Exception 을 볼 수 있 습 니 다.
http://forum.springsource.org/showthread.php?30783-Exposing-Velocity-generic-tool-results-in-NullPointer
다음은 사용자 정의 toolbox. xml 입 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<tool>
<key>dateUtil</key>
<scope>application</scope>
<class>com.sa.common.util.DateUtil</class>
</tool>
</toolbox>
4. 테스트:
사용자 정의 매크로 와 toolbox 를 테스트 합 니 다.
macro 에 간단 한 테스트 를 썼 습 니 다:
#macro(test)
nnnnnnnnnnnn
#end
com. sa. comon. util. Dateutil 에서 간단 한 테스트 방법 이 있 습 니 다.
public static String test(String str){
return "this is a test. hello "+str;
}
테스트 vm 에서: index. vm
#test()
<br>
$!dateUtil.test("velocity")
결과:
쓰다
nnnnnnnnnnnn
this is a test. hello velocity
5. 일부 이상 발생:
물론 위 에서 이미 몇 가지 말 을 했 지만 아래 에는 또 있다.
java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeA
이것 은 다른 버 전의 spring jar 가방 을 넣 었 습 니 다.보다
http://fedora-commons.1317035.n2.nabble.com/fcrepo-user-java-lang-NoSuchMethodError-org-springframework-core-GenericTypeResolver-resolveTypeArguh-td7002643.html
toolbox 를 도입 할 때 컴 파일 오류:
/java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet
이것 은 매우 간단 하 잖 아 요. digester 의존 을 넣 었 지만 3.2 버 전 을 넣 기 시 작 했 습 니 다. 항상 잘못 보 고 했 습 니 다. 나중에 이 버 전의 가방 구조 가 달라 진 것 을 발 견 했 습 니 다. 아니면 바 뀌 었 습 니까?
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
자, 지금 은 이 정도 입 니 다. 좀 더 공부 하고 기록 하 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.