01 10Servlet跳转

现在的开发要求是,可以由Servlet跳转到根目录下保存的show.jsp页面,而show.jsp页面的功能很简单,就是输出属性内容。
范例:定义show.jsp页面代码

<%@ page language="java" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
	<base href="<%=basePath%>">

	<title>Servlet</title>
</head>
  
<body>
	<h1>request Attribute: <%=request.getAttribute("requestParam") %></h1>
	<h1>session Attribute: <%=session.getAttribute("sessionParam") %></h1>
</body>
</html>

下面最为重要的就是如何在MyServlet里面跳转到show.jsp页面。

在WEB开发之中存在有两种跳转模式:客户端跳转、服务器端跳转。

1 客户端跳转

在doGet()与doPost()两个方法上都提供有HttpServletResponse接口对象,那么既然有了这个response对象就可以利用response对象里面提供的sendRedirect()方法跳转到另外的页面。
范例:编写MyServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	HttpSession session = request.getSession();
	request.setAttribute("requestParam", "REQUEST ATTRIBUTE");
	session.setAttribute("sessionParam", "SESSION ATTRIBUTE");
	response.sendRedirect("show.jsp");
}

由于使用的是客户端跳转操作,所以页面的地址变为了show.jsp。但是最关键的问题是request属性范围不存在了。

2 服务器端跳转

对于服务器端跳转首先想到的一定是<jsp:forward>,但是遗憾的是,这属于JSP的语法,不能够在Servlet里使用。

如果要想实现服务器端跳转,必须利用ServletRequest(HttpServletRequest)提供的一个方法:
(1)取得RequestDispatcher接口对象:public RequestDispatcher getRequestDispatcher(String path)
|————在取得对象的同时必须要设置要跳转的页面路径,这个路径可以直接使用/描述根目录;

在RequestDispatcher接口里面定义了两个方法:
(1)跳转:public void forward(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException
(2)包含:public void include(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException
范例:实现Servlet到JSP的服务器端跳转

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	HttpSession session = request.getSession();
	request.setAttribute("requestParam", "REQUEST ATTRIBUTE");
	session.setAttribute("sessionParam", "SESSION ATTRIBUTE");
	request.getRequestDispatcher("/show.jsp").forward(request, response);
}

之所以一直强调request属性范围,Servlet与JSP相比,JSP更加适合于输出,而Servlet是由Java程序编写的,所以适合于编写Java代码,那么也就意味着在实际的开发之中,往往会由Servlet处理数据,而后会将处理好的数据交给JSP显示,那么这个数据只显示一次就够了,所以request是最好用的属性范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值