繁体   English   中英

如何将参数从servlet传递到JavaScript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM