Servlet基础02 跳转

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String name = "name";
		String jumpName = request.getParameter(name ) ;
		
		
		
		RequestDispatcher disp = null ;
		
		if (null == jumpName) {
			disp = request.getRequestDispatcher("/call.html") ;
			disp.forward(request, response) ;
			return ;
		}
		
		if (jumpName.equals("jsp")) {
			 disp = request.getRequestDispatcher("/Hello.jsp") ;
		}
		if (jumpName.equals("servlet")) {
			 disp = request.getRequestDispatcher("/HelloServlet.do") ;
		}
		disp.forward(request, response) ;
		
           /**
            * servlet之间的跳转
            * servlet之间可以互相跳转的,从一个servlet程序到另一个servlet。利用servlet的跳转可以很容易地
            * 把一项任务按模块分开。比如使用一个servlet接受用户接受的数据,然后跳转到另一个servlet中读取数据库进行
            * 业务操作,然后跳转到另一个servlet把出来的数据显示出来。servlet跳转可以实现程序的模块化
            * 
            *   现在的mvc框架中都使用了servlet的调转。mvc框架把程序分成三个独立的模块:业务模块视图模块,控制模块。其中的model复杂
            *   业务view负责数据的显示,而control负责两者之间的控制。
            *   
            */
		/**
		 * 转向--Forward
		 * 转向是通过requestDispatcher对象的forward方法来实现的。requestDispatcher可以通过HttpServletRequest的getRequestDispatcher
		 * 方法获得的
		 * 
		 * getResquestDispatcher()方法的参数必须用/开始的,表示的本web应用的根目录。
		 * Forward是MVC框架的重要的技术了。forward不仅仅可以跳转到本应用的另一个servlet,jsp页面等等,也可以跳转到一个文件的。
		 * 甚至是web-inf下的目录。其中条状到servlet和jsp是恨常见的。框架中常使用一个servlet来集中处理请求然后跳转到响应的servlet,
		 * 
		 * 当使用forward形式跳转servlet时,地址栏会显示跳转前的servlet访问地址。因为该跳转时在服务器端实现的,客户端浏览器并不知道该跳转
		 * 动作。也就是说forward跳转对客户端浏览是透明的。
		 * forward是最长用的方法。在strusts webwork等mvc框架中中,都是用到了servlet来处理用户的请求的,
		 * 把结果通过request.setAttribute放到request中去,然后就是foward到jsp了
		 * 
		 */
		
		/**
		 * 重定向 redirect
		 * 重定向 是利用服务器返回的状态码来实现的。客户端浏览请求服务器的时候,服务端会返回一个状态码,服务端通过httpServletResponse的setStatus
		 * 方法设置状态码。如果服务器返回301或者是302,那么游览器会到新的网址下重新的请求该资源的。状态码便是的意思
		 * 
		 * 1xx 信息在被出来
		 * 2xx 正常
		 * 3xx信息转移了
		 * 4xx信息没有了 401没有权限 404资源没有了 405表示访问的格式错的
		 * 5xx服务端错误了
		 */
		
		//RequestDispatcher disp = request.getRequestDispatcher("这里填写的是相对的访问路径,也是调转的那个servlet的名字") ;
		//disp.forward(request, response) ;//把request和response 传递过去的
		
		
		/**
		 * 301 302都是表示的重定向,区别是301是永久性的重定向,302是临时性的重定向。下面
		 */
		response.sendRedirect(request.getContextPath()) ; //重定向
		/**
		 * 当使用Redict跳转servlet时,跳转是在客户端实现的,也就是说客户端浏览器实际请求服务器的次数是2次的。第一次获取了
		 * 重定向状态码与重定向的网址,第二次是访问到真实的网址
		 */
		
		
		
		/**
		 * 自动刷新
		 * 
		 * 自动刷新不仅仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间后,自动刷新本页面。
		 * 代码
		 * 
		 */
		
		response.setHeader("Refresh", "1000;URL=Http://xxxxx") ;
	}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值