tomcat - 如何在 Grails 捆绑的 tomcat 中设置 useBodyEncodingForURI

标签 tomcat grails

我是 Grails 的新手。我的 JDBC url (Datasource.groovy) 是

development {
    dataSource {
        dbCreate = "create-drop" 
        url = "jdbc:mysql://localhost/test?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
    }
}

我已遵循 Grails not encoding the unicode characters properly 中的建议我手动将记录更新为汉字。它在浏览器中正确显示。但是当我把它存回去时,我得到了垃圾。所以我认为数据库连接已经在 UTF-8 中,但表单数据未在 UTF-8 中解码。修复似乎是设置 useBodyEncodingForURI 但我在 Grails 包中找不到 server.xml 文件。

我能做什么?

最佳答案

没有 server.xml - 一切都以编程方式配置。有几个 Hook ,您可以在其中进行一些更改,所以这实际上非常简单。

在您应用的 scripts 文件夹中创建一个名为 _Events.groovy 的文件。添加此代码:

eventConfigureTomcat = { tomcat ->
   tomcat.connector.useBodyEncodingForURI = true
}

这是 ConfigureTomcat 事件的 Grails/Gant 事件回调处理程序,它发送管理大量逻辑的 org.apache.catalina.startup.Tomcat 实例对于嵌入式启动。它与相同版本的服务器安装代码相同,但有一些帮助程序类使事情变得更容易。

快速查看 API,您会看到 Tomcat 实例有一个 getConnector 访问器,用于配置为端口 8080 HTTP 1.1 的 Connector连接器,也删除项目,但在常规 Tomcat 中,这里也是如此。

除了编辑现有的已配置类之外,您还可以注册新的 servlet、过滤器,甚至整个 WAR 文件。

关于tomcat - 如何在 Grails 捆绑的 tomcat 中设置 useBodyEncodingForURI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26544915/

相关文章:

tomcat - 如何将apache tomcat的server.xml拆分成几个单独的文件?

java - 带有资源注释的 JNDI 查找始终为 NULL

tomcat - service tomcat start/stop 和 ./catalina.sh run/stop 有什么区别

javascript - Grails 使用 gsp 片段作为 javascript 函数的 html 模板

grails - 如何避免groovy/XMLSlurper从节点剥离html标签?

linux - 使用spring在linux tomcat上部署war文件

tomcat - Docker 仅在虚拟机上而不是在物理机上?

hibernate - GORM,获取org.hibernate.HibernateException:在afterLoad()中打开事务时找到同一集合的两个表示形式

grails - 挂接到插件服务电话

grails - 如何从域类中定义的对象构建extjs表单