用于语义搜索的 Servlet 链接
我正在从事一个学术语义网项目,因此我设计并正在尝试实现一个网站,以便用户可以执行“语义搜索”。我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用
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 useRequestDispatcher#forward()
for that.See also: