从servlet调用jsp页面

5
我正在从一个servlet,DataPortal.java调用一个JSP,displayItems.jsp。首先我尝试使用RequestDispatcher这样做:
String url = "/displayItems.jsp";
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(toDo);
dispatcher.forward(req, res);

好的…控制权确实转移到了JSP页面,但它打印了整个JSP文件的内容(包括标记和其他所有内容),而不是以网页形式显示。接下来我尝试通过使用response.sendRedirect(url);来实现此目的,这次它给我一个空白页。我在这里做错了什么?JSP文件如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />        
<meta http-equiv="Content-Style-Type" content="text/css" />
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.js" type="text/javascript"></script>
</head>
    <body>
    <div>i am in display category</div>
    </body>
</html>

非常感谢您的帮助。

7个回答

3

试试这个

RequestDispatcher RequetsDispatcherObj =request.getRequestDispatcher("/displayItems.jsp");
RequetsDispatcherObj.forward(request, response);

1
我也尝试过那个。它没有起作用。它打印文件的内容而不是打开一个网页。 - sherry
文件内容意味着什么?你能获取到servlet的值吗? - Learner
是的,我已经获取到了servlet的值。好了...问题解决了。方法如下:我有一个DispatchServlet调用DataPortal,然后再调用displayItems.jsp。dispatcher.forward在DataPortal中无法工作的原因是因为我在DispatchServlet中使用dispatcher.include来调用DataPortal。当我将其更改为forward时,事情开始正常运行。所以谢谢你们的回应。 - sherry

1
问题已经解决。方法如下:我有一个DispatchServlet调用DataPortal,然后再调用displayItems.jsp。DataPortal中dispatcher.forward无法工作的原因是因为我在DispatchServlet中使用dispatcher.include来调用DataPortal。当我将其更改为forward时,事情开始正常运行。所以谢谢你们的回复。

0
RequestDispatcher dispatcher = getRequestDispatcher("URL to jsp");
dispatcher.forward(request, response);

0

RequestDispatcher dispatcher = getRequestDispatcher(request.getContextPath()+"/"); dispatcher.forward(request, response);

请求调度程序调度器 = getRequestDispatcher(request.getContextPath()+"/"); 调度器.转发(request, response);


0

那么 dispatcher.include(req, res) 怎么样?如果你想从 Servlet 调用 JSP。


0

forward 只是将请求转发到下一个页面,而 sendRedirect 会先返回生成它的页面,然后重定向到下一个页面。


哦,好的。这意味着我不应该尝试使用sendRedirect。但我仍然不明白为什么forward对我不起作用。 - sherry

0

有一种更简单的方法可以从Servlet调用.JSP文件。

您甚至不需要在web.xml中创建标签。

只需输入:

  1. 创建一个具有doGet方法的Servlet;
  2. 调用sendRedirect方法;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.sendRedirect("index.jsp");}

index.jsp应该是您的.JSP文件名。请注意,您不需要在指示.JSP文件名之前键入/!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接