这是我的代码:
<%@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>
这里在上面的函数中点击一个按钮我想执行javascript里面的scriptlets吗?
答案 0 :(得分:1)
听起来您将JSP代码放在JavaScript页面中,或者至少放在非JSP页面中。 Scriptlet只能包含在JSP页面中(通常配置为* .jsp)。
如果由JSP编译器处理,所呈现的语句将导致myVar等于''作为您正在使用的scriptlet格式&lt;%...%&gt;在标记之间执行Java代码,但不返回结果。
因此,要使用此标记,您需要手动将值写入请求输出流。要获得所需的功能,您需要执行以下操作:
确保您的代码在JSP页面中,如果是,则
function myFunction() {
var x= '<%= request.getContextPath() %>'; //(note the equals sign)
alert(x);
}
尽管如此,在大多数情况下,scriptlet被视为不好的做法。对于大多数情况,您应该使用JSTL表达式和自定义标记。
答案 1 :(得分: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>
答案 2 :(得分:1)
您可以,但如果您希望将结果传递给JavaScript,则必须输出。
var x='<%= request.getParameter("ServerName"); %>';
^ output!
...除非你采取措施来逃避这些数据,否则你很容易受到XSS攻击。
(显然,在实际提交表单之前,这不起作用)