SpringMVC-Mybatis 个人总结

来源:互联网 发布:网上挂号预约软件 编辑:程序博客网 时间:2024/04/30 11:15

a. SpringMVC 乱码解决方法

  1. 修改tomact的配置文件 server.xml在 使用 URIEncoding=”UTF-8”
  2. 如果重定向使用
    return "redirect:/brand/list.do?name"+name 
//这种方法如果name 是中文的话,就会造成SpringMVC 不识别中文`,这种方式不建议被使

3. 通过ModeMap 进行传递参数,这种传递方式安全可靠,支持中文

b.火狐浏览器使用<a href="brak.do?id=1"> 重复提交问题

现象:如果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.ProceedingJoinPoint3. 前置通知和后置通知的方法,第一个参数定义为org.aspectj.lang.JoinPoint4. 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();
0 0