a. SpringMVC 乱码解决方法
- 修改tomact的配置文件 server.xml在 使用 URIEncoding=”UTF-8”
如果重定向使用
return "redirect:/brand/list.do?name"+name
//这种方法如果name 是中文的话,就会造成SpringMVC 不识别中文`,这种方式不建议被使
- 通过ModeMap 进行传递参数,这种传递方式安全可靠,支持中文
b.火狐浏览器使用 重复提交问题
现象:如果href的地址中有参数的话,会造成两次的提交,如果没有参数的话正常,仅仅有一次提交
方案
<a href="delete.do?id=1">删除</a>这种情况下后台会进行两次的”删除操作“
为了避免重复提交问题 通过下面的方式尽心解决
<a onclick="location.href='delete.do?id=2'" href="javascrpt:void(0)">删除</a>
c. <a href="c.html" target="mainFrame">
标签的target 属性
>
href的内容将会在target 所对应的 框架中显示,如果没有找到该框架的话,就会在一个新的窗口中显示出来
d. 在eclipse中clean 会修改原来的所有的东西,重新返回初始化状态
e.在MyBatis中 标签可以屏蔽掉 更新中的 逗号(,)
eg: update student
<set>
<if test="name!=null">
name=#{name},
</if>
<if test="name!=null">
age=#{age},
</if>
</set>
f .SpringMVC 表单提交的几种方式
第一种方法:表单提交,以字段数组接收
第二种方法:表单提交,以BeanListModel 接收
这种方法需要建立一个单独的实体类去接受 list
第三种方法:表单提交,以json对象序列化成json字符串提交
g. SpringMVC 中Model ,ModelMap 以及Map 都是针对的同一个对象
h.在Mysql数据库中只有InoDB 支持事物操作,其他的数据库引擎都不支持事物的操作
明天查找ModeAndView
i.ResultMap与ResultType 之间的区别是
resultMap 适合返回值是自定义的实体类的情况
resultType 适合返回值是数据类型的情况 即Jdk所提供的类型
<select id="selectPersonId" resultType="java.lang.Integer">
parameterMap 用来封装一些参数集合对象,可以是Bean或者是Map
reusltMap 用来封装查询结果集,type 可以是Bean,Object,
上传图片到另外的一个服务器中
1.修改server.xml 文件,把里面的
的端口号进行修改,大概有三个 ,其中第二个是我们需要的
2.默认的情况 tomcat 是不允许读写的
在tomcat的web.xml文件中添加一下代码:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
MultipartFile类中两个方法的区别
getName 获取表单中文件组件的名字
getOriginalFilename :获取上传文件的原名
配置SpringMVC上传图片功能一定需要配置
<bean id="multipartFile" class="org.springframework.web.multipart.commons.CommonsMultipartFile">
<!-- 上传大小限制是1M 单位是byte -->
<property name="maxUploadSize" value="1048576" />
</bean>
注意这里面的id= multipartFile这是死规定
如果没有配置的话 获得上传文件的、名称会一直报空指针
name like “%”#{name}”%”
MyBatis 实现模糊查询的两种方式
1.name like "%${name}%"
2.name like "%"#{name}"%"
$("#tab a") 表示找到以id=tab 下的所有<a>标签
$("#tab").attr("class").indexof("here") 表示获取id=tab的标签下class 中here 的位置,如果没有找到的话返回的是-1 找到的话返回的是 返回here的所在位置
>eg:<a id="tab" class="here"> 此时返回的是0
> <a id="tab" class="ahere"> 此时返回的是1
使用FCK主要是连个文件
第一个文件 1. fckeditor.js
2.fckconfig.js
SpringMvc 返回url给fck
java-core-2.6.jar 这个就是java适合fck 的夹包
response.getWriter().write() 与out.print()区别
write()仅仅支持字符类型的数据,字符,字符数组,字符串等
print()可以支持各种类型(包括对象),通过默认的编码转换成byte字节形式
response.getWriter() 和out的区别
out.是一个jspWriter, 另外jspWriter 是个带缓存功能的printWriter,他不是直接把数据输出到页面,而是将数据刷新到Responsede 缓存区后再输出,out同时也是jsp内置对象
out.println(“”)此方法不能把页面进行换行
out.println(““);该方法能够实现页面布局的换行
response.getWriter 是java.io.PrintWriter 所以他是直接输出
Mybatis 生成主键并且返回 #
主要是利用useGeneratedKeys=“true” keyProperty=”id” 表示把生成的主键复制给id
<insert id="addProduct" parameterType="Product" useGeneratedKeys="true" keyProperty="id">
400错误总结
关于400错误总结,官方解释是:传递的Url语法错误实际的编码中的错误是
既想用post 提交,有需要通过get方式那样在url 中添加一些参数,
如果在url 添加参数过程中,不能有和url相同的clss 的参数,否则400错误稳稳的都是爱
eg:
UrL:这样
show.do?name="+name+"&isShow="+isShow+"&pageNo="+pageNo
form 表单中这样
<form id="jvform">
<input type="hidden" name="pageNo" /> //此时url里面的pageNo与隐藏域的pageNo重复会造成表单提交错误
2016/6/17 星期五 下午 1:55:53 搞了老子一个上午时间,fack
</form>
SpringMvc 为了能够添加页面缓存 设置/product/display/display.shtml
注意 在页面上写跳转语句的时候,一定需要在语句末尾添加上分号,
<%response.sendRedirect(“/product/display/list.shtml”); %>
Http state500 --unable to compile class for jsp
表示编译jsp 页面出现的错误,可能是没有添加逗号
javacError 表示java 编译错误
JQuery改变disabled 的状态
设置input框可用
1.(“#input”).attr(“disabled”,true);
2.(“#input”).removeAttr(“disabled”);
3.(“#input”).attr(“disabled”,”“);
设置input 框不可用(“#input”).attr(“disable”,false);
$(“#input”).attr(“disable”,”disabled”);
$.post(url,params,function(data){},'json'); 这个是异步提交,注意后面的参数类型
$('#test').ajaxSubmit(otpion);//这个是表单异步提交
OScache介绍
OSCached 使用页面缓存机制是以 key-value 对的形式存在的
引入的标签
<%@taglib uri=”http://www.opensymphony.com/oscache” prefix=”oscache”%>
Key是url 如果指定key 的话,那么变化路径就会刷新 time 指定时间的刷新时间
value 是页面如jsp,html
优点:防止恶意的请求刷新
缺点:数据不同步,需要设置数据同步的时间
存储的域是:ApplicationContext
Session 与Cookie的区别
1.Session将信息保存在服务器上,cookie 保存在客户端上
2.session 比cookie 更安全,session比cookie更占资源,所以可以放入到memcached中
3.session使用cookie的机制,如果cookie被禁用,那么session也无法使用,因为sessionID是以cookie 的形式保存在客户端的内存当中
SpringAop 详解
1.AOP(Aspect Orient Programming) 面向切面编程,面向对象编程是从静态的角度考虑程序架构,面向切面编程(AOP)是从动态角度考虑程序运行过程
2. 环绕通知的方法,第一个参数定义为org.aspectj.lang.ProceedingJoinPoint
3. 前置通知和后置通知的方法,第一个参数定义为org.aspectj.lang.JoinPoint
4. advice (通知),在切面类中,声明对业务方法做额外处理的方法
before advice前置通知
前置通知接口MethodBeforeAdvice
后置通知接口AfterReturningAdvice
环绕通知接口MethodInterceptor
环绕通知与前置通知,后置通知的区别
1.环绕通知能够控制目标方法是否被调用,通过过invocation.proceed()
2.环绕通知可以控制返回值,可以返回一个proceed()
eg
public Object invoke(MethodInvocation invocation) throws Throwable{
Object object=invocation.proceed();//此句执行业务逻辑方法
return obj;
}
环绕通知基本上就可以取代前置通知和后置通知
前置通知使用的是
<aop:before method="doBefore" point="exectuion(..)">
<aop:after method="doBefore" point="exectuion(..)">
<aop:around method="doBefore" point="exectuion(..)">
再通知方法里获得一些东西 主要是通过接入点joinPoint或者是ProceedingJoinPoint来获得的
获得包名+类名
joinPoint.getTarget().getClass().getName();
获得方法名
joinpoint.getSignature().getName();
获得方法里面的参数,获得参数以后可以序列化成json字符串进行传递
joinPoint.getArgs();