欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于jsp中重定向的问题

程序员文章站 2022-04-18 10:59:30
...

今天在servlet中向request存入一个值,然后在jsp页面用request.getAttribute()去取,但是发现不管怎样都是得到的空值,但是用session就可以到,我就发现可能重定向了,最后我发现在servlet中用了response.setHeader()这个方法(以前不知道这个方法也是重定向的),然后我把这个方法换成request.getRequstDispatcher().forword()后再试发现就可以了,

然后总结了一下:

Servlet转发机制

forword转发:request.getRequestDispatcher("teacher.jsp").forword(request, response);//在本页面加载另一个页面,只是转发请求(起到中间站的作用)

include转发:request.getRequestDispatcher("teacher.jsp").include(request, response);//在本页面加载另一个页面,可以把当前servlet的数据打包给页面

以上两个方法都不会丢失request封装的对象。

 

重定向转发:response.sendRedirect("login.jsp"),response.Header(),response.setSatus();

可以注意到重定向都是response

 

加一点:

当我们用request.getRequstDispatcher().forword()这个方式时加载的界面可能会出现乱码,然后网上说吧这段代码:

response.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");

 放到PrintWriter out = response.getWriter();后面,然并卵,在找了半天原因后我把这段代码加到了doGet方法中(表单中我用的doPost方法提交),然后再试就发现乱码没有了;平常在servlet中我一般用的是重定向,但是有时候不能用重定向,而且重定向这个效率比较低,今天才发现这个问题,然后就一并解决了