采用ajax 异步无法实现servlet 向jsp 传值

m0_38118676 2017-08-26 09:42:29
这两天在学习JSP+servlet时遇到这个问题,servlet页面设置的值传到JSP页面为空。
若单独** 运行servlet 页面可以正常显示(应该可以认为 web.xml 数据库 执行类 都没有问题),但运行jsp 页面则无法显示从servlet 传过来的值**。
其中用EL标签什么都显示不出来 ,而用<% %>来显示 为Null。
servlet 中 设置如下

//page 与 postList 为页面对象 和 文章列表
request.setAttribute("page", page);
request.setAttribute("postList", postList);
//测试用例
String tom="hahahah";
request.setAttribute("yn", tom);
getServletConfig().getServletContext().getRequestDispatcher("/index.jsp").include(request, response);
```

```
JSP中这样设置的
<p>
${page.getCurrentPage() }
${requestScope.yn }
${yn }

</p>

```

```

在网上寻找问题时,**觉得原因是在加载JSP页面的时候,没有加载servlet类**。因为我没有采用 提交表单 或者 超链接等形式来加载对应的servlet类。我的想法是在加载这个jsp 页面的时候就显示从servlet传来的值。 于是我查找了一下方法,有这么几种
1、include (排除,include 标签只能包含jsp页面 不能包含servlet页面)
2、采用AJAX 异步,我试了代码如下

<script type="text/javascript">
function a(){
$.ajax({
url:"GetPostServlet",//servlet文件的名称
type:"GET",
success:function(e){
alert("servlet调用成功!");
}
});

}
</script>
</head>
<body onload="a()">

加载JSP页面的时候成功提示“servlet调用成功!” 但页面依然没有数据显示

3、直接修改web.xml 把welcome 路径改为 servlet 映射 也没有效果

4、采用<%response.sendRedirect("GetPostServlet"); %> 这种方法可行,但是页面的地址会被改变 从index.jsp 变成servlet类的名称
5、目前采用 forward 可以成功。通过if 来判断传值是否为空, 然后 forward 到servlet类。

比较好奇为什么之前的 js 代码会没有效果。因为是初学,还不太了解,想请教一下。还有就是还有没有什么别的方法可以在加载JSP时 加载servlet类(一个或者多个)传值到JSP页面。



...全文
408 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星抹微云 2017-10-19
  • 打赏
  • 举报
回复
解决没有,我也遇到这问题
chen58683632 2017-08-27
  • 打赏
  • 举报
回复
你可以先访问servlet,servlet把数据取出来之后存到request域中,然后再转发到jsp就可以实现了
m0_38118676 2017-08-26
  • 打赏
  • 举报
回复
引用 4 楼 leeking888 的回复:
什么意思啊?描述一点都不清楚。你要实现的功能是什么呢? 是使用ajax请求servlet中的数据吗?还是在jsp中加载servlet的数据呢?
不好意思可能没描述清楚。 1、实现的功能:加载jsp页面时显示一个列表,列表中的数据已经储存在数据库中。通过DAO 取出数据,用servlet 将数据传给JSP页面 2、出现问题: 在我加载jsp时页面没有数据显示,但直接加载servlet 则有数据显示。(表明直接加载jsp页面时,对应的servlet没有加载,数据未能传给JSP页面) 3、尝试解决:用AJAX 异步加载 servlet页面 。 4、目的:在加载JSP页面的同时,能够加载servlet ,从而把数据传到JSP页面中。 结果,直接加载JSP页面时,AJAX运行但,servlet 中的数据未能传到JSP 另外,通过回复我发现我可能理解错了AJAX的用处,AJAX可以请求servlet中的数据,但似乎不能再加载JSP页面时,同时加载servlet,来达到把servlet 中的数据,传到JSP页面中。 最后,想请教一下,还有哪些方法可以在加载JSP页面时 同时加载servlet 来达到打开jsp页面就可以看到储存在数据库中的数据的目的。
leeking888 2017-08-26
  • 打赏
  • 举报
回复
什么意思啊?描述一点都不清楚。你要实现的功能是什么呢? 是使用ajax请求servlet中的数据吗?还是在jsp中加载servlet的数据呢?
m0_38118676 2017-08-26
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
没用ajax肯定要先请求servlet,把对象放在request域再转发到jsp,使用ajax可以直接返回json数据,使用js显示在jsp上面。。。
是不是说 ajax 的作用 是用来返回 servlet 中设置的数据的 而不能在加载jsp 时加载servlet 然后通过servlet 中的 forward 转发到jsp 页面
李德胜1995 2017-08-26
  • 打赏
  • 举报
回复
没用ajax肯定要先请求servlet,把对象放在request域再转发到jsp,使用ajax可以直接返回json数据,使用js显示在jsp上面。。。
m0_38118676 2017-08-26
  • 打赏
  • 举报
回复
第一次发帖 不知道有没有说清, 不知道需不需要把完整代码发上来

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