从servlet调用jsp

从servlet调用jsp,jsp,servlets,redirect,forward,Jsp,Servlets,Redirect,Forward,我正在从一个servlet中调用一个JSP,displayItems.JSP,DataPortal.java。首先,我尝试使用RequestDispatcher这样做 String url = "/displayItems.jsp"; ServletContext context = getServletContext(); RequestDispatcher dispatcher = context.getRequestDispatcher(toDo); dispatcher.forward(

我正在从一个servlet中调用一个JSP,
displayItems.JSP
DataPortal.java
。首先,我尝试使用
RequestDispatcher
这样做

String url = "/displayItems.jsp";
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(toDo);
dispatcher.forward(req, res);
<!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>
嗯。。。控件确实转到了JSP页面,但是它打印了JSP文件的全部内容(包括标记和所有内容),而不是显示为网页。接下来,我试图通过使用
response.sendRedirect(url)来实现这一点这次它给了我一个空页面。我做错了什么?JSP是这样的

String url = "/displayItems.jsp";
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(toDo);
dispatcher.forward(req, res);
<!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>

我属于展示类

非常感谢您的帮助。

关于
调度程序,包括(req,res)
?这是如果您想从servlet调用jsp。

forward只会将请求转发到下一页,其中as sendRedirect将首先返回到生成请求的页面,重定向到下一页

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

问题解决了。这就是方法:我有一个DispatchServlet调用DataPortal,DataPortal反过来调用displayItems.jsp。dispatcher.forward无法在DataPortal中工作的原因是,我正在dispatcher.include中调用DataPortal。当我把这个改为“前进”时,事情开始起作用了。谢谢你们的回复。

RequestDispatcher=getRequestDispatcher(request.getContextPath()+“/”;
RequestDispatcher dispatcher = getRequestDispatcher("URL to jsp");
dispatcher.forward(request, response);

转发(请求、响应)

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

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

仅键入:

  • 使用doGet方法创建Servlet
  • 调用sendRedirect方法 受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException {response.sendRedirect(“index.jsp”);}


    index.jsp应该是您的.jsp文件名。请注意,您没有键入/preor指示.JSP文件名

    我也试过了。它不起作用。它打印文件的内容而不是打开网页。文件的内容是什么意思?您正在获取servlet值吗?是的,我正在获取servlet值。好。。问题解决了。这就是方法:我有一个DispatchServlet调用DataPortal,DataPortal反过来调用displayItems.jsp。dispatcher.forward无法在DataPortal中工作的原因是,我正在dispatcher.include中调用DataPortal。当我把这个改为“前进”时,事情开始起作用了。谢谢你们的回复。哦,好的。这意味着我不应该尝试sendRedirect。但我还是不明白为什么forward不为我工作。