请求重定向与请求转发的区别

一 请求重定向与请求转发的区别


 

 
 
二 生活小案例


 

 
 
三 请求转发实例(reg.jsp->response.jsp->request.jsp)
1、reg.jsp
<%@  page  language = "java"  import = "java.util.*"  contentType = "text/html; charset=utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
 
<! DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   < head >
     < base  href = " <%= basePath %> " >
   
     < title > My JSP 'index.jsp' starting page </ title >
         < meta  http-equiv = "pragma"  content = "no-cache" >
         < meta  http-equiv = "cache-control"  content = "no-cache" >
         < meta  http-equiv = "expires"  content = "0" >    
         < meta  http-equiv = "keywords"  content = "keyword1,keyword2,keyword3" >
         < meta  http-equiv = "description"  content = "This is my page" >
         <!--
        <link  rel =" stylesheet " type="text/ css "  href ="styles.css">
        -->
   </ head >
 
   < body >
     < h1 > 用户注册 </ h1 >
     < hr >
     <%
        int  number=-1;
        //说明用户第一次访问页面,计数器对象还未创建
        if (application.getAttribute( "counter" )== null )
       {
           application.setAttribute( "counter" , 0);
       }
       number = Integer.parseInt(application.getAttribute( "counter" ).toString());
       number++;
       application.setAttribute( "counter" , number);
     %>
     <!-- <form name="regForm" action="request.jsp" method="post"> -->
     < form  name = "regForm"  action = "response.jsp"  method = "post" >
     < table >
       < tr >
         < td > 用户名: </ td >
         < td >< input  type = "text"  name = "username" /></ td >
       </ tr >
       < tr >
         < td > 爱好: </ td >
         < td >
            < input  type = "checkbox"  name = "favorite"  value = "read" > 读书
            < input  type = "checkbox"  name = "favorite"  value = "music" > 音乐
            < input  type = "checkbox"  name = "favorite"  value = "movie" > 电影
            < input  type = "checkbox"  name = "favorite"  value = "internet" > 上网
         </ td >
       </ tr >
       < tr >
          < td  colspan = "2" >< input  type = "submit"  value = "提交" /></ td >
       </ tr >
     </ table >
     </ form >
     < br >
     < br >
     < a  href = "request.jsp?username=李四" > 测试URL传参数 </ a >
   
     < br >
     < br >
     < center >
             您是第 <%= number  %> 位访问本页面的用户。
     </ center >
   </ body >
</ html >
2、response.jsp
<%@  page  language = "java"  import = "java.util.*,java.io.*"  contentType = "text/html; charset=utf-8" %>
<%
    response.setContentType( "text/html;charset=utf-8" );  //设置响应的MIMI类型
   
    out.println( "<h1>response内置对象</h1>" );
    out.println( "<hr>" );
     //out.flush();  //解决PrintWrite对象的浏览器输出总是先于out对象输出这一问题
   
    PrintWriter outer = response.getWriter();  //获得输出流对象
    outer.println( "大家好,我是response对象生成的输出流outer对象" );
     //response.sendRedirect("reg.jsp");//请求重定向
     //请求重定向
     //response.sendRedirect("request.jsp");
     //请求转发
    request.getRequestDispatcher( "request.jsp" ).forward(request, response);
%>
3、request .jsp
<%@   page   language = "java"   import = "java.util.*"   contentType = "text/html; charset=utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
 
<! DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   < head >
     < base  href = " <%= basePath %> " >
   
     < title > My JSP 'index.jsp' starting page </ title >
         < meta  http-equiv = "pragma"  content = "no-cache" >
         < meta  http-equiv = "cache-control"  content = "no-cache" >
         < meta  http-equiv = "expires"  content = "0" >    
         < meta  http-equiv = "keywords"  content = "keyword1,keyword2,keyword3" >
         < meta  http-equiv = "description"  content = "This is my page" >
         <!--
        <link  rel =" stylesheet " type="text/ css "  href ="styles.css">
        -->
   </ head >
 
   < body >
     < h1 > request内置对象 </ h1 >
     <%
       request.setCharacterEncoding( "utf-8" );  //解决中文乱码问题,无法解决URL传递中文出现的乱码问题。
       request.setAttribute( "password" ,  "123456" );
   
     %>
        用户名: <%= request.getParameter( "username" )  %> < br >   
        爱好 : <%
            if (request.getParameterValues( "favorite" )!= null )
           {
                   String[] favorites = request.getParameterValues( "favorite" );
                    for ( int  i=0;i<favorites.length;i++)
                   {
                      out.println(favorites[i]+ "&nbsp;&nbsp;" );
                   }
                }
         %>  < br >
         密码: <%= request.getAttribute( "password" )  %> < br >
         请求体的MIME类型: <%= request.getContentType()  %> < br >
         协议类型及版本号:   <%= request.getProtocol()  %> < br >
         服务器主机名 : <%= request.getServerName()  %> < br >
         服务器端口号: <%= request.getServerPort()  %> < BR >
         请求文件的长度 : <%= request.getContentLength()  %> < BR >
         请求客户端的IP地址: <%= request.getRemoteAddr()  %> < BR >
         请求的真实路径: <%= request. getRealPath( "request.jsp" )  %> < br >
         请求的上下文路径: <%= request.getContextPath()  %> < BR >                          
   </ body >
</ html >
 
四 运行结果


 

 

猜你喜欢

转载自cakin24.iteye.com/blog/2394747
今日推荐