2017-07-11 15 views
1
package de.gdv.sp.configuration; 

import org.springframework.boot.web.servlet.ServletRegistrationBean; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import com.captcha.botdetect.web.servlet.CaptchaServlet; 

@Configuration 

public class CaptchaConfiguration { 

    @Bean(name = "captchaServlet") 
    public ServletRegistrationBean captchaServlet() { 

     return new ServletRegistrationBean(new CaptchaServlet(), "/kontakt"); 
    } 
} 

私たちの春のMVC /ブートproject.WhenでBotDetectキャプチャを実装しようとしている私は、私はいつも次の画面を取得します(web.xmlファイルなし)注釈でサーブレットを作成しようとしました:screenshot of http://localhost:8080/kontakt不明なコマンド-Spring MVC

さらに、このcaptchaのHTMLコードを書くと、次の結果が得られます。 Botdetect Captcha does not show picture

<botDetect:captcha id="exampleCaptcha"/> 
 

 
<div class="validationDiv"> 
 
    <input id="captchaCode" type="text" name="captchaCode" 
 
      value="${basicExample.captchaCode}"/> 
 
    <input type="submit" name="submit" value="Submit" /> 
 
    <span class="correct">${basicExample.captchaCorrect}</span> 
 
    <span class="incorrect">${basicExample.captchaIncorrect}</span> 
 
</div>

どのように私はこの問題を解決することができますか?

[BotDetectキャプチャホームページ] [3]

答えて

0

Spring MVCのアプリケーションでカスタムサーブレットを登録するための標準的な方法があります。 WebApplicationInitializerを実装してInitializer Classを作成する必要があります。

import javax.servlet.ServletContext; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRegistration.Dynamic; 
    import org.springframework.web.WebApplicationInitializer; 
    import com.captcha.botdetect.web.servlet.CaptchaServlet; 
    public class MyServletInitializer implements WebApplicationInitializer { 
     @Override 
     public void onStartup(ServletContext servletContext) 
     throws ServletException { 
      Dynamic myServlet = servletContext.addServlet("kontakt", CaptchaServlet.class); 
      myServlet.addMapping("/kontakt"); 
     } 
    } 

あなたはWebApplicationInitializerの新しい実装 を作成することで、リスナーとフィルタを登録することができ、DispatcherServletの manually.Similarlyを登録するには、このアプローチを使用することができます。

1

次のいずれか試すことができます。

  1. がWebApplicationInitializerを拡張するクラスにあなたのBean定義を移動

    WebApplicationInitializer

    package de.gdv.sp.configuration; 
    
    import org.springframework.boot.web.servlet.ServletRegistrationBean; 
    import org.springframework.context.annotation.Bean; 
    import org.springframework.context.annotation.Configuration; 
    import com.captcha.botdetect.web.servlet.CaptchaServlet; 
    
    @Configuration 
    
    public class CaptchaConfiguration extends WebApplicationInitializer { 
    
        @Bean(name = "captchaServlet") 
        public ServletRegistrationBean captchaServlet() { 
    
         return new ServletRegistrationBean(new CaptchaServlet(), "/kontakt"); 
        } 
    } 
    
  2. を拡張します。

    @Configuration 
    public class WebXMLReplacement extends WebApplicationInitializer { 
    
        //other configurations 
    
        @Bean(name = "captchaServlet") 
        public ServletRegistrationBean captchaServlet() { 
    
         return new ServletRegistrationBean(new CaptchaServlet(), "/kontakt"); 
        } 
    } 
    
関連する問題