采用ajax 异步无法实现servlet 向jsp 传值
这两天在学习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页面。