简单商城ssm开发过程中遇到的问题
遇见的问题:
1、spring mvc 拦截,不能全部拦截,若如此做,将不能直接访问静态资源(html\js\css).
2、form 表单里的任意button将会直接提交表单。但是给button加上type="button"类型后,就不会提交form表单了。
3、关于jstl的引入 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 正确
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
4、@SessionAttribute 和 modelAttribute 有些许小冲突。使用modelAttribute接受参数,而且还需将方法里某个数据放入session。此时就需要提前访问一次该方法。 或者不适用modelAttribute接受参数。
5、关于springmvc的session ,springmvc 提供的方法,通过注解 @sessionAttribute()配合model\map去配置session,此种方法配置的session,前端通过sessionScope,后台通过request.getSession()都可以获取。但是通过request.getSession().removeAttribute()的删除,应该是删除的Tomcat容器里的session。此时删除后,前端依然可以访问。必须要用spring容器里提供的 sessionStatus.setComplete()清空。清空后,前段页面已不能访问session(估计前端页面访问的都是spring容器),但是tomcat容器里面的Session并没有删除。亦或是与我猜想不一致,session是需要刷新的。
6、cookie :
Cookie hit = new Cookie("hitCounter",hitCounter.toString()); Cookie cookie = new Cookie("data",URLEncoding.encoding(data,"utf-8"));
//如果设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法访问该Cookie
// hit.setMaxAge(60*60);//设置生存期为1小时 |
前段获取cookie:
1\cookie.data.value
7、若是使用maven开发,有些jar会需要加入到tomcat容器下,例如 jstl\gson
8、springmvc 和 ajax的交互,回传data
/* 方式一 通过servlet中的response返回数据 * @throws IOException */ @RequestMapping(value="/ajax.do") public void Ajax(HttpServletResponse resp) throws IOException{ resp.getWriter().write("hello ajax"); } |
//方式二 通过流的形式 @RequestMapping(value="/ajax1.do") public void Ajax1(Writer out) throws IOException{ out.write("hello ajax1"); } |
//方三 通过注解的形式 @RequestMapping(value="/ajax2.do") @ResponseBody //返回值就是响应的内容 public String Ajax2() throws IOException{ return "hello ajax2"; } |
9、form表单中是一个完整的bean(user),但是bean中包含文件。 此时form表单的属性除了enctype="multipart/form-data" ,还需将<input type="file" name="pic"/> 中的name不能与Userbean 的属性相同。 后台使用user和 @requestParam("pic") multipartFile file 配合接收。
10、项目中图片上传:一般来说,只有上传到tomcat容器下才能访问,但并没有持久化,并不在项目中。
可以通过在tomcat/conf/servlet.xml中<host></host>中加入:
<!-- path是虚拟路径,docBase为真实路径 -->
<Context path="/commodity" docBase="D:\img" crossContext="true" reloadable="false" debug="0"/>
11、produces="application/json; charset=utf-8",此配置放在@RequestMapping(value="",produces=""),可以解决ajax返回参数乱码。
12、window.onload = function(){} 页面完全加载完成后执行。
$(function(){}) / $(document).ready(function(){}) dom加载完毕后执行。