1.关键词:登录功能,session存取
在controller里面可以将数据存入session,jsp中可以取出。
应用:登录成功后,将用户存入session,然后在jsp中可以从session读取出来。
controller中只需在方法中传入一个HttpSession,然后使用该对象setAttribute
js中这样获取:"${sessionScope.username }"
2.400错误:The request sent by the client was syntactically incorrect.
客户端请求语法有错误。controller直接接收不到任何信息。只能通过浏览器F12查看请求的参数,
情况1:当js使用了时间选择器,后台用java.util.Date接收,可能报错。
只要在Controller中添加。
@InitBinder
public void initbinder(WebDataBinder binder) {
binder.registerCustomEditor (Date.class, new CustomDateEditor (
new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"), true));
// binder.registerCustomEditor(Integer.class, new IntegerEditor());
// binder.registerCustomEditor(long.class, new LongEditor());
// binder.registerCustomEditor(double.class, new DoubleEditor());
// binder.registerCustomEditor(float.class, new FloatEditor());
}
情况2:请求的参数中,包含值为null的参数。例如:username:null
暂时没有统一的解决办法,根据情况灵活解决。比如在js中判断是否为null,如果是null,则username="";
3.eval函数的使用(从对象中取值)。
例如:
function (data) {
for (o in result) {
alert("o= "+o+"\ndata[o].id= "+result[o].id+"\ndata[o]= "+JSON.stringify(result[o]));
}}
data这种数组对象,一般进行遍历时候,期待的结果是"o"是一个阿拉伯数字,是数组中元素的下标,data[o]是数组的元素。
有时候会发生使用data[o].id这样的取值方法的时候,浏览器F12,consle中会报错,类似找不到data[o]这种属于空指针异常的错误。
打印遍历的结果中,"o"不再是一个数字,而是成为了data对象的一个属性,例如“o=id”.可想而知,data[o]在这种情况相当于data[id]这样的不可能存在的null值,而拿着data[id].id去取值,不报空指针异常才怪。
发生原因:
返回的结果不是对象。浏览器的F12调试,虽然看到返回的结果是json格式,甚至使用typeof函数打印出来的data都是对象类型,可依然抛出异常。最保险的做法是,使用JSON.stringify先把data处理成json字符串,然后使用eval去处理成对象。
所以完整代码应该是。
var result =eval("([" + JSON.stringify(data) + "])");
function (data) {
for (o in result) {
alert("o= "+o+"\ndata[o].id= "+result[o].id+"\ndata[o]= "+JSON.stringify(result[o]));
}}
4.html的元素的src属性赋值问题
var result1="127.0.0.1:8080/a.txt";
var result2="http://127.0.0.1/a.txt";
var elemIF = document.createElement("iframe");
elemIF.src = result1;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
赋值数字开头的result1时,再打印elemIF.src,会在result1前面多一个%3.
但是如果在result1前面添加字母,例如变成result2.则打印正常。
5.jsp文件路径获取(下载例子)
<a href='javascript:void(0);' οnclick='return downloadFile();'>下载</a>
function downloadFile() {
try {
var elemIF = document.createElement("iframe");
elemIF.src = "${pageContext.request.contextPath}/"+result;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
} catch (e) {
alert("异常:" + e);
}}