2010-10-15 40 views
0

我试图将JSP页面中的'HTTPrequest'重定向到servlet(位于包中);传递存储在会话对象中的变量。 我有主意,用:JSP转发和调用servlet(传递2个会话变量)

<jsp:forward page"/servletName"> 
    <jsp:param name="var1" value="<%=beanID.getVar1()%>" /> 
    <jsp:param name="var2" value="<%=beanID.getVar2()%>" /> 
</jsp:forward> 

在servlet中,你可以找到与@Override注释的doPost方法。使用以下代码:

public class servletName extends HttpServlet{ 

@Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException,IOException{ 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    var1 = request.getParameter("var1").toString(); 
    var2 = request.getParameter("var2").toString(); 

// do more with the variables. 

    } 

运行项目时,参数会发送到调用重定向/转发的JSP。在变量被存储之后(以及servlet必须被调用的地方[JSP:forward]),应用程序返回一个404页面不存在。

有没有人有想法? 如果需要澄清,请告诉我。

提前致谢! B.

回答

0

只要网址错误,或者网址后面没有任何内容,404就会出现。对于servlet,当servlet未在web.xml中声明,或者URL与servlet的url-pattern不匹配,或者servlet的构造和初始化失败时(这个应该在服务器日志中可见),最后一次可能发生。

这可能有助于看一下[servlets] tag info page。有一个Hello World示例可以帮助您提供有关使用JSP/servlet的新见解。


请注意,您并未在此处重定向。您正在转发到一个servlet。该servlet将获得与JSP完全相同的请求/响应。重定向基本上指示客户创建新的请求。

0

首先,您不需要将这些变量作为参数发送,您可以访问servlet中的会话对象(request.getSession())。你确定servlet被调用吗?也许你可以展示更多的代码在servlet中发生的事情。