当前位置:编程学习 > JAVA >>

request.getRequestDispatcher 转向问题,急,愁死,知道的朋友进来帮忙解决下,谢谢!

String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String mypath = basePath + "sysaction/price!backAddSysprice.action";

RequestDispatcher   dispatcher   =   request.getRequestDispatcher("/"+mypath);
dispatcher.forward(request, response);

Debug中查到这样:

请问为何:为何 最下面为何多了/sysaction/?


request.getRequestDispatcher(url)url参数需要是"/资源",于是把它改为:

        RequestDispatcher   dispatcher   =   request.getRequestDispatcher("/"+mypath);

这时Debug中查到这样:

FF中报的:


请问我改如何正确转向:sysaction/price!backAddSysprice.action 呀?! URL 转向 --------------------编程问答-------------------- String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String mypath = basePath + "sysaction/price!backAddSysprice.action";

RequestDispatcher   dispatcher   =   request.getRequestDispatcher("/"+mypath);
dispatcher.forward(request, response);

还有debug里面的信息,已经很明显了。 --------------------编程问答-------------------- to fangmingshijie:

是action的namespace配置不对吗?

您上面这段代码我看不错有什么不同哟 --------------------编程问答-------------------- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String mypath = basePath + "sysaction/price!backAddSysprice.action";


不是你自己加上去的吗? --------------------编程问答-------------------- request.getRequestDispatcher("a/b"+mypath);
你改成这样然后再用Debug看看
或者改成这样试试request.getRequestDispatcher("/price!backAddSysprice.action"); --------------------编程问答-------------------- request.getRequestDispatcher("/price!backAddSysprice.action")接收的是相对于当前web应用的URL --------------------编程问答-------------------- request.getRequestDispatcher("/");
这是转向根目录的。
request.getRequestDispatcher("/"+mypath);
同理是转到根下的其他路径(mypath)。

你的mypath已经包含根了,当然不对。 --------------------编程问答-------------------- 把你的basePath去掉就行. 
不同的服务器不能forward.
同一服务器不需要加入前面那些 --------------------编程问答--------------------  亲  404嘛就找路径的问题啊,在项目里面清一下关于路径的地方  都看一有没有出问题, 一个个的解决排除,最后就搞定啦 --------------------编程问答-------------------- 首先这是为什么会多一个“/sysaction/”的原因,这是你自己添加的:String mypath = basePath + "sysaction/price!backAddSysprice.action";
404错误就是路径错误,转发和重定向的跳转路径有时候会不一样的,要仔细分析。
你这里是通过action进行跳转的,看看action里面的配置是否有namespace。如果有的话,加入到路径就可以了。 --------------------编程问答-------------------- RequestDispatcher   dispatcher   =   request.getRequestDispatcher("/"+mypath);


去掉"/" --------------------编程问答-------------------- 为什么action还用这个转向呢?
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,