Spring mvc 如何在SPRING MVC POJO的字段中保存日文字符

Spring mvc 如何在SPRING MVC POJO的字段中保存日文字符,spring-mvc,internationalization,pojo,Spring Mvc,Internationalization,Pojo,我正在使用 春季MVC 春季安全 抑制 MySQl 我想为我的应用程序添加国际化支持。我想使用Hibernate将日语字符存储并检索到mySQL数据库 我已经将DB charset设置为UTF-8,并且还向hibernate-cfg.xml添加了属性 <property name="hibernate.connection.characterEncoding">UTF-8</property> 属性名称=hibernate.connection.characterEnc

我正在使用

春季MVC 春季安全 抑制 MySQl 我想为我的应用程序添加国际化支持。我想使用Hibernate将日语字符存储并检索到mySQL数据库

我已经将DB charset设置为UTF-8,并且还向hibernate-cfg.xml添加了属性

<property name="hibernate.connection.characterEncoding">UTF-8</property>
属性名称=hibernate.connection.characterEncoding>UTF-8

我已经完成了简单的POC,从java文件中,我能够声明一些带有日文字符的字符串变量,并且它们成功地插入到数据库中,通过日文字符进行搜索也可以正常工作

但在JSP文件中,我填写表单,所有字段值都以POJO的形式传递给控制器,POJO字段中的所有日本字符都自动转换为数字字符引用,如下面的示例所述

CreateUser.jsp

我没有在我的应用程序中使用任何字符编码过滤器

从jsp到控制器,它会自动转换为上述数字。。 我想要和用户在jsp中输入的完全相同的日语字符,并希望将其插入数据库并显示在页面上

我将所有用户输入字段的值作为POJO从JSP传递给控制器


请帮助…

您提到,您没有使用任何字符过滤器。请尝试在web.xml中添加一个。据我所知,要正确处理UTF-8,这是必须的。

您已经提到,您没有使用任何字符过滤器。请尝试在web.xml中添加一个。据我所知,要正确处理UTF-8,这是必须的。

您需要使用字符编码过滤器。 Spring框架有一个内置的字符编码过滤器。看见 只需将其放在web.xml中:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <!-- set forceEncoding to true if you want to override encoding of servlet -->
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value> 
    </init-param>
</filter>

将此筛选器放在筛选器链的第一位,以确保它在请求处理期间首先运行,在响应处理期间最后运行。

您需要使用字符编码筛选器。 Spring框架有一个内置的字符编码过滤器。看见 只需将其放在web.xml中:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <!-- set forceEncoding to true if you want to override encoding of servlet -->
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value> 
    </init-param>
</filter>

将此筛选器放在筛选器链的第一位,以确保它在请求处理期间首先运行,在响应处理期间最后运行。

最后,我成功地在基于Spring MVC的应用程序中实现了国际化支持

我遵循以下步骤,使用SpringMVC、Hibernate、MYSQL或Oracle数据库以及Jboss或webLogic作为应用服务器,将国际化支持整合到我的web应用程序中

比如说,我们希望为日语添加国际化支持,即用户应该能够在web表单中输入日语字符,并且应该以用户输入的相同格式保存,并且应该在web页面上以相同的语言显示

遵循以下步骤

确保在操作系统中安装了日语支持区域特定的安装。如果没有,请安装它

如果您使用的是任何IDE,则通过将文本编码更改为UTF-8,将IDE配置为支持日语。例如,如果您正在使用我的Eclipse,那么将文本文件编码更改为UTF-8。您可以通过此路径窗口->首选项->常规->工作区进行更改

将Spring framework的内置字符编码过滤器作为过滤器链web.xml中的第一个过滤器,以确保它在请求处理期间首先运行,在响应处理期间最后运行

web.xml

<filter>  
    <filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>
<init-param>
    <!-- set forceEncoding to true if you want to override encoding of servlet -->
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value> 
</init-param>
4通过在JSP顶部添加下面提到的代码,将JSP页面编码设置为UTF-8

5通过向Hibernate-cfg.xml添加以下属性,将Hibernate连接编码方案设置为UTF-8

<property name="hibernate.connection.characterEncoding">UTF-8</property>
注意:如果使用JBoss application server,请确保在数据库服务配置文件的连接url中附加了characterEncoding=UTF-8 例如,mysql数据库的mysql-ds.xml,如下所述

<datasources>

<local-tx-datasource>

    <jndi-name>WSCDS</jndi-name>

   <connection-url>
   jdbc:mysql://{ipaddress}:{port}/{database_name}?characterEncoding=UTF-8
   </connection-url>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>{username}</user-name>

<password>{password}</password>  

<metadata>

   <type-mapping>mySQL</type-mapping>

</metadata>

最后,我成功地在基于Spring MVC的应用程序中实现了国际化支持

我遵循以下步骤,使用SpringMVC、Hibernate、MYSQL或Oracle数据库以及Jboss或webLogic作为应用服务器,将国际化支持整合到我的web应用程序中

比如说,我们希望为日语添加国际化支持,即用户应该能够在web表单中输入日语字符,并且应该以用户输入的相同格式保存,并且应该在web页面上以相同的语言显示

遵循以下步骤

确保在操作系统中安装了日语支持区域特定的安装。如果没有,请安装它

如果您使用的是任何IDE,则通过将文本编码更改为UTF-8,将IDE配置为支持日语。例如,如果您正在使用我的Eclipse,那么将文本文件编码更改为UTF-8。您可以通过此路径窗口->首选项->常规->工作区进行更改

将Spring框架的内置字符编码过滤器放置为 筛选器链web.xml中的第一个筛选器,以确保它在请求处理期间首先运行,在响应处理期间最后运行

web.xml

<filter>  
    <filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>
<init-param>
    <!-- set forceEncoding to true if you want to override encoding of servlet -->
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value> 
</init-param>
4通过在JSP顶部添加下面提到的代码,将JSP页面编码设置为UTF-8

5通过向Hibernate-cfg.xml添加以下属性,将Hibernate连接编码方案设置为UTF-8

<property name="hibernate.connection.characterEncoding">UTF-8</property>
注意:如果使用JBoss application server,请确保在数据库服务配置文件的连接url中附加了characterEncoding=UTF-8 例如,mysql数据库的mysql-ds.xml,如下所述

<datasources>

<local-tx-datasource>

    <jndi-name>WSCDS</jndi-name>

   <connection-url>
   jdbc:mysql://{ipaddress}:{port}/{database_name}?characterEncoding=UTF-8
   </connection-url>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>{username}</user-name>

<password>{password}</password>  

<metadata>

   <type-mapping>mySQL</type-mapping>

</metadata>