首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet链接用于语义搜索

Servlet链接用于语义搜索
EN

Stack Overflow用户
提问于 2011-08-26 01:10:31
回答 1查看 492关注 0票数 0

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

代码语言:javascript
复制
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);
    }
}

代码语言:javascript
复制
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);

    }

}

我有个例外。有人能给我个提示吗?

EN

回答 1

Stack Overflow用户

发布于 2011-08-26 01:13:05

每当您想要从一个servlet调用另一个servlet,然后返回(!)时,都应该使用RequestDispatcher#include()。您不应该使用RequestDispatcher#forward()来实现这一点。

另请参阅:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7194427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档