这个报错是什么原因?要怎么解决啊?
谢谢!!
----------------解决方案--------------------------------------------------------
你在那里,在什么情况下遇到这个情况的呀
----------------解决方案--------------------------------------------------------
就是不能在response一个地址后又使用forward,把你的servlet贴出来看看
----------------解决方案--------------------------------------------------------
public class Position extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
loginbean.hasAuthority(request, response);
Function.Location(request, response, "index.jsp");
}
}
loginbean.java中:
public static void hasAuthority( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException
{
HttpSession session = request.getSession();
UserInfo user = (UserInfo)session.getAttribute( "session" );
if( user==null ) {
Function.Location(request, response, "login.jsp");
}
}
Function.java中
public static void Location( HttpServletRequest request, HttpServletResponse response, String Location )
throws ServletException, IOException
{
RequestDispatcher dispatcher = request.getRequestDispatcher( Location );
dispatcher.forward( request, response );
return;
}
就是这样喽,
程序本身应该不会有问题吧?
还请高手们指点指点
谢谢 !!
----------------解决方案--------------------------------------------------------
public class Position extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
UserInfo user = (UserInfo)session.getAttribute( \"session\" );
String location = \"index.jsp\";
if( user==null ) {
location = \"login.jsp\";
}
RequestDispatcher dispatcher = request.getRequestDispatcher( location );
dispatcher.forward( request, response );
}
}
不要用3个了,你就用我的这个,看看还会不会报错
----------------解决方案--------------------------------------------------------
这样子自然不会报错,可这不是我的需求
其它的不说,先看这二段
HttpSession session = request.getSession();
UserInfo user = (UserInfo)session.getAttribute( "session" );
String location = "index.jsp";
if( user==null ) {
location = "login.jsp";
}
………………
RequestDispatcher dispatcher = request.getRequestDispatcher( location );
dispatcher.forward( request, response );
这两段之间是还有很有的代码要执行的,
你这样的话能完成登录判断的需求吗?
你不要告诉我中间的代码执不执行都不一样哦
再说了,那个判断函数在每个页面都要用,不封装起来不太好吧?
还有一个是问题的关键
在dopost里面调用的函数即loginbean.hasAuthority(request, response) 这个函数,
在这个函数里面有没有办法让doPost()提前结束?即不要执行这个函数以后的内容?
在这个函数里面加return的话只能提前结束这个函数,而不能结束doPost(),
还有一点我不明白的也是要说明的是:
我的这个程序是用NetBeans IDE 5.0开发的,NetBeans IDE 5.0 本身就有一个绑定的Tomcat 5.5.9, 在这个Tomcat的测试环境里我的这个程序是没有错的,一切正常,
但是我把它放在我单独安装的Tomcat 5.5.7里面就不行了,它会报错:Cannot forward after response has been committed
是不是在Tomcat里有哪些设置可以解决这个问题的?
还请高手指点,谢谢!
----------------解决方案--------------------------------------------------------
按照你所说的,可以把hasAuthority方法改为返回boolean类型的,然后在doPost里面判断转向,就不会有重复的问题了……
----------------解决方案--------------------------------------------------------
那么说还是要在doPost()中判断?
loginbean.hasAuthority(request, response)
这个函数里面有没有办法让doPost()提前结束?即不要执行这个函数以后的内容?
谢谢啊
----------------解决方案--------------------------------------------------------
doPost方法应该是为主,而hasAuthority则作为判断的辅助来执行,如果你一定要结束掉doPost方法的话,我想问一下,你能不能结束一个普通的方法?
----------------解决方案--------------------------------------------------------
什么叫做能不能结束一个普通的方法?不太明白也!
----------------解决方案--------------------------------------------------------