2014-11-06 2 views
3

У меня есть сервер приложений GlassFish 3.1.2, и я начал использовать JSP-страницы, поэтому я заинтересован в правильной настройке кодировки для UTF-8.Что такое стандартный заголовок java java.exe для получения <jsp-config> тега?

Моя оригинальная разработка web.xml файл начал с

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 

, но потом я добавил следующее к нему, чтобы заставить UTF-8 кодировке

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 

и мой файл журнала GlassFish 3.1.2 Сервер сообщил

Element type <jsp-config> must be declared web.xml 

В попытке исправить ошибку я изменил начало своего web.xml файл, который будет

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
version="2.4" > 

и теперь я получаю ошибку GlassFish сервер

Invalid Deployment Descriptors in Deployment descriptor file WEB-INF/web.xml ... 
One of '{"http://java.sun.com/xml/ns/j2ee":servlet-class, 
     "http://java.sun.com/xml/ns/j2ee":jsp-file}' is expected. 

Является ли мой синтаксис выключен? Как получить <jsp-config>, работающий с заголовком в файле xml.web для версии 2.3?

UPDATE 1

Если я запускаю файл web.xml в

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_3.xsd" 
    version="2.3"> 

<display-name>myApp</display-name> 
<description>My Application</description> 

<listener> 
    <listener-class>...</listener-class> 
</listener> 

<servlet> 
    <servlet-name>MessageBrokerServlet</servlet-name> 
    <display-name>MessageBrokerServlet</display-name> 
    <servlet-class>...</servlet-class> 
    <init-param> 
     <param-name>...</param-name> 
     <param-value>...</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>Reg</servlet-name> 
    <servlet-class>com.mydomain.servlet.Reg</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Reg</servlet-name> 
    <url-pattern>/reg</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
</welcome-file-list> 

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 

</web-app> 

Я вижу эту ошибку:

[#|2014-11-06T13:03:59.779-0800|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=1;_ThreadName=Thread-2;|DPL8015: 

Invalid Deployment Descriptors in Deployment descriptor file WEB-INF/web.xml in archive [myapp]. Line 7 Column 41 -- s4s-elt-character: Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'var _U = "undefined"; var g_HttpRelativeWebRoot = "/ocom/";'.|#]

[#|2014-11-06T13:03:59.779-0800|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=1;_ThreadName=Thread-2;|DPL8005: Deployment Descriptor parsing failure : s4s-elt-character: Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'var _U = "undefined"; var g_HttpRelativeWebRoot = "/ocom/";'.|#]

UPDATE 2

С другой стороны, у меня также есть glassfish-web.xml файл в каталоге WEB-INF. Если я верну файл web.xml обратно к оригиналу и поместите раздел <jsp-config> в glassfish-web.xml вместо web.xml, сервер начнет нормально работать. Какой файл <jsp-config> должен зайти, или это имеет значение?

ответ

3

Чтобы настроить JSP с UTF-8, вам нужно использовать, в первой строке СПЯ:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

Вы должны использовать это, но с вашей версией:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

Пример мой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
    <display-name>base</display-name> 
    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       /WEB-INF/spring/spring-mvc-dispatcher.xml 
      </param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring/spring-database.xml, 
      /WEB-INF/spring/spring-security.xml 
     </param-value> 
    </context-param> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 
+0

thanks @stel, где я могу найти правильный синтаксис для использования с версией 2.3? – user46688

+0

@ user46688 изменить _3_0.xsd и version = "3.0" на _2_3.xsd и version = "2.3" – Arturo

+0

thanks @stel, с этими изменениями я получаю эту ошибку: 'Небелые символы не допускаются в элементах схемы, кроме 'xs: appinf o' и 'xs: documentation'. Saw 'var _U = "undefined"; ' – user46688

0

Для сервлета использования на уровне 3,1 апи:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1" 
    metadata-complete="true">