2017-06-07 4 views
0

別のサーブレットクラス内でparserAction()メソッドを呼び出そうとすると、空の配列が返されます。私はサーブレットの中で名詞を印刷できません。しかし、MAIN METHOD名詞配列を持つこのクラスの中では、正しく印刷されています。これの理由は何ですか?メインメソッドでパーサメソッドを実行する

package com.books.servlet; 

import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.HashSet; 
import java.util.Set; 

import com.sun.corba.se.impl.orb.ParserAction; 

import opennlp.tools.cmdline.parser.ParserTool; 
import opennlp.tools.parser.Parse; 
import opennlp.tools.parser.Parser; 
import opennlp.tools.parser.ParserFactory; 
import opennlp.tools.parser.ParserModel; 

public class ParserTest { 



    public static Set<String> nounPhrases = new HashSet<>(); 


    public String line = "I need the java book"; 



    public void getNounPhrases(Parse p) { 
     if (p.getType().equals("NN") || p.getType().equals("NNS") || p.getType().equals("NNP") 
       || p.getType().equals("NNPS")) { 
      nounPhrases.add(p.getCoveredText()); 
      // System.out.println(p.getCoveredText()); 
     } 

     for (Parse child : p.getChildren()) { 
      getNounPhrases(child); 

     } 
    } 

    public void parserAction() throws Exception { 
     InputStream is = new FileInputStream("en-parser-chunking.bin"); 
     ParserModel model = new ParserModel(is); 
     Parser parser = ParserFactory.create(model); 
     Parse topParses[] = ParserTool.parseLine(line, parser, 1); 
     for (Parse p : topParses) { 
      // p.show(); 
      getNounPhrases(p); 
     } 
    } 

     public static void main(String[] args) throws Exception { 
      new ParserTest().parserAction(); 
      System.out.println("List of Noun Parse : "+nounPhrases); 

     } 




    } 

以下は私のサンプルサーブレットクラスです。それは私に空の配列を示しています[]

public class test extends HttpServlet { 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
....... 
....... 
....... 
ParserTest pt = new ParserTest(); 
pt.parserAction(); 

System.out.println("List of Noun Parse : "+pt.nounPhrases); 
System.out.println("List of Noun Parse : "+ParserTest.nounPhrases); 
} 
} 

ここでは、メインメソッドを実行せずに名詞を抽出する必要があります。私はWebアプリケーションを開発しています。これらの抽出された名詞を私のサーブレットクラスの中に表示する必要があります。また、サーブレットがあり、

response.getWriter().println("Whatever you want to write in the response"); 

をしかし、あなたのコードは非常に良いではないとして最初、私はいくつかの良いのJavaの本を読むことをお勧めします:あなたが行うことによって、たとえば、あなたが反応して欲しいものを書く必要が

答えて

0

JSPやJSF、JAX-RS for RESTアプリケーション、JAX-WS for SOAPアプリケーションなど、他のテクノロジを使用しています...

+0

これは私に出力を与えます。 ..そのパーサメソッドは実行されていませんか?メインメソッドで試してみるとうまくいきますが、サーブレット内で実行されていません – user8048032

+0

コードを試してデバッグしてください。ParserTool/ParserModelが何をしているのか推測できません。コンテナを使用してWebアプリケーションを起動すると、現在のディレクトリが異なり、このような場合にコードがクラッシュしないために、ファイル "en-parser-chunking.bin"が見つからないと推測しますおそらくすべきです。 –

関連する問題