trhidden.jsp
- HTML code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";//String isproxystr = request.getParameter("isproxy");boolean isproxy = false;session.setAttribute("Power",5);%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'trhidden.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/trhidden.js"></script> </head> <body> <table id="tt" border="1 red solid" > </table> </body></html>
trhidden.js
- JScript code
function showtt(){ $("#tt").html( '<tr <%=session.getAttribute("Power").equals(5)?"style=\'display:none\'":"" %> >' +'<td colspan="12" style="text-align: right"><input type="button" id="excel" value="excel" onclick="alert(\'haha\')"/></td>' +"</tr>" +"<tr>" +"<td>name</td><td>age</td><td>sax</td>" +"</tr>" +"<tr>" +"<td>tys</td><td>22</td><td>nan</td>" +"</tr>" ); }
返回到浏览器的源码为什么是
<tr <%=“session.getAttribute("Power").equals(5)?"style=\'display:none\'":"" ” %> >
好像是将表达式里面的内容变成了一个String了
------解决方案--------------------
你得搞清楚页面加载的顺序,并且js文件内的服务器代码是不可能被读取到的
加载一个jsp页面->
服务器部分:读取jsp->转换jsp代码为servlet->获取处理结果到html格式->
客户端部分:加载head中的远程代码,包括css,js->执行js代码->浏览器展示页面
读取js文件的动作发生在客户端,所以里面的服务器代码不会被执行
解决方案:
1.把js代码写到jsp文件的<script>标签里
2.用ajax后置加载数据,用js返回数据
------解决方案--------------------
JS是下载到客户端,由浏览器进行解析的!
JSP是服务端通过应用服务器转换成class二进制代码进行操作的。
你使用JSP中的内置对象SESSION,在JS中肯定不识别的!
如果你想获得SESSION值,可以在JS使用AJAX间接访问调取JSP或者ACTION中的SESSION值咯!