Tom*_*mas 9 java groovy spring spring-mvc gsp
我想在一个普通的Spring MVC应用程序中使用GSP视图而不是JSP/JSTL视图.我已经将groovy.servlet.TemplateServlet添加到web.xml,如下所示:
<servlet>
<servlet-name>GroovyTemplate</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>template.engine</param-name>
<param-value>groovy.text.GStringTemplateEngine</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GroovyTemplate</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
并设置一个Spring InternalResourceViewResolver来加载GPS文件.到目前为止一切正常,但是为了将模型中的值暴露给模板,我必须做一些技巧(继承TemplateServlet并将它们添加到ServletBinding中).
现在我的下一个障碍是默认情况下JSTL在使用c:out标记时转义XML,Grails有编解码器的概念来自动转义GSP中使用的值.默认情况下,上述模板方法不会逃脱,这需要开发人员非常小心地避免XSS漏洞.
是否有另一种(更好的)使用GSP的方法,包括在不使用Grails的普通Spring MVC应用程序中自动转义?
除了使用 a 之外TemplateServlet,您还可以使用 aGroovyPagesServlet来达到此目的(我还没有对此进行测试,只是查看了 Grails 的web.xml和类的代码)。
后者需要设置、命名groovyPagesTemplateEngine和输入Spring bean GroovyPagesTemplateEngine(GStringTemplateEngine在本例中)。
配置视图层InternalResourceViewResolver是正确的。您将分配一个GroovyPageView.
默认情况下,GSP 未配置为执行 HTML 输出转义。要配置它,请在Config.groovygrails.views.default.codec中将其从更改none为。请参阅这篇文章了解更多信息。html
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |