今天又遇到一个Servlet转发到jsp的问题,出现空指针异常,起先我们以为是Servlet类出现的问题,先
后修改了web.xml和servlet类,但都没有效果,后来把跳转到的jsp页面,换成了一个简单的HelloWorld
页面,未出现异常,于是判断是jsp页面取值出现错误,先后使用request。getSttribute和EL表达式
${对象名.属性名}两种方式均无法取到值。偶然发现跳转页面时使用了重定向,response.sendRedirect("/index.jsp"); 想起会丢失数据,于是换成 request.getRequestDispatcher("/admin.jsp").forward(request.response);最终成功。
区别1:request.getRequestDispatcher().forward()是转发,是在同一个请求里。
response.sendRedirect()是重定向,因此放在request里的数据不会被传过去。
区别2:浏览器的地址栏变化,转发地址栏不会发生变化,重定向会发生变化。
后修改了web.xml和servlet类,但都没有效果,后来把跳转到的jsp页面,换成了一个简单的HelloWorld
页面,未出现异常,于是判断是jsp页面取值出现错误,先后使用request。getSttribute和EL表达式
${对象名.属性名}两种方式均无法取到值。偶然发现跳转页面时使用了重定向,response.sendRedirect("/index.jsp"); 想起会丢失数据,于是换成 request.getRequestDispatcher("/admin.jsp").forward(request.response);最终成功。
区别1:request.getRequestDispatcher().forward()是转发,是在同一个请求里。
response.sendRedirect()是重定向,因此放在request里的数据不会被传过去。
区别2:浏览器的地址栏变化,转发地址栏不会发生变化,重定向会发生变化。