[英]Pass POST Parameters with Jquery POST to Javascript from Java Servlet
[英]How to pass parameters from servlet to JavaScript
我正在做一個棋盤游戲,動態棋盤大小為5x5,...,8x8
這應該是在網絡上運行的游戲。
我正在使用NetBeans和tomcat作為測試服務器。
我有GameSettings.html,用戶可以選擇面板尺寸並按提交。
數據將發送到名為GameSettingsServlet.java的servlet。
在那里,我拉出boardSize並將其解析為整數:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createEngine(request);
processRequest(request, response);
}
private void createEngine(HttpServletRequest request)
{
int boardSize = Integer.parseInt(request.getParameter("boardSize"));
int numberOfPlayers = Integer.parseInt(request.getParameter("numberOfPlayers"));
m_Engine = new Engine(boardSize, numberOfPlayers );
}
我想用javaScript創建開發板,所以我需要將boardSize參數發送到javaScript(應該在BoardGame.html上運行),以便知道要創建多少行和列。
如何將boardSize傳遞給javaScript或HTML?
我在網上搜索,但只找到有關JSP的信息,我需要HTML上的信息。
在您的servlet中,您像這樣
request.setAttribute("boardsize" boardSize);
多數民眾贊成在名稱和變量。
您在jsp頁面中
<% int boardSize = (Integer) request.getAttribute("boardsize"); %>
然后,當您要在javasceipt中使用它時,您需要像這樣
<script>var boardsize =<%= boardSize%>;
同樣,在使用Java時,如果要訪問前端servlet設置的類和變量,則需要使用jsp而不是html。
您可以從這里開始http://docs.oracle.com/cd/E21764_01/web.1111/e13712/basics.htm
一旦您已經了解了整個servlet到jsp的邏輯,那么傳遞servlet所處理的變量應該是小菜一碟。
根據注釋所指出的,還有一種做ajax的方法,如果您使用ajax請求,則servlet可以返回值。 您確實需要響應才能執行此操作。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
private void processRequest(HttpServletRequest request, HttpServletResponse response){
int boardSize = Integer.parseInt(request.getParameter("boardSize"));
int numberOfPlayers = Integer.parseInt(request.getParameter("numberOfPlayers"));
m_Engine = new Engine(boardSize, numberOfPlayers );
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.write("<board>" + boardSize + "</board>");
out.flush();
}
我敢打賭,當您閱讀有關Java,Servlet,JSP的更多信息時,您將學到更多。 只需花更多的精力在閱讀上,這樣您就可以了解它並不難理解,但是如果您發現這樣做有困難,請耐心等待。
以下給出的代碼可以滿足JSP對Servlet的響應。 // setParameter-getparameter
// jsp --
<form id="form1" name="form1" runat="server"
action="/YFCustomize/hello" method ="Post" >
<input id="MBA_DB" name="MBA_DB" type="text" value="11111" />
<input id="Button2" type="submit" value="Validate" />
</form>
// to Servlet -
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String txtMBA_DB=request.getParameter("MBA_DB");
String txtMBA_ip=request.getParameter("MBA_ip");
}
下面給出的代碼可以滿足Servlet對JSP的響應。 // setAttribute-getAttribute
// Servlet -
request.setAttribute("MBA_DB_VALIDATE",MBA_DB_VALIDATE);
request.setAttribute("YF_DB_VALIDATE",YF_DB_VALIDATE);
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/YFCustomize/index2.jsp");
rd.include(request, response); // or rd.forward(request, response);
// to JSP -
MBA_DB_VALIDATE : <%= request.getAttribute("MBA_DB_VALIDATE") %>
</br>
YF_DB_VALIDATE : <%= request.getAttribute("YF_DB_VALIDATE") %>
</br>
您也可以使用純客戶端JavaScript讀取URL參數,例如在頁面加載時。 因此,您不需要一個servlet。
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
用法(例如,加載DOM時):
var prodId = getParameterByName('prodId');
但是,當您確實需要servlet傳遞參數時,第一個答案就是正確的方法。 或者,您可以使用AJAX與服務器通信。 也許這是開發JavaScript游戲的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.