JavaWeb使用的Servlet或者ps跳转

来源:互联网 发布:软件测试助理 编辑:程序博客网 时间:2024/05/21 18:36

第二篇水文,庆幸自己记得要写更加庆幸有些的内容。仔细想想,获取只是想增强记忆。话不多说进入主题。

JavaWeb中会遇到用到跳转,例如Servlet->Servlet,jsp->jsp,Sevlet->jsp,jso->Servlet:

1、jsp->Servlet。这个比较简单通过URL,表单实现。

2、jsp->jsp。URL,表单,forward标签都可以实现

3、Servlet->jsp(Servlet)。第一种方式:request.sendRedirect(URL);重定向跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在URL后加参这就意味着:改变浏览器地址,Servlet以外request.setAttribute(name, value)的值不能在jsp页面通过${requestScope.name }得到值value。第二种方式:request.getRequestDispatcher("../index.jsp").forward(request, response);不改变浏览器地址,Servlet,jsp中的request和response是同一个不会产生新的。

但有时候,我不想用跳转,我想包含include。include的情况更复杂:jsp中include一个Servlet后者jsp,又或者是一个jsp但这个jsp的内容要通过一个Servlet生成。Servlet中inlcude一个jsp后者Servlet,但是因为PrintWriter的缘故要分清楚情况使用。

jsp包含jsp主要是两种用法:1、<%@ include file="xxx.jsp"%>说明标签,使用用时要注意说明标签实际就是把连个jsp的代码拼接在一起,所以当两个jsp代码中出现重复定义就会报错。2、<jsp:include page="xxx.jsp"/>动作标签,重点在于可以利用<jsp:param>还传递参数名和参数值简单例子:jsp包含Servlet目前我遇到的情况只要是要注意1、不能有response.setContentType("image/jpeg");会报错。2、Servlet使用PrintWriter是可以的。

一个比较复杂的情况jsp包含一个Servlet,但这个Servlet结果跳转另一个jsp:request.getRequestDispatcher(URL).include(request, response);
Servlet一定要使用这种方式跳转,其实个人感觉这不是跳转,而是Servlet包含jsp。

Servlet包含资源主要方式:

RequestDispatcher rd = this.getServletContext().getRequestDispatcher(URL);rd.include(request, response);
要注意的一点是URL指向一个Servlet,而这个Servlet又跳转jsp时,只能使用request.getRequestDispatcher("XXX.jsp").include(request, response)不然达不到效果。

暂时写这么多,希望有人指出不足后者错误的地方。以后遇到更多的情况会回来更新。总感觉这篇文章写的思路很乱……还是要加把劲,提高各种水平





0 0