2017-01-12 65 views
7

हम जावा 6. साथ JBoss 7.1.3.Final उपयोग कर रहे हैं मैं सभी JSP पृष्ठों में UTF-8 पेज एन्कोडिंग आवेदन करना चाहते हैं हमारी साइट पर कार्य किया, तो मैं हमारे web.xml फ़ाइल को यह जोड़ामैं कैसे निर्दिष्ट करूं कि मैं अपने जेएसपी-कॉन्फ़िगरेशन निर्देश को हमारे आवेदन में दी गई सभी जेएसपी पृष्ठों पर लागू करना चाहता हूं?

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

जिसके परिणामस्वरूप नीचे दी गई त्रुटि होती है।

Message: 
java.lang.StringIndexOutOfBoundsException: String index out of range: 0 

StackTrace: 
org.apache.jasper.JasperException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0 
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:581) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:397) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:402) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:346) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) 
    at org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:63) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) 
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
    at io.undertow.jsp.JspFileHandler.handleRequest(JspFileHandler.java:32) 
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) 
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72) 
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284) 
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263) 
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174) 
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:198) 
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:784) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0 
    at java.lang.String.charAt(String.java:658) 
    at org.apache.jasper.compiler.JspUtil.makeJavaIdentifier(JspUtil.java:830) 
    at org.apache.jasper.compiler.JspUtil.makeJavaIdentifier(JspUtil.java:803) 
    at org.apache.jasper.JspCompilationContext.getServletClassName(JspCompilationContext.java:399) 
    at org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:580) 
    at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:438) 
    at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:406) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:645) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358) 
    ... 69 more 

हालांकि हमारे पृष्ठों निम्नलिखित फ़ाइल पथ के साथ जमा हो जाती है ...

project/src/main/webapp/WEB-INF/views/folder1/index.jsp 

हमारे URL प्रतिमानों .jsp में खत्म नहीं है। वास्तव में, वे केवल शब्द हैं (उदा। "/ फ़ोल्डर 1/अनुक्रमणिका")। हालांकि, जब मैंने इस निर्देश को

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

मेरा एप्लिकेशन हालांकि मेरे सर्वर को रीबूट करने के बाद शुरू करने में विफल रहा। हम कैसे निर्दिष्ट करते हैं कि हम अपनी साइट से सेवा किए गए सभी जेएसपी पृष्ठों पर आवेदन करने का निर्देश चाहते हैं?

+0

में इस फिल्टर मैंने सोचा था कि "* .jsp" पैटर्न केवल उन URL में "* .jsp" समाप्त करने के लिए लागू होते हैं। हालांकि फ़ाइलों को मेरे फाइल सिस्टम पर ".jsp" नाम दिया गया है, फिर भी उन यूआरएल जो उन लोगों को आह्वान करते हैं, वे नहीं हैं (वे केवल शब्द हैं, जैसे '/ dir1/path1 ")।" .jsp "उन यूआरएल पर लागू होगा जो" .jsp "? – Dave

+0

इस https://developer.jboss.org/thread/265872 – gladiator

+0

देखें जेएसपी स्पेक (2.3) कहता है कि आपको जेएसपी को हल करने वाले यूआरएल पैटर्न का उपयोग करना चाहिए। लेकिन यह स्पष्ट नहीं है कि कैसे servlet- मैपिंग तत्व। आपके पास कुछ सर्वलेट-मैपिंग निर्देश होना चाहिए, क्या आप, क्योंकि आपके जेएसपी को .jsp – gsl

उत्तर

0

फ़िल्टर का उपयोग करके आप पेज एन्कोडिंग लागू कर सकते हैं।

public void doFilter(ServletRequest request,ServletResponse response, FilterChain filterChain) throws IOException, ServletException { 
      request.setCharacterEncoding(encoding); 
    //    response.setContentType("text/html;charset=UTF-8"); 
        response.setCharacterEncoding(encoding); 
      filterChain.doFilter(request, response); 

     } 

     public void init(FilterConfig filterConfig) throws ServletException { 
      String encodingParam = filterConfig.getInitParameter("encoding"); 
      if (encodingParam != null) { 
       encoding = encodingParam; 
      } 
     } 

रजिस्टर web.xml

+0

धन्यवाद लेकिन हाथ में सवाल को संबोधित करते हुए, मैं एक यूआरएल पैटर्न कैसे लिखूं जो सभी यूआरएल पर लागू होता है, "/* "काम नहीं लग रहा है? – Dave

संबंधित मुद्दे