我想从登录页面重定向到主页(.jsp),我想在主页中显示登录的值,我使用了window.location.replace,但主页中的值是“null”.in第一次将数据发送到servlet,servlet重定向到主页。
的login.html
<form>
<p><input type="text" id="login" ></p>
<p> <input type="button" value="LOGIN" id="log" ></p>
</form>
login.js
$(document).ready(function (){
$("#log").click(function (){
var log = $("#login").val();
$.post("Test",{log:log},function(){
}).success(function (){
window.location.replace("Test?log="+log) ;
});
的servlet:Test.java
String l =request.getParameter("log");
request.setAttribute("l", l);
getServletContext()方法的getRequestDispatcher( “/针对home.jsp”)向前(请求,响应)。。
针对home.jsp
<body>
<% out.println(request.getAttribute("l")) ; %>
</body>
感谢。
答案 0 :(得分:0)
您必须使用html标记name
的属性input
来获取servlet上input
的值
答案 1 :(得分:0)
当您将表单数据从ajax请求发布到Servlet时,servlet会发送带有来自home.jsp的内容的响应,但是,它无法将浏览器重定向到home.jsp,因为它是ajax请求。因此,您需要手动(使用window.location.href属性)将浏览器重定向到home.jsp。
设置请求属性仅适用于每个请求。在你的情况下,它会在第一次发送响应你的ajax请求时工作,而不是在重定向到home.jsp时使用会话级别的attrbutes。
我建议您更改代码:
login.js
$(document).ready(function (){
$("#log").click(function (){
var log = $("#login").val();
$.post("Test",{log:log},function(){
}).success(function (){
window.location.href="home.jsp" ;
});
的servlet:Test.java
String l =request.getParameter("log");
request.getSession().setAttribute("l", l);
针对home.jsp
<body>
<%=session.getAttribute("l") %>
</body>