Servlet中的代码:
public class Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("sex", "男");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
}}
index.jsp中的代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><script type="text/javascript">
<!--
function check(){
var sex = "${sex}";
if(sex == "男"){
document.getElementById("man").checked = true;
}else{
document.getElementById("woman").checked = true;
}
}
//-->
</script>
<body onload="check()">
<input type="radio" name="sex" id="man">男
<input type="radio" name="sex" id="woman">女
</body>
该代码功能已经实现了,但是不理解,${sex}和男直接的比较式怎么回事,为什么要用双等号(用equals是错误的),并且要用var sex = "${sex}",这是我偶然实现的,很困惑,请高手们指点下!
public class Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("sex", "男");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
}}
index.jsp中的代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><script type="text/javascript">
<!--
function check(){
var sex = "${sex}";
if(sex == "男"){
document.getElementById("man").checked = true;
}else{
document.getElementById("woman").checked = true;
}
}
//-->
</script>
<body onload="check()">
<input type="radio" name="sex" id="man">男
<input type="radio" name="sex" id="woman">女
</body>
该代码功能已经实现了,但是不理解,${sex}和男直接的比较式怎么回事,为什么要用双等号(用equals是错误的),并且要用var sex = "${sex}",这是我偶然实现的,很困惑,请高手们指点下!
这种用法是EL,只能在JSTL中使用。EL存取变量数据的方法如下
例如:${sex},它的意思是取出某一范围中名称为sex的变量。因为没有指定哪一个范围的sex,所以默认从Page的范围查找,然后依次是----Request-----Sesssion-----Application范围。如果途中找到了sex,就直接返回值,不再继续找下去,如果都没有找到,则返回null.
当然要告诉 解释器 后面的变量不是js变量 所以要这样用, 应该还可以 var sex = <%=sex%>;
我只说了取值的方法,又没说存值。6楼的兄弟你好像对EL和JSTL有所混淆。