-1

使用请求调度程序,我将请求从控制器包中的 Servlet 类转发到 bean 包中的类。这是我的代码..

private void credentialProcessing(HttpServletRequest request,
            HttpServletResponse response) {

        try{


            RequestDispatcher rd=request.getRequestDispatcher("algo");//this class is in bean package
            rd.forward(request, response);
        }
         catch (ServletException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }


    }

项目截图

错误:当我尝试执行此操作时,Tomcat 会给我错误,即未找到请求的资源..另一方面,如果我访问控制包类,它会被访问。

4

2 回答 2

2

RequestDispatcher使用路径转发请求,它不允许您指定转发请求的类。

获取请求调度程序

返回一个 RequestDispatcher 对象,该对象充当位于给定路径的资源的包装器。RequestDispatcher 对象可用于将请求转发到资源或将资源包含在响应中。资源可以是动态的或静态的。

如果algo要从 servlet 访问类,请在 servlet 中创建该类的实例。

private void credentialProcessing(HttpServletRequest request,
            HttpServletResponse response) {

        try{
           algo al = new algo();
           al.callSomeMethod();
        }
         catch (ServletException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }

附带说明

查看 Java 类的命名约定,它要求类名大写。

于 2013-04-01T08:52:51.900 回答
1

Algo 是一个 bean 类我猜不是控制器,使用 rd.forward 转发请求并不意味着请求可以从控制器转发到 bean 类。

您按照代码所做的就像将请求从一个 url 转发到另一个。

如果要转发整个请求,请简单实例化算法类,并调用一些将请求作为输入参数的方法。

在某些控制器方法中

algo algoObj = new algo();
algo.processRequest (request, response);
于 2013-04-01T08:54:25.170 回答