我使用的是netbeans 7.1,我用两个servlet文件创建了一个JSP文件。类似:
index.jsp --->servlet1.java --->servlet2.java
我从index.jsp
文件中给出一些值,并发送到servlet1.java
。
在这个servlet1.java
文件中,我称之为servlet2.java
文件。
然后抛出CCD_ 5。我该如何解决这个问题?
我的代码是这样的:
index.jsp
<form action="servlet1" method="post">
servlet 1.java
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
..................
..................
..................
servlet2 ob=new servlet2();
ob.doPost(request, response);
..................
..................
..................
}
然后抛出CCD_ 6。
使用RequestDispatcher
RequestDispatcher rd = request.getRequestDispatcher("servlet2");
rd.forward(request,response);
RequestDispatcher
定义一个对象,该对象接收来自客户端的请求,并将它们发送到服务器上的任何资源(如servlet、HTML文件或JSP文件)。
更新
无需手动创建servlet的对象,只需使用RequestDispatcher
调用servlet即可,因为web容器控制servlet的生命周期。
来自Oracle JavaEE文档Servlet生命周期
servlet的生命周期由部署servlet的容器控制
当请求映射到servlet时,容器将执行以下步骤。
如果servlet的实例不存在,则web容器
加载servlet类。
创建servlet类的实例。
通过调用init方法初始化servlet实例。初始化包含在创建和初始化Servlet中。
调用服务方法,传递请求和响应对象。在编写服务方法中讨论了服务方法。
,你在这里尝试什么
servlet2 ob=new servlet2();
ob.doPost(request, response);
不需要为servlet显式创建对象,Web容器会为servlet创建一个实例,并在应用程序的生存期内共享它。尽管您在这里创建了一个对象,但它将只返回现有对象。
您可以选择请求调度程序或页面重定向。