我正在开发一款棋盘游戏,其动态棋盘尺寸为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。
答案 0 :(得分:2)
在你的servlet中,你就这样去了
request.setAttribute("boardsize" boardSize);
这是atrribute和变量的名称。
你去的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,servlets,jsp的内容时,你会了解到更多。只需要花更多的精力阅读,这样你就可以学到它并不是很难理解,但如果你发现这样做有困难,请耐心等待。
答案 1 :(得分:0)
以下给出的代码可以满足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>
答案 2 :(得分:-1)
您也可以使用纯客户端JavaScript读取网址参数,例如在页面加载。所以你不需要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游戏的最佳方式。