- - PR -
Webアプリケーションを日本語コードに対応させる方法
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-12-18 18:08
JBOSS3.2.2(Tomcatバンドル版)+Struts1.1でWebアプリケーションを作成しています。
付属するStruts開発の雛形となるstruts-blank.warをJBOSSのdeploy/dms.warディレク トリ(dms.warは勝手につけた名前)に展開し、そこに肉付けしながら実装しています。 で、日本語コードに対応させる為に、Tomcatに付属するサンプル SetCharacterEncodingFilterを使用して設定しようとしましたがJBOSS起動時のパース の時点でエラーが発生します。しかし、色々なサイトを参照してみても、どこもfilter の設定に関しては同じようで、原因がわかりません。対処方法をご存知の方いましたら、 教えていただけませんか。 [問題が発生するweb.xmlの設定] --------web.xmlの中身-------- <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> ・・・・・略・・・・・ <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> --------web.xmlの中身終わり-------- <filter>と<filter-mapping>の部分をweb.xmlに追加しました。 SetCharacterEncodingFilter.class は /WEB-INF/classes/filters においてあります。 --------JBOSS起動時のエラー-------- at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Er rorHandlerWrapper.java:232) at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper. java:173) at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter. java:362) at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter. java:296) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDVal idator.java:2959) at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator .java:918) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElemen t(XMLDocumentFragmentScannerImpl.java:1145) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement( XMLDocumentFragmentScannerImpl.java:988) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1446) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM LDocumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP arserConfiguration.java:529) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardP arserConfiguration.java:585) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j ava:1148) at org.apache.commons.digester.Digester.parse(Digester.java:1548) at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextCo nfig.java:282) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:63 9) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi g.java:243) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl eSupport.java:166) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3 568) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase .java:821) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:80 7) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579) at org.jboss.web.tomcat.tc4.EmbeddedTomcatService.createWebContext(Embed dedTomcatService.java:530) at org.jboss.web.tomcat.tc4.EmbeddedTomcatService.performDeploy(Embedded TomcatService.java:309) at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:42 at org.jboss.deployment.MainDeployer.start(MainDeployer.java:832) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:642) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605) at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea nDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy6.deploy(Unknown Source) at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen tScanner.java:302) at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS canner.java:476) at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread. doScan(AbstractDeploymentScanner.java:201) at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(A bstractDeploymentScanner.java:274) at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:1 92) at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea nDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl ler.java:976) at $Proxy0.start(Unknown Source) at org.jboss.system.ServiceController.start(ServiceController.java:394) at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea nDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy4.start(Unknown Source) at org.jboss.deployment.SARDeployer.start(SARDeployer.java:226) at org.jboss.deployment.MainDeployer.start(MainDeployer.java:832) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:642) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605) at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:589) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea nDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) at $Proxy5.deploy(Unknown Source) at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:384) at org.jboss.system.server.ServerImpl.start(ServerImpl.java:291) at org.jboss.Main.boot(Main.java:150) at org.jboss.Main$1.run(Main.java:395) at java.lang.Thread.run(Thread.java:534) --------エラー終わり-------- |
|
投稿日時: 2003-12-18 18:24
filterとfilter-mappingの記述位置はこのとおりですか? だとすると、おそらく記述位置が
まずいと思います。 web-app要素の内容は、 <!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)> と定義されていますので、この順番を守る必要があります。 |
|
投稿日時: 2003-12-18 19:13
ukさん、ありがとうございました。
web.xmlには記述位置のルールがあったのですね。勉強不足でした。非常に助かり ました。ありがとうございました。 で、web.xmlにSetCharacterEncodingFilterのfilter設定も問題なさそうなので すが、日本語化されません。日本語部分が?????になってしまいます。OSは RedHatLinux9なので、「Shift_JIS」を設定していましたが、試しにJSPの先頭を、 <%@ page contentType="text/html; charset=EUC-JP" %> にし、web.xmlに <param-value>EUC-JP</param-value> を設定しても駄目でした。 参考にした以下サイト、 http://www.zdnet.co.jp/enterprise/0311/28/epn02_4.html#7 にしたがって ・SetCharacterEncodingFilterのファイルを置いた(Ant実行後にclasses/filter以下に SetCharacterEncodingFilter.classがちゃんと作成されます) ・web.xmlを編集する をしましたが、他に何か設定しなければならない事があるのでしょうか? |
|
投稿日時: 2003-12-18 19:15
すいません。修正です。
誤 ・SetCharacterEncodingFilterのファイルを置いた(Ant実行後にclasses/filter以下に 正 ・SetCharacterEncodingFilterのファイルを置いた(Ant実行後にclasses/filters以下に です。filtersでした。 |
|
投稿日時: 2004-01-07 15:25
自己レスです。
PostgreSQLに格納した日本語文字列を取得して表示する際に文字化けしていたので すが(この部分を質問にちゃんと記入していませんでした。)、データベースを EUC_JPで作成し直したところ、文字化けせずに表示されました。filter機能は正常 に動作していたようで、データベースの方の設定に問題があったようです。 ukさん、ご教授ありがとうございました。 |
1
