使用请求调度程序我将来自控制器包中的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给了我错误,请求资源没有找到..另一方面,如果我访问控制包类,它被访问。
答案 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);