2015-07-31 6 views
0

Вот мой код:Можем ли мы использовать скриптлеты внутри Javascript?

<%@page contentType="text/html"%> 
<%@page pageEncoding="UTF-8"%> 
<%@page import="java.sql.*"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Example of Java Server Page with JDBC</title> 
    </head> 
<script> 
function myFunction() { 
    var x='<% request.getParameter("ServerName"); %>'; 
    alert(x); 
</script> 
<body> 
<form> 
    ServerName: <input type="text" name="ServerName" required> <br><br> 
<input type="submit" id="btnSubmit" name="btnSubmit" /> 
      </div> 
      </form> 
    </body> 
</html> 

Здесь в приведенной выше функции OnClick кнопки я хочу, чтобы выполнить скриптлет, который находится внутри JavaScript?

+1

Что произошло, когда вы попробовали? – epascarello

+0

Вы избегаете скриптлета в jsp. Используйте [EL] (https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html) или [JSTL] (http://docs.oracle.com/javaee/5/tutorial/doc/ bnakc.html) –

+0

Поле оповещения было пустым @epascarello –

ответ

1

Похоже, что вы размещаете JSP-код на странице JavaScript или, по крайней мере, на странице, отличной от JSP. Сценарии могут быть включены только на страницу JSP (обычно это параметр * .jsp).

Заявление, представленное, если оно обработано компилятором JSP, приведет к тому, что myVar будет равен '' в качестве формата сценария, который вы используете <% ...%> выполняет код Java между тегами, но не возвращает результат.

Таким образом, чтобы использовать этот тег, вам необходимо вручную записать значение в выходной поток запроса. Для получения требуемой функциональности вам нужно сделать следующее:

убедитесь, что ваш код на странице JSP, если да, то

function myFunction() { 
    var x= '&lt;%= request.getContextPath() %&gt;'; //(note the equals sign) 
    alert(x); 
} 

С учетом всего сказанного, скриптлеты рассматриваются как плохая практика, в большинстве случаев , В большинстве случаев вы должны использовать выражения JSTL и настраиваемые теги.

+0

Есть ли способ, чтобы я мог получить значение в текстовом поле, которое будет использоваться между тегами сценария. –

+0

значение текстового поля может быть получено request.getParameter ("textboxName"); в сценариях. –

+0

Как вы могли видеть мой код, я попробовал, но все еще не работал –

1

вы также можете использовать это:

<%@page contentType="text/html"%> 
<%@page pageEncoding="UTF-8"%> 
<%@page import="java.sql.*"%> 
<% 
String ServerName = (String)request.getParameter("ServerName"); 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Example of Java Server Page with JDBC</title> 
    </head> 
<script> 
function myFunction() { 
    var x='<%=ServerName%>'; 
    alert(x); 
</script> 
<body> 

    ServerName: <input type="text" name="ServerName" required> <br><br> 
<input type="submit" id="btnSubmit" name="btnSubmit" /> 
      </div> 
      </form> 
    </body> 
</html> 
+0

Это не работает –

1

Вы можете, но если вы хотите, чтобы результат будет передан JavaScript вы должны вывода что-то.

var x='<%= request.getParameter("ServerName"); %>'; 
     ^output! 

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

(И, очевидно, это не сработает до тех пор, пока форма не будет отправлена)

+0

Не могли бы вы объяснить мне более подробно .. –

+0

@srikanthr - Что вам еще нужно? Это базовая концепция и исправление одного символа, которое я выделил для вас в ответе. – Quentin

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