jsp中获取不了其他文件传来的数据

jsp中获取不了其他文件传来的数据

试了好多方法都不能接收到,或者接收到的内容为null

用${}获取显示无法解析变量

img


浏览器控制台里直接没有写的${}

img

试过request.getAttribute获取,也试过session获取得到的结果都是null


//发送
 HttpSession session=request.getSession();
        session.setAttribute("flag1","111");
//        response.sendRedirect("index.jsp");


//获取
var name=<%=request.getSession(flag1);
//getAttribute方法也试过,还是为null
//${}显示无法解析变量,但是也引入了<%@page isELIgnored="false" %>

后来尝试用jsp的ajax向另一个jsp发送显示success,但是还是接收不到或者接收到的还是null


<script>
    function post(){
        var name=$('#sign_name').val();
        $.ajax({
            type:"POST",
            dataType:"text",
            url:"main.jsp",
            data: {
                "name": name
            },
            success:function (){
                alert("success");//跳转前显示success
            },
            error:function (){
                alert("false");
            }
        })
        window.location.href='main.jsp';
    }
</script>

//接收
<script>
    function get(){
        var name=${name};//无法解析变量
    }

//用var name=<%=request.getAttribute(name);接收到为null

</script>

不知道是什么原因,求解/(ㄒoㄒ)/~~

回答:你对jsp的域对象的使用不是很了解,需要加引号,示例如下:
控制层返回一个域对象

img

页面中使用

img

img

img

【以下回答由 GPT 生成】

解决方法

从你提供的代码和描述中,可以看出存在一些问题。下面是一些可能的解决方法:

  1. 发送数据时,你可以像你所做的那样使用session.setAttribute,但在接收数据时,你应该使用session.getAttribute来获取数据。你的接收代码应该如下所示:
var name = '<%= session.getAttribute("flag1") %>';
  1. 在你的Ajax请求中,你在success回调函数中跳转到main.jsp,但由于是异步请求,切换页面时可能还没有接收到响应,因此你将会丢失数据。你可以将跳转放在success回调函数中,并在跳转前使用session.setAttribute设置接收到的数据,如下所示:
$.ajax({
    type: "POST",
    dataType: "text",
    url: "main.jsp",
    data: {
        "name": name
    },
    success: function (){
        alert("success");
        <% session.setAttribute("flag1", request.getParameter("name")); %>
        window.location.href='main.jsp';
    },
    error: function (){
        alert("false");
    }
});

main.jsp中,你可以使用上面提到的方式来接收数据。

如果上述解决方法都没有解决你的问题,请提供更多相关代码和详细描述。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^