java变量的奇怪行为
我遇到了一种我无法解释的奇怪行为。这是我的JSP页面代码java变量的奇怪行为,java,javascript,jsp,if-statement,Java,Javascript,Jsp,If Statement,我遇到了一种我无法解释的奇怪行为。这是我的JSP页面代码 <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*,java.util.*" errorPage="" %> <% String qid = request.getParameter("qid"); int qno; int choice = 0; if(qid==null) qno = 1;
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*,java.util.*" errorPage="" %>
<%
String qid = request.getParameter("qid");
int qno;
int choice = 0;
if(qid==null)
qno = 1;
else
qno = Integer.parseInt(qid);
%>
<script>
function f1()
{
var check;
if(document.getElementById('r1').checked||document.getElementById('r2').checked||document.getElementById('r3').checked||document.getElementById('r4').checked)
{
check = true;
if(document.getElementById('r1').checked){
<% choice = 1; %>
}
else if(document.getElementById('r2').checked){
<% choice = 2; %>
}
else if(document.getElementById('r3').checked){
<% choice = 3; %>
}
else {
<% choice = 4; %>
}
}
else{
alert("Select an answer");
check = false;
}
if(check){
<%
out.println("document.form1.action=\"starttest.jsp?qid="+qno+"&choice="+choice+"\"");
%>
document.form1.method="post";
document.form1.submit();
}
}
</script>
<form id ="form1" name="form1" method="post" action="">
<%
try{
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/examination?" +"user=root&password=nawed");
PreparedStatement ps=conn.prepareStatement("select question_text from question_master where question_id=?");
ps.setInt(1,qno);
ResultSet rs=ps.executeQuery();
while(rs.next()){
out.println("1><B>"+rs.getString(1)+"</B><br/>");
}
ps=conn.prepareStatement("select choice_1,choice_2,choice_3,choice_4,answer from multichoice_question where ques_id=?");
ps.setInt(1,qno);
rs= ps.executeQuery();
while(rs.next()){
session.setAttribute("pans",rs.getString(5));
%>
<input type="Radio" name="radio" id="r1"/><%=rs.getString(1)%><br/>
<input type="Radio" name="radio" id="r2"/><%=rs.getString(2)%><br/>
<input type="Radio" name="radio" id="r3"/><%=rs.getString(3)%><br/>
<input type="Radio" name="radio" id="r4"/><%=rs.getString(4)%><br/>
<input type="button" name="button" value="Submit" onclick="f1()"/>
<%
}
ps.close();
rs.close();
}catch(Exception e){}
%>
</form>
</body>
</html>
函数f1()
{
var检查;
if(document.getElementById('r1')。checked | | | document.getElementById('r2')。checked | | | document.getElementById('r3')。checked | | document.getElementById('r4')。checked)
{
检查=正确;
if(document.getElementById('r1')。选中){
}
else if(document.getElementById('r2')。选中){
}
else if(document.getElementById('r3')。选中){
}
否则{
}
}
否则{
警告(“选择答案”);
检查=错误;
}
如果(检查){
document.form1.method=“post”;
文件。表格1。提交();
}
}
问题是每次在查询字符串中我都会得到选择值4,但有趣的是,当我使用javaScript变量时,问题得到了解决,比如:
<script>
function f1()
{
var check;
if(document.getElementById('r1').checked||document.getElementById('r2').checked||document.getElementById('r3').checked||document.getElementById('r4').checked)
{ var choice;
check = true;
if(document.getElementById('r1').checked){
choice = 1;
}
else if(document.getElementById('r2').checked){
choice = 2;
}
else if(document.getElementById('r3').checked){
choice = 3;
}
else {
choice = 4;
}
}
else{
alert("Select an answer");
check = false;
}
if(check){
<%
out.println("document.form1.action=\"starttest.jsp?qid="+qno+"&choice=\"+choice");
%>
document.form1.method="post";
document.form1.submit();
}
}
</script>
函数f1()
{
var检查;
if(document.getElementById('r1')。checked | | | document.getElementById('r2')。checked | | | document.getElementById('r3')。checked | | document.getElementById('r4')。checked)
{var选择;
检查=正确;
if(document.getElementById('r1')。选中){
选择=1;
}
else if(document.getElementById('r2')。选中){
选择=2;
}
else if(document.getElementById('r3')。选中){
选择=3;
}
否则{
选择=4;
}
}
否则{
警告(“选择答案”);
检查=错误;
}
如果(检查){
document.form1.method=“post”;
文件。表格1。提交();
}
}
我无法解释这种奇怪的行为。如果有人能用简单的方式解释这一点,那将非常有帮助:)JavaScript在客户端运行。Java在应用程序/web服务器上运行 将JSP看作是一个输出客户机文档(HTML、JavaScript、CSS等)的大型Java方法 因此,在下面的代码片段中:
if(document.getElementById('r1').checked){
<% choice = 1; %>
}
else if(document.getElementById('r2').checked){
<% choice = 2; %>
}
else if(document.getElementById('r3').checked){
<% choice = 3; %>
}
else {
<% choice = 4; %>
}
因此,选择最终将是4。if语句是JavaScript,浏览器将执行该语句,而与Java逻辑无关。这不是strage,您将JavaScript和Java混为一谈。Java行在呈现页面时执行,远远早于JavaScript执行。
choice = 1;
choice = 2;
choice = 3;
choice = 4;