2014-04-16 16 views
1

首先感謝您對我的問題花時間返回servlet的一個值,jsp頁面。用ajax

這裏我想做的事:當我的jsp頁面加載,我想從我的servlet的值設置我的按鈕的實際狀態和我的滑塊值的實際狀態。之後在我的網頁上更新,我想改變它的價值。我已經可以將JSP頁面值傳遞給我的servlet,但是我仍然堅持將值從servlet傳遞到jsp頁面。

下面是一些代碼,以幫助

問候

JSP文件

<!--<!--DOCTYPE html --> 

<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="./resources/css/jquery.mobile-1.4.2.css"> 
<script src="./resources/script/jquery-1.11.0.js"></script> 
<script src="./resources/script/myJquery.js"></script> 
<script src="./resources/script/jquery.mobile-1.4.2.js"></script> 
</head> 
<body> 


    <!-- RDC SUB WINDOW LIVING --> 
    <div data-role="page" ID="LIVING"> 
     <div data-role="header"> 
      <a href="#RDC" 
       class="ui-btn ui-corner-all ui-shadow ui-icon-home ui-btn-icon-left">HOME</a> 
      <h1>LIVING ROOM</h1> 
     </div> 

     <div data-role="main" class="ui-content"> 
      <div data-role="collapsible"> 
       <h1>CELLING: LIGHT</h1> 
       <div class="containing-element"> 
        <img src="./resources/images/light-on.png" alt="LIGHT-ON" 
         class="ui-li-icon"> <br> <select id="tLight" 
         name="tLight" data-role="slider"> 
         <option value="off">Off</option> 
         <option value="on">On</option> 
        </select> <input type="range" name="tDimmer" id="tDimmer" value="0" min="0" 
         max="100" data-popup-enabled="true"> 
       </div> 

      </div> 
     </div> 

     <div data-role="footer"> 
      <h1></h1> 
     </div> 
    </div> 

Ajax代碼

//Living room Server $POST 
$(document).ready(function() { 

    $(function Dimmer() { 
     $("#tDimmer").change(function() { 
      $.post("MyServlet", { 
       mLivingDimmer : $("#tDimmer").val() 
      }); 
     }); 
    }); 
    $(function Light() { 
     $("#tLight").change(function() { 
      $.post("MyServlet", { 
       mLivingLight : $("#tLight").val() 
      }); 
     }); 
    }); 
}); 

servlet代碼:

package com.linux; 

import java.io.IOException; 
import java.io.PrintWriter; 

import com.pi4j.io.gpio.GpioController; 
import com.pi4j.io.gpio.GpioFactory; 
import com.pi4j.io.gpio.GpioPinDigitalOutput; 
import com.pi4j.io.gpio.PinState; 
import com.pi4j.io.gpio.RaspiPin; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


//@WebServlet("/MyServlet") 
public class MyServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    //GpioController gpio; 
    //GpioPinDigitalOutput mLight; 
    String LightState = "on"; 
    String DimmerValue = "25"; 

    public MyServlet() { 
       super(); 

    } 


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    } 


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     System.out.println("LivingLight = "+request.getParameter("mLivingLight")); 
     System.out.println("LivingDimmer = "+request.getParameter("mLivingDimmer"));  
    } 
} 

回答

1

System.out.println()打印到控制檯,即到Tomcat的控制檯(或任何你的servlet容器),如果你開始它在命令提示符下或通過點擊一個批處理文件。你想打印迴應。因此,你需要:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 
    out.write("LivingLight = "+request.getParameter("mLivingLight")); 
    out.write("LivingDimmer = "+request.getParameter("mLivingDimmer"));  
} 

然後在你的Ajax,你需要一個成功的功能,您將使用解析字符串操作是回來來自服務器的響應:

   ..., 
      success : function(data) 
      { 
       //Parse data 
      }, 
      .... 
+0

的System.out的。我的servlet中使用的println()只是爲了看到我的servlet正在從網頁接收POST。正如我所說的即時通訊尋求做,它的時候,我的網頁是準備去拿LightState和DimmerValue字符串返回到該網頁,所以我可以更改它之前刷新按鈕,sldier欄值。 – Mav3r1ck

+0

在任何情況下,將它們寫出來作爲響應是您將它們從servlet傳回客戶端的方式。 – developerwjk

+0

所以我在我的servlet中添加了一個響應PrintWriter out = response.getWriter(); \t \t out.write(LightState);但我不知道如何發送POST來獲得這個響應,當我的頁面第一次加載。 – Mav3r1ck