SpringMVC Controller函数参数问题(就是作为方法的参数,以类名小写开头可以在JSP页面中获得该变量的数据 )
今天在看别人写的程序时发现了一个特殊的问题,就是在代码里并没有看到将对象写入域的代码,但在JSP页面上又能获得对象的数据。
说明:项目用的是:SpringMVC + Spring + MyBatis
方法名为如下:
Page对象就是一个普通的java类如下:
就是这样但在,函数里并没有写入域的代码,但JSP页面能的到这个对象的数据,于是我做了一下的实验。
测试开始:
创建配置好工程后先创建一个Page对象,如下:
在写一个测试的Controller方法,如下:
然后是JSP, 如下:
运行结果如下:
这里也是的到这样的结果,在多次的测试后,我发现在JSP页面把方法的参数类的名称小写就可已获得变量得值,于是我改下的测试方法,如下:
JSP如下:
运行结果,如下:
从上面可以结果和JSP可以看出存在request域里的变量名是参数类名的首字母小写的名字,与变量名无关
再来一波测试
方法如下:
JSP如下:
运行结果,如下:
从上面的测试可已看出当参数类型有多个并有相同的类型时,在JSP页面上获取到的是最有一次赋值变量的值。
注意:参数都是存在request域里,我写的参数名是类型的首字母小写,但其实这个变量名可以为任何名字,但在JSP页面取得时候必须写成你参数类型的类名(首字母小写(⊙o⊙)哦)。
总结:
从上面可以看出(经过多次测试(⊙o⊙)哦!上面只是一个简单的过程)当SpringMVC的Controller方法的参数类(类型不限),你向这个变量写数据后,会存入request域里,如果这个方法有多个相同的参数类型,那么域里存的是最有一次修改这个 类型的变量的值,在JSP页面可以通过类名首字母小写来获得数据。