Как передать значения JavaScript в Scriptlet в JSP?
может ли кто-нибудь сказать мне, как передать значения JavaScript в Scriptlet в JSP?
8 ответов
ваши значения javascript являются клиентскими, ваш скриптлет работает на стороне сервера. Так что если вы хотите использовать JavaScript переменные в сценарий, вам нужно будет представить их.
для этого либо сохраните их в полях ввода и отправьте форму, либо выполните запрос ajax. Я предлагаю вам изучить JQuery для этого.
Я могу предложить два способа,
а.ССП,
<html>
<script language="javascript" type="text/javascript">
function call(){
var name = "xyz";
window.location.replace("a.jsp?name="+name);
}
</script>
<input type="button" value="Get" onclick='call()'>
<%
String name=request.getParameter("name");
if(name!=null){
out.println(name);
}
%>
</html>
б.ССП,
<script>
var v="xyz";
</script>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>
просто, вы не можете!
JSP-серверная сторона, javascript-клиентская сторона, что означает, что во время оценки javascript больше нет "кода jsp".
я интерпретировал этот вопрос как:
"кто может сказать мне, как передать значения на JavaScript для использования в JSP?"
Если это так, этот HTML-файл передаст вычисляемую сервером переменную JavaScript в JSP.
<html>
<body>
<script type="text/javascript">
var serverInfo = "<%=getServletContext().getServerInfo()%>";
alert("Server information " + serverInfo);
</script>
</body>
</html>
Если вы говорите, что хотите передать значение javascript из одного jsp в другой в javascript, то используйте метод URLRewriting для передачи переменной javascript в следующий файл jsp и доступа к нему в следующем JSP в объекте запроса.
другие мудрые вы не могу сделать это.
Это невозможно, как вы ожидаете. Но ты можешь сделать что-то подобное. Передайте значение вашего Java-скрипта сервлету / контроллеру, выполните обработку, а затем передайте это значение на страницу jsp, поместив его в какой-то объект в качестве вашего требования. Затем вы можете использовать это значение, как вы хотите.
вы не можете этого сделать, но вы можете сделать наоборот:
в вашем jsp вы можете
<%
String name = "John Allepe";
request.setAttribute("CustomerName", name);
%>
доступ к переменной в js
<script>
var name = "<%= request.getAttribute("name") %>";
alert(name);
</script>
Это для других людей, высадившихся здесь. Прежде всего вам нужен сервлет. Я использовал запрос @POST. Теперь в вашем файле jsp у вас есть два способа сделать это:
-
сложный способ с AJAX, если вы новичок в jsp: Вам нужно сделать сообщение с javascript var, который вы хотите использовать в своем java-классе, и использовать JSP для вызова функции java из вашего запроса:
$(document).ready(function() { var sendVar = "hello"; $('#domId').click(function (e) { $.ajax({ type: "post", url: "/", //or whatever your url is data: "var=" + sendVar , success: function(){ console.log("success: " + sendVar ); <% String received= request.getParameter("var"); if(received == null || received.isEmpty()){ received = "some default value"; } MyJavaClass.processJSvar(received); %>; } }); }); });
-
легкий путь как раз с JSP:
<form id="myform" method="post" action="http://localhost:port/index.jsp"> <input type="hidden" name="inputName" value=""/> <% String pg = request.getParameter("inputName"); if(pg == null || pg.isEmpty()){ pg = "some default value"; } DatasyncMain.changeToPage(pg); %>; </form>
конечно, в этом случае вам все равно придется загрузить входное значение из JS (до сих пор я не придумал другой способ его загрузки).