如何使用值重定向到servlet

时间:2015-02-22 01:12:33

标签: java javascript jsp servlets

我想从登录页面重定向到主页(.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>

感谢。

2 个答案:

答案 0 :(得分:0)

您必须使用html标记name的属性input来获取servlet上input的值

答案 1 :(得分:0)

  1. 当您将表单数据从ajax请求发布到Servlet时,servlet会发送带有来自home.jsp的内容的响应,但是,它无法将浏览器重定向到home.jsp,因为它是ajax请求。因此,您需要手动(使用window.location.href属性)将浏览器重定向到home.jsp。

  2. 设置请求属性仅适用于每个请求。在你的情况下,它会在第一次发送响应你的ajax请求时工作,而不是在重定向到home.jsp时使用会话级别的attrbutes。

  3. 我建议您更改代码:

    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>