项目

  • 项目描述
  • 项目中遇到的问题

1.EI表达是里为什么可以直接调用对象的私有属性
用ajax实现前后端分离时遇到一个问题,就是获取用户名时${user.name}不理解为什么这么写可以直接获取到对象的属性,经过查阅明白了,其实并不是直接取出user的name属性的值,而是EI会自动将“name”这个名字变成“getName()”,从而再user对象中调用getName()方法,获取到name属性的值。

2.输入校验的问题,没有前后端都进行校验。
在校验用户邮箱的时候只进行了前端校验,并没有进行后端校验。
必须在后端校验的
唯一性验证,验证码,敏感词,出错概率高的要做异步校验。
后端校验可以防止接口被私自调用导致破坏数据库结构;避免有人模拟浏览器行为直接给服务器发请求。

有必要在前端校验的
必填项、(邮箱、电话号、地址)格式、密码强度检测。
前端校验便于用户纠正(快速反馈),并且减少服务器压力、节省流量(减少无意义的请求),主要对用户友好。
比如手机号码,邮箱号不合法,或者密码强度太弱,在前端校验可以不等后端返回,直接提醒用户不合法,让用户及时知晓并更改,避免不必要的提交,再等待服务器返回错误信息。

3.Tomcat默认不支持ajax的put和delete请求
在使用rest风格的url,更新员工的邮箱信息时,出现了sql报错。这是因为Tomcat不支持put和delete请求,所以造成了请求体有数据,但是对象封装不上。Tomcat一看前端的请求是PUT和DELETE请求,就不会将要传递的数据封装成map,所以springmvc在封装pojo对象时调用request.getParameter(“”)方法也就拿不到值。当执行一个更新操作时,就会出现这种语句,update。。。;where。。。 没有set语句,即没有任何要更新的值,所以就会报sql语法错误。

Tomcat:
1、会将请求体中的数据,封装一个map。
2、springmvc封装对象时调用的request.getParameter(“”)方***从这个map中取值。
3、SpringMVC封装POJO对象的时候。会对POJO中每个属性的值调用request.getParamter(“”)方法。

解决方法:
web.xml中配置HttpPutFormContentFilter过滤器
HttpPutFormContentFilter将要传递的数据重新封装成一个自己创建的map对象,并重写了request.getParameter()方法,当发送PUT请求时就会从自己的map对象中取数据。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务