- 本项目静态资源由网络收集得来,并加以大范围修改
- 未经许可不得将本项目商用,如需商用请联系作者zxr@tju.edu.cn
基于SSM框架开发的商城系统,代码严格遵循MVC分层**,可部署到服务器上,设计精良,不断完善
- 前端对应View层
- 前端使用jsp页面展示,并通过EL表达式接收服务器打给浏览器的数据
- 使用js实现网页动态效果,通过jQuery简化操作,并配合html5实现前端的数据校验
- 使用Ajax技术完成前端用户名可用性校验、退出登录功能
- com.supermarket.filter包用于存放过滤器
- CharacterEncodingFilter类实现全局乱码处理,包括POST请求、GET请求、响应
- AutoLogin类实现用户自动登录功能
- com.supermarket.web包对应Controller层,通过SpringMVC实现
- UserController类实现用户登录、注销、注册、检查用户名等功能
- com.supermarket.interceptor包为SpringMVC拦截器,通过Logging类实现用户请求信息的日志记录
- com.supermarket.service包属于Model层
- 使用com.supermarket.service.UserService实现登录、注册、检查可用性等功能
- 使用com.supermarket.service.ValistrService完成验证码生成和比对相关功能
- com.supermarket.aspect存放切面类,其中Logging实现异常日志记录、执行时间统计等功能
- com.supermarket.dao包属于Model层,通过MyBatis实现
- UserDao为接口,配合UserMapper使用
- com.supermarket.mapper为MyBatis的mapper文件存放位置,配合UserDao实现对用户的增删改查
版本号 | 更新内容 | 上传时间 |
---|---|---|
0.1 |
|
2020年8月3日 |
0.1.1 |
|
2020年8月7日 |
0.1.2 |
|
2020年8月9日 |
0.2 |
|
2020年8月20日 |
0.2.1 |
|
2020年8月22日 |
0.2.2 |
|
2020年8月24日 |
0.2.3 |
|
2020年8月25日 |
0.3 |
|
2020年9月25日 |
0.3.1 |
|
2020年9月29日 |
0.3.2 |
|
2020年10月1日 |
- JDK版本:OpenJDK11
- 服务器:tomcat7.0.62
- 开发环境:IntelliJ Idea 2020.1.4
- 框架:Spring5.2.3;SpringMVC5.2.3;Hibernate validator5.4.3;MyBatis3.2.2
- HttpServletRequest的装饰者类HttpServletRequestDecorator中的getParameterMap重写方法中,不能在原地进行参数字符集修改,否则如果调用两次及以上该方法时会编码多次,造成乱码
- 对请求参数的拦截处理,如果用到装饰者模式,最好在一处完成。如果在多处完成会造成请求参数的重复处理,从而导致乱码或者拿到非预期的参数值
- 用户的登录信息最好保存到session域中,在0.2.1中的自动登录成功后误把user对象塞入到了request域,造成了重启服务器自动登录失效的bug。
- 使用过滤器将密码加密,不仅要将参数为password的值加密,还要将参数为password2的值加密,否则永远确认密码不一致
- 使用SpringMVC处理请求参数,如果自动封bean作为方法参数传入,那么该bean所携带的请求参数是不经过过滤器的!原因未知
- 自动登录最好使用过滤器实现,因为SpringMVC拦截器无法拦截index.jsp。而因为使用过滤器的时候Spring容器还未初始化,所以过滤器的属性需要手工注入
- 即便上一次响应设置了cookie的path,下一次请求携带的cookie的path也会是null。因此如果要修改或删除cookie,一定要严格满足name, path都设置,否则可能会无效