关于request.getRequestDispatcher("######").forward(req, resp)

原创 2017年01月03日 10:02:47

java web 报错:java.lang.IllegalStateException: Cannot forward after response has been committed…

不知不觉又掉进一个坑里面…反思之后,觉得还是总结不到位,因为最终结局的时候会突然想起来自己以前已经知道这么回事。。。感觉好蠢……


比如:(一些逻辑省略…)

	public void checkPass(HttpServletRequest req, HttpServletResponse resp,UserService userService)  {
		 User user = null;
		
         String name = req.getParameter("username");
         String pass = req.getParameter("pass");
         
         log.debug("pass"+pass);
         
         //***************获取user逻辑省略***************
         //
         if(user == null){
        	 loginMsg = "账号不存在";
			 req.getSession().setAttribute("loginMsg", loginMsg);
			 try {
				req.getRequestDispatcher("login.jsp").forward(req, resp);
			} catch (ServletException | IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
         }
         else{
        	 if(!user.getPassword().equals(pass)){
        		 loginMsg = "密码错误";
    			 req.getSession().setAttribute("loginMsg", loginMsg);
    			 try {
					req.getRequestDispatcher("login.jsp").forward(req, resp);
				} catch (ServletException | IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	 }
        	 else{
        		 req.getSession().setAttribute("user", user);
        		
					try {
						req.getRequestDispatcher("index.jsp").forward(req, resp);
					} catch (ServletException | IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			
        	 }
        	//若不注释掉,这一句始终会执行,那么这个方法就会执行两次forward(),就会报错
//        	 try {
//				req.getRequestDispatcher("login.jsp").forward(req, resp);
//			} catch (ServletException | IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
         }
	}




版权声明:本文为博主原创文章,未经博主允许不得转载。

Servlet请求转发 RequestDispatcher接口

在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应。一,RequestDispatcher接口方...
  • qfs_v
  • qfs_v
  • 2008年06月16日 04:35
  • 27708

request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别

在进行web开发时,跳转是最常见的,今天我,
  • uk8692
  • uk8692
  • 2013年10月19日 04:13
  • 7378

Tomcat8.x Servlet内部跳转机制 req.getRequestDispatcher("...").forward(req, resp);

// Servlet内部跳转的源代码片段 req.getRequestDispatcher("...").forward(req, resp); // req.getRequestDispatche...
  • zhouzhiande
  • zhouzhiande
  • 2016年08月10日 01:53
  • 1442

使用request.getRequestDispatcher请求转发到一个页面中文乱码解决

一个JSP页面已经设置UTF-8编码,而且使用response.sendRedirect重定向到此JSP页面时,页面中文显示正常,并不会出现乱码。 但是在Servlet中使用request.getR...
  • pengxuan
  • pengxuan
  • 2011年11月27日 15:35
  • 6983

RequestDispatcher请求转发方法

RequestDispatcher requestDispatcher1 = request.getRequestDispatcher("/logout_sso.jsp"); requestDisp...
  • a327736051
  • a327736051
  • 2015年10月15日 07:59
  • 1391

关于request.getRequestDispatcher("######").forward(req, resp)

java web 报错:java.lang.IllegalStateException: Cannot forward after response has been committed… 不知...
  • efine_dxq
  • efine_dxq
  • 2017年01月03日 10:02
  • 905

request.getRequestDispatcher()和response.sendRedirect()之间的区别

request.getRequestDispatcher()和response.sendRedirect()是Servlet常见页面跳转的实现方式,这是他们的共同点。但是他们的不同又在哪里呢?下面让我...
  • u014507244
  • u014507244
  • 2016年05月16日 16:03
  • 510

req.getRequestDispatcher和resp.sendRedirect的区别

1、index.jsp到main.jsp: String path = request.getContextPath(); String basePath = request.getSch...
  • gz153016
  • gz153016
  • 2016年04月26日 09:48
  • 1678

response.sendRedirect("")和request.getRequestDispatcher("").forward(req,resp);

1:request.getRequestDispatcher("转发路径").forward(req,resp)该语句是实现请求转发的,当请求进入到该servlet中执行到该语句时,服务器不会直接响应...
  • chx10051413
  • chx10051413
  • 2013年09月10日 21:58
  • 1059

Jsp重定向(response.sendRedirect())和转发(request.getRequestDispatcher().forward(request,r)的区别

区别1:request.getRequestDispatcher().forward()是转发,是在同一个请求里。response.sendRedirect()是重定向,因此放在request里的数据...
  • u014357995
  • u014357995
  • 2015年08月21日 10:58
  • 3573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于request.getRequestDispatcher("######").forward(req, resp)
举报原因:
原因补充:

(最多只允许输入30个字)