用于语义搜索的 Servlet 链接

发布于 2024-12-01 13:31:07 字数 5837 浏览 0 评论 0原文

我正在从事一个学术语义网项目,因此我设计并正在尝试实现一个网站,以便用户可以执行“语义搜索”。我使用 Jena 包编写了两个 servlet,并且需要将这两个 servlet 链接起来。

package controlador;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.compObjA.GeraSequenciaBean;
import com.compObjA.model.ConceitosSelecionados;
import com.compObjA.model.ListaConceitos;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.ontology.OntTools.Path;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.util.iterator.Filter;

/**
 * Servlet implementation class GeraSequenciaServlet
 */
public class GeraSequenciaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public GeraSequenciaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        OntModel m_model = ModelFactory
                .createOntologyModel(OntModelSpec.OWL_DL_MEM);
        final Filter<Statement> ANY = Filter.any();

        // RDFNode end;
        String c1, c2; // define as variáveis c1 e c1, conceitos inicial e final
        String NS = "http://example.com/test#"; // define a URI

        // dois parametros para definir a lista dos conceitos
        c1 = request.getParameter(ConceitosSelecionados.getConceitoInicial());
        c2 = request.getParameter(ConceitosSelecionados.getConceitoFinal());

        // cria os nós inicial e final do caminho
        Resource start1 = m_model.createResource(NS + c1);
        RDFNode end = m_model.createResource(NS + c2);

        // instancia o gerador de sequencias & gera o caminho
        GeraSequenciaBean geraSequencia = new GeraSequenciaBean();
        Path caminho = geraSequencia
                .generateSequence(m_model, start1, end, ANY);

        // instancia a lista de conceitos e cria uma lista de conceitos a partir
        // do caminho
        ListaConceitos listaConceitos = new ListaConceitos();
        List<String> sugestao = listaConceitos.getListaConceitos(caminho);
        request.setAttribute("sugestao", sugestao);
        // chama o dispatcher e cria o jsp para mostrar a sequencia de conceitos
        RequestDispatcher view = request
                .getRequestDispatcher("SequenciaDosConceitos.jsp");
        // passa para frente.
        view.forward(request, response);
    }
}

package controlador;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.compObjA.model.ConceitosSelecionados;
import com.compObjA.model.SelecionaConceitosForm;

/**
 * Servlet implementation class ControlaSelecaoConceitosUsuario
 */
public class ControlaSelecaoConceitosUsuario extends HttpServlet {
    private static final long serialVersionUID = 1L;

    // Constantes ----------------------

    private static final String VIEW = "selecionaConceitos.jsp";
    private static final String ATTRIBUTE_FORM = "selecionaConceitosForm";
    private static final String ATTRIBUTE_SELECTED = "conceitosSelecionados";

    // Variaveis -----------------------------------------

    private ConceitosSelecionados conceitosSelecionados;

    // Actions --------------------

    public ControlaSelecaoConceitosUsuario() {
        super();
        // TODO Auto-generated constructor stub

    }

    @Override
    public void init() throws ServletException {
        // Obtém o UserDAO do DAOFactory por meio do Config.

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        request.getRequestDispatcher(VIEW).forward(request, response);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        // Prepara o formBean

        SelecionaConceitosForm selecionaConceitosForm = new SelecionaConceitosForm(
                conceitosSelecionados);
        request.setAttribute(ATTRIBUTE_FORM, selecionaConceitosForm);

        // Processa a solicitação e obtém os resultados
        ConceitosSelecionados conceitosSelecionados = selecionaConceitosForm
                .selecaoUsuario(request);
        request.setAttribute(ATTRIBUTE_SELECTED, conceitosSelecionados);

        String destino = "/GeraSequenciaServlet";
        request.getRequestDispatcher(destino).forward(request, response);

    }

}

有一个例外。有人可以给我提示吗?

I am working in an academic Semantic Web project, so I have designed and I am trying to implement a web site in order users can perform "semantic searches". I wrote two servlets using Jena package, and I need these two servlets chained.

