zoukankan      html  css  js  c++  java
  • Servlet程序开发-- servlet跳转

    跳转:服务器端,客户端

    客户端跳转:<response.sendRedirect>地址栏跳转之后改变,无法传递request范围的属性

    服务器端跳转:<jsp:forward>地址栏不改变,而且可以传递request范围的属性,属于无条件跳转,只要执行到了,立即执行跳转的操作

    servlet之中也是可以跳转的,既然servlet本身存在HttpServletResonse对象,所以,直接通过此对象的sendRedirect方法就可以完成跳转操作。

    客户端跳转实现:

    info不能传递

    package org.lxh.servletdemo ;
    import java.io.* ;
    import javax.servlet.* ;
    import javax.servlet.http.* ;
    public class ClientRedirectDemo extends HttpServlet {
        public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
            req.getSession().setAttribute("name","李兴华") ;
            req.setAttribute("info","MLDNJAVA") ;
            resp.sendRedirect("get_info.jsp") ;
        }
        public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
            this.doGet(req,resp) ;
        }
    }

    servlet中没有<jsp:forward>指令,所以想执行跳转的话要使用RequestDispatcher完成。

    RequestDispatcher是个接口,要想使用接口必须进行对象实例化操作,此时只能一看ServletRequest接口完成

    info值可以传递

    package org.lxh.servletdemo ;
    import java.io.* ;
    import javax.servlet.* ;
    import javax.servlet.http.* ;
    public class ServerRedirectDemo extends HttpServlet {
        public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
            req.getSession().setAttribute("name","李兴华") ;
            req.setAttribute("info","MLDNJAVA") ;
            RequestDispatcher rd = req.getRequestDispatcher("get_info.jsp") ;    // 准备好了跳转操作
            rd.forward(req,resp) ;    // 完成跳转
        }
        public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
            this.doGet(req,resp) ;
        }
    }

    web.xml:

    <servlet>
            <servlet-name>server</servlet-name>
            <servlet-class>
                org.lxh.servletdemo.ServerRedirectDemo
            </servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>server</servlet-name>
            <url-pattern>/forward/ServerRedirectDemo</url-pattern>
        </servlet-mapping>

    所以要传递request范围属性的话,就用服务器跳转,如果要保存session以上级别的值的话,就用客户端跳转。

    服务器端跳转的应用比率90%以上,所以更重要。

  • 相关阅读:
    [Jweb] JSP-编程 06, 内置对象
    [Jweb] Tomcat 解决编码, 乱码问题
    [Jweb] JSP-编程 05 JSP 使用 javabean
    [Jweb] JSP-编程 04 转向 jsp:forward 与 sendRedirect
    [Jweb] JSP-编程 03 静态, 动态包含
    [Jweb] JSP-编程 02 (Directive-include)
    [Jweb] JSP-编程 01 (Directive-page)
    [Jweb] JSP 编程 00 -Declaration- Scriptlet-表达式-Directive (推出原因 : Servlet写标签非常麻烦!)
    [Jweb] 数据库处理以及在 Servlet 中使用 Bean
    [Jweb] Application / TestServletContext.java
  • 原文地址:https://www.cnblogs.com/wujixing/p/4974105.html
Copyright © 2011-2022 走看看