2014-09-22 3 views
0

Я работаю над настольной игрой с динамическим размером доски 5х5, ..., 8x8
Это должна быть игра, которая работает в Интернете.Как передать параметры из сервлета в JavaScript

Я работаю с NetBeans и tomcat в качестве сервера для тестирования.

У меня есть GameSettings.html, который пользователь выбирает размер платы и нажимает submit.

Данные отправляются в Сервлет: GameSettingsServlet.java

Там я вытащить 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 I необходимо отправить параметр boardSize в javaScript (который должен запускаться на BoardGame.html), чтобы узнать, сколько строк и столбцов нужно создать.

Как передать boardSize в javaScript или HTML?

Я искал в Интернете, но нашел только о JSP, и мне это нужно на HTML.

+2

JSP - это какой-то промежуток между вашим java и html. Вы получите HTML из JSP, как показано в ответе andrex. – Joel

+1

Да, вам нужно использовать JSP. В противном случае вы можете сделать Ajax непосредственно на сервере и получить то, что хотите. После того, как сервлет работает, откуда выполняется запрос? – mtyson

+1

На самом деле, поскольку это для видеоигры, альтернатива ajax, вероятно, лучше, чем просмотр JSP и полная перезагрузка страницы. Eviatar, вы, вероятно, не захотите повторно загружать свой полный игровой экран каждый раз, когда будет произведена модификация, верно? В этом случае вы должны посмотреть на ajax-запросы. – Joel

ответ

2

В сервлет вы идете, как этот

request.setAttribute("boardsize" boardSize); 

Thats имя atrribute и переменной.

на странице JSP вы идете

<% int boardSize = (Integer) request.getAttribute("boardsize"); %> 

Затем, когда вы собираетесь использовать его в javasceipt вы это делаете, как этот

<script>var boardsize =<%= boardSize%>; 

Кроме того, когда вы используете Java вы должны использовать jsp вместо html, если вы хотите получить доступ к классам и переменной, заданной сервлетом на лицевой стороне.

Вы можете начать отсюда http://docs.oracle.com/cd/E21764_01/web.1111/e13712/basics.htm

После того, как вы уже понимаете весь сервлет к Jsp логике он должен быть быть куском пирога, проходящими переменным обработал с помощью сервлет.

В соответствии с указанными замечаниями существует также способ сделать ajax, и сервлет может возвращать значения, если вы используете запрос ajax. Вам нужен ответ, чтобы сделать это.

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

Он сказал, что нет JSP, только HTML. Что на самом деле не имеет смысла ... этот ответ - правильная идея. – mtyson

+0

Я использовал Ajax, отправляя параметры на некоторый сервлет с «url: servletName», а на сервлет я использовал PrintWriter для печати параметра. Я также использовал объект Gson для преобразования результата в Json – E235

-1

Вы также можете прочитать параметры URL-адреса с помощью JavaScript с чистой клиентской стороной, например. при загрузке страницы. Поэтому для этого вам не нужен сервлет.

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'); 

Но когда вам действительно нужно сервлет для передачи параметров, первый ответ правильный путь. В качестве альтернативы вы можете использовать AJAX для связи с сервером. Наверное, это лучший способ для игры в JavaScript.

+0

Может быть много причин, например, наличие постоянного мира, нескольких клиентов и т. Д. – Joel

+0

Может быть много причин, мой друг, почему он нуждается в серверном обращении. Во-первых, он использовал ** java **, который говорит, что ему действительно нужно называть серверы в первую очередь – andrex

+0

Все в порядке. Я прочитал вопрос слишком быстро. Я не видел объект «Двигатель». – agassner

Смежные вопросы