zoukankan      html  css  js  c++  java
  • 一个jsp连带参数跳转到另一个jsp页面的解决方法

    /**
     * 修改的点击触发事件
     * @param data
     */
    function change(courseid) {
        //将获取到的courseid传入到session
        sessionStorage.setItem("courseId",courseid);
        //跳转到修改页面
        window.location.href="${sessionScope.path}/admin/jsp02/alterCourse.jsp";
    }

    上面的这个是一个触发按钮,可以通过设置onclick事件

    $(sessionScope.path)/ 这里写跳转页面的相对路径

    获取方法,在这里我是写一个函数,把数据返回,x()

     function x(){
                var data = sessionStorage.getItem("courseId");
               return data;
            }
      if(x()==null||x()==""){
                    alert("请点击对应课程修改按钮");
                    window.location.href="${sessionScope.path}/admin/jsp02/index.jsp";
                }else{
                    a();
                }

    这里是避免直接在页面地址上写路径报错误,传送一个空值过去

    ------------------------------------------------------------------------------------------------------

    更全面的理解:

    先提出几个问题?

    1、一个jsp页面的转发如何转发到另一个jsp页面

    2、一个Servlet如何把参数的传递到一个jsp页面,并能接受到

    我先回答第一个问题,在这里我看到jsp页面转发到另一个jsp页面,我第一个想到的就是重定向

    和转发,但发现如果要在jsp页面做就是要:

    index2.jsp页面  实现跳转到index.jsp页面  

    1、

     <%
                        request.getRequestDispatcher("/index.jsp").forward(request,response);
           %>

    这样做可以实现跳转到index.jsp页面,但是我发现这种方法的话不能做到控制它达到某种条件再转发

    例如我这里本来想做一个触发事件,发现还没有点击就直接跳转了

    所以这个方法虽然可以实现跳转但不够完整;

    于是我使用另一种方法就可以实现jsp跳转那就是:  window.location.href = "${sessionScope.path}/  路径";

    2、

     function x(){
            window.location.href = "${sessionScope.path}/index.jsp";
        }
    <input type="button" id="bto" value="按钮" onclick="x()">

    这样就能实现控制跳转页面

    这种方法是jsp页面跳转jsp页面比较简单的方法

    还有一种form表单:

    3、

    <form action="${path}/index.jsp" >
    
    
        <input type="submit" value="提交">
    </form>

    也可以实现控制跳转页面

    还有一种比较麻烦的:那就是ajax

    4、

    $("#bto").click(function () {
                $.ajax({
                    type: "Get",
                    dataType: "text",
                    url: "${path}/UserServlet",
                    data: "userName="+Math.random(),
                    success: function(data){
                        <%--    document.getElementById("b").innerHTML = data;--%>
                        if(data){
                          window.location.href = "${sessionScope.path}/index.jsp";
                        }
                    },
                    error: function(msg){
                        alert("请联系客户")
                    }
                })
            })
    <input type="button" id="bto" value="按钮">

    通过点击事件触发ajax提交Servlet层,然后可以响应数据回来,然后跳转(当然这个方法和第二种方法差不多,它能带参数第二种也可以)

    第二种方法(2、)的那个方法  -----》 带参数的:

    function x(){
    
           sessionStorage.setItem("userId",2);
            window.location.href = "${sessionScope.path}/index.jsp";
        }

    sessionStorage.setItem()方法设置键值,但这里的接收,不是session.getAttribute() 得到值然后再set进去session隐藏域;而是

     function y(){
                  var item = sessionStorage.getItem("userId");
    
                  return item;
              }

    使用sessionStorage.getItem()方法获取,然后就直接调用y()就可以获取到另一个jsp页面的值,这个方法头顶上有

    继续说ajax方法:

    提交到Servlet层后,可以使用三种放转发到另一个jsp:

    1、重定向

    2、转发

    3、window.location.href = ${sessionScope.path}/路径;

    要带参数的话,主要有两种方法,一种是把它set到session的作用域里,:

    Servlet层:req就是request

    req.getSession().setAttribute();

    通过这个方法拿到session的隐藏作用域,然后这个方法不是想刚刚那个

    sessionStorage.getItem那样获取,而是:
    <%
        Object userId = session.getAttribute("userId");
        //由于这里的数据永远不会被清除,除非浏览器关闭,所以要重新set到session的作用域
        session.setAttribute("userId",userId);
    %>

    之后使用EL表达式${} 获取

    注意:

    1、编码格式

    2、Servlet层可以使用重定向、转发、window.location.href = .... ;但若是参数传递的话,

    jsp可以使用

     sessionStorage.setItem("userId",2);

    这种方法,但Servlet不能,它只能使用把参数放进Session隐藏域中的方法
    request.getSession().setAttribute(); ----------这种方式设置参数

    对应的jsp获取到参数的页面:
    session.getAttribute返回一个Object类型,然后这里要记得把它再次
    session.setAttribute
    通过EL表达式,${}获取
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    ASP.NET MVC 页面重定向
    Linux用户管理
    linux开机、重启和用户注销
    vi和vim
    Mac 与 Linux服务器上传下载
    linux 文件体系
    linux 常用命令及异常处理
    单独使用ueditor的图片上传功能,同时获得上传图片地址和缩略图
    mybatis oracle 插入自增记录 获取主键值 写回map参数
    MyBatis SpringMVC映射配置注意
  • 原文地址:https://www.cnblogs.com/bichen-01/p/11819159.html
Copyright © 2011-2022 走看看