无法从控制器包类访问bean包类

时间:2013-04-01 08:50:29

标签: java jsp tomcat servlets

使用请求调度程序我将来自控制器包中的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();
        }


    }

Screen shot of project

错误: 什么时候我尝试这样做Tomcat给了我错误,请求资源没有找到..另一方面,如果我访问控制包类,它被访问。

2 个答案:

答案 0 :(得分:2)

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

<强>的getRequestDispatcher

  

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

如果要从servlet访问algo类,请在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类的命名约定,它要求类名称为大写。

答案 1 :(得分:1)

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

您根据代码所做的事情就像将请求从一个网址转发到另一个网址。

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

在某些控制器方法中

algo algoObj = new algo();
algo.processRequest (request, response);