servlet中forward和redirect的区别

                                      forward和redirect的区别

RequestDispatcher类的forward()方法。该方法是指当浏览器发送请求的到servlet端时候,servlet把这个请求转发给另一个servlet

理,整个请求域不变,其中调用request.setAttribute()方法存入的数据对于第二个servlet也可取。

还有一种用法是当有请求到servlet端的时候,servlet经过一系列的处理通过request.setAttribute()方法把对象集合返回给前台,

前台jsp页面通过<c:foreach>遍历返回的对象。需要注意的是当以这种形式返回的时候,所有路径都要写成绝对路径,相对路径有

时候是以这个servlet所在路径为相对路径,你会发现你的css样式莫名的消失了。换成绝对路径问题解决。

HttpServletRequest类的sendRedirect()方法。这种方法一般用于当前台登陆页面的失败的时候,整个servlet端重定向回这个登陆页

面,让用户重新输入账号和密码。个人觉得在这种情况下让用户重新输入账号和密码比较好。如果还用forward回到登陆页面,

输入框里的值不会清空,体验感不是很好,当然只是个人观点。

下面看下forward的像前台传递对象集合的例子。

servlet:

while(it.hasNext()){
			Element thingElement=it.next();
		    Thing thing=new Thing();
	        //设置事件编号
	        thing.setthingId(thingElement.attributeValue("category"));
	        //设置事件名称
	        thing.setthingName(thingElement.elementText("title"));
	        //设置事件发布者
	        thing.setthingAuthor(thingElement.elementText("author"));
	        //设置书籍内容
	        thing.setthingContent(thingElement.elementText("content"));
	       //设置事件起止时间
	        try {
	        	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	        	Date date=sdf.parse((thingElement.elementText("startdata")));
	        	thing.setthingStartdata(date);
	        } catch (ParseException e) {
	            e.printStackTrace();
	        }
	        try {
	            thing.setthingEnddata(new SimpleDateFormat("yyyy-MM-dd").parse(thingElement.elementText("enddata")));
	            } catch (ParseException e) {
	                e.printStackTrace();
	            }
	        li.add(thing);
		    }
		request.setAttribute("list", li);
		RequestDispatcher requestDispatcher=request.getRequestDispatcher("Home_page/homepage.jsp");
		requestDispatcher.forward(request, response);
		}

jsp:

<c:forEach items="${list}" var="thing">
			<div class="detail">
				<div class="right-text">
				<p class="p1" id="${thing.getthingId()}">标号:${thing.getthingId()}</p>
				<p class="p1">标题:${thing.getthingName()}</p>
				<p class="p1">内容:${thing.getthingContent()}</p>
				<p class="p1">日期:<fmt:formatDate value="${thing.getthingStartdata()}" pattern="yyyy-MM-dd" />
					-- <fmt:formatDate value="${thing.getthingEnddata()}" pattern="yyyy-MM-dd" /></p>
				<p class="p1">发布者:${thing.getthingAuthor()}</p>
				</div>
				<div class="right-operation">
					<div class="remove">删除</div>
					<div class="change">修改</div>
				</div>
			</div>
			<br/>
		</c:forEach>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值