package controlador;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.compObjA.GeraSequenciaBean;
import com.compObjA.model.ConceitosSelecionados;
import com.compObjA.model.ListaConceitos;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.ontology.OntTools.Path;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.util.iterator.Filter;

/**
 * Servlet implementation class GeraSequenciaServlet
 */
public class GeraSequenciaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public GeraSequenciaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        OntModel m_model = ModelFactory
                .createOntologyModel(OntModelSpec.OWL_DL_MEM);
        final Filter<Statement> ANY = Filter.any();

        // RDFNode end;
        String c1, c2; // define as variáveis c1 e c1, conceitos inicial e final
        String NS = "http://example.com/test#"; // define a URI

        // dois parametros para definir a lista dos conceitos
        c1 = request.getParameter(ConceitosSelecionados.getConceitoInicial());
        c2 = request.getParameter(ConceitosSelecionados.getConceitoFinal());

        // cria os nós inicial e final do caminho
        Resource start1 = m_model.createResource(NS + c1);
        RDFNode end = m_model.createResource(NS + c2);

        // instancia o gerador de sequencias & gera o caminho
        GeraSequenciaBean geraSequencia = new GeraSequenciaBean();
        Path caminho = geraSequencia
                .generateSequence(m_model, start1, end, ANY);

        // instancia a lista de conceitos e cria uma lista de conceitos a partir
        // do caminho
        ListaConceitos listaConceitos = new ListaConceitos();
        List<String> sugestao = listaConceitos.getListaConceitos(caminho);
        request.setAttribute("sugestao", sugestao);
        // chama o dispatcher e cria o jsp para mostrar a sequencia de conceitos
        RequestDispatcher view = request
                .getRequestDispatcher("SequenciaDosConceitos.jsp");
        // passa para frente.
        view.forward(request, response);
    }
}

and

package controlador;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.compObjA.model.ConceitosSelecionados;
import com.compObjA.model.SelecionaConceitosForm;

/**
 * Servlet implementation class ControlaSelecaoConceitosUsuario
 */
public class ControlaSelecaoConceitosUsuario extends HttpServlet {
    private static final long serialVersionUID = 1L;

    // Constantes ----------------------

    private static final String VIEW = "selecionaConceitos.jsp";
    private static final String ATTRIBUTE_FORM = "selecionaConceitosForm";
    private static final String ATTRIBUTE_SELECTED = "conceitosSelecionados";

    // Variaveis -----------------------------------------

    private ConceitosSelecionados conceitosSelecionados;

    // Actions --------------------

    public ControlaSelecaoConceitosUsuario() {
        super();
        // TODO Auto-generated constructor stub

    }

    @Override
    public void init() throws ServletException {
        // Obtém o UserDAO do DAOFactory por meio do Config.

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        request.getRequestDispatcher(VIEW).forward(request, response);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        // Prepara o formBean

        SelecionaConceitosForm selecionaConceitosForm = new SelecionaConceitosForm(
                conceitosSelecionados);
        request.setAttribute(ATTRIBUTE_FORM, selecionaConceitosForm);

        // Processa a solicitação e obtém os resultados
        ConceitosSelecionados conceitosSelecionados = selecionaConceitosForm
                .selecaoUsuario(request);
        request.setAttribute(ATTRIBUTE_SELECTED, conceitosSelecionados);

        String destino = "/GeraSequenciaServlet";
        request.getRequestDispatcher(destino).forward(request, response);

    }

}

I got an exception. Could someone give me a hint?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

口干舌燥 2024-12-08 13:31:07

您应该使用 RequestDispatcher#include() 每当您想从 Servlet 中调用另一个 Servlet,然后 返回(!)。您不应使用 RequestDispatcher#forward() 为此。

另请参阅:

You should use RequestDispatcher#include() whenever you want to invoke another servlet from insie a servlet and then return(!). You should not use RequestDispatcher#forward() for that.

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文