为什么jsp可以读取java中的数据

Python010

为什么jsp可以读取java中的数据,第1张

因为jsp本质上就是servlet,提供了访问request、session、context三大域对象,用来对java(姑且认为你说的是controller层)与jsp(页面)之间的数据交互。

reqest:

在jsp页面中,在java脚本片段中可以用request.getattribute("xx")获取servlet转发时候传过来的参数。因为转发属于同一次请求。一次请求的参数会存在request域中。你可以这样去取。

如果是重复定向,你可以拼接参数,jsp页面用request.getparameter()可以去取。

session:

只要你在java程序中声明,在jsp页面中,java脚本片段中可以用request.getsession("xx"),就可以获取取。无论是转发还是重定向。因为session的作用在本次会话

context

即applicationContext作用域,作用于整个网站。一般不用

你使用el表达式${xx},其实就是request.getattribute("xx")或request.getsession("xx"),只是jsp给你封装了。不用你这么麻烦的去写

js与java是不同语言,运行在不同环境下,因此无法直接获得对方数据。java运行在服务器端,在同一个jsp文件中,java先运行,js后运行,java可以生成一段js代码,保证js运行得到相应的结果,因此可以用java定义js变量的方式来传递数据,例如:<pre t="code" l="html"><script>

var "<%=url%>"

alert(username)

</script>上面例子,<%%>中的内容会在服务器端运行,在“”中间输出网址,浏览器就会加载下面的结果:<pre t="code" l="html"><script>

var "gif8"

alert(url)

</script>这部分就是标准的js代码了。

<%

new

UserDao().setLoginNum(5)

//这里创建了一个对象

设值5

//而你输出时又创建了一个对象,

这完全是2个不同的对象

out.print(new

UserDao().getLoginNum())

%>

这就好比你去超市,把物品存在2号柜,却跑到3号柜里取,肯定是没有的

你可以这样:

<%

UserDao

ud

=

new

UserDao()

ud.setLoginNum(5)

out.print(ud.getLoginNum())

//这样才是基于一个对象操作

%>