发表于: 2017-06-12 22:05:50

2 1284


今天完成的任务:

1. 本地安装memcached

 

参考资料:

http://www.runoob.com/memcached/window-install-memcached.html

1.4.5 版本以前 memcached 可以作为一个服务安装,而在 1.4.5 及之后的版本删除了该功能。  

   1.解压下载的安装包到指定目录。

2. memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行。

我们使用管理员身份执行以下命令将 memcached 添加来任务计划表中:

注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。

注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。

注意:我们可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。

如果需要删除 memcached 的任务计划可以执行以下命令:

 

 

2.关于user实体类实现了Serizlizable接口

参考资料:http://blog.csdn.net/cdl2008sky/article/details/6747396

首先,什么是Serizlizable,作用是什么:

对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。提到持久化,最直接的做法是保存到文件系统或是数据库之中。比如:对象关系映射(Object-relational mapping)

对象序列化机制(object serialization)Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组()之间进行转换。除了可以很简单的实现持久化之外,另外序列化机制的另外一个重要用途是在远程方法调用中,用来对开发人员屏蔽底层实现细节。

 

基本的对象序列化

   待序列化的Java类只需要实现Serializable接口即可。实际的序列化和反序列化工作是通过ObjectOuputStreamObjectInputStream来完成的。ObjectOutputStreamwriteObject方法可以把一个Java对象写入到流中,ObjectInputStreamreadObject方法可以从流中读取一个Java对象。在写入和读取的时候,虽然用的参数或返回值是单个对象,但实际上操纵的是一个对象图,包括该对象所引用的其它对象,以及这些对象所引用的另外的对象。Java会自动帮你遍历对象图并逐个序列化。除了对象之外,Java中的基本类型和数组也是可以通过 ObjectOutputStreamObjectInputStream来序列化的。

 

  3. HandlerInterceptor拦截器的使用

     使用背景:

      Web项目中需要判断http接口用户Post上来的数据是否合法,如果不合法要另做处理,用户Post上来的数据是Json形式的,我们用了@RequestBody标记自动将json形式的提交封装为一个Model对象,这样一来,我们就不能判断在自动封装过程中是否出现了异常,此时便想起了springMVC中的interceptor,用于处理请求之前,做一些处理,我们可以取消@RequestBody标记,然后在interceptor中取得请求体,检查是否符合json要求,即是不是一个valid interceptor,但是这里出现了一个问题:
httpServletRequest的请求内容,只能被读取一次,在interceptor中读取了的话,在controller中便不能读取了,解决方式是,读取到的请求内容存起来,然后在controller中直接使用。

SpringMVC 中定义一个Interceptor是比较非常简单,主要有两种方式:
第一种:实现HandlerInterceptor 接口,或者是继承实现了HandlerInterceptor 接口的类,例如HandlerInterceptorAdapter;
第二种:实现Spring的WebRequestInterceptor接口,或者是继承实现了WebRequestInterceptor的类。

这里我们用的是第一种

HandlerInterceptor接口主要定义了三个方法:
1. boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handle)方法:

该方法将在请求处理之前进行调用,只有该方法返回true,才会继续执行后续的Interceptor和Controller,当返回值为true 时就会继续调用下一个Interceptor的preHandle 方法,如果已经是最后一个Interceptor的时候就会是调用当前请求的Controller方法;
2.void postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView)方法:

该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
3.void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex)方法:

该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。用于进行资源清理。

至此已大致读懂了类LoginInterceptor


明天的计划:

     应该可以描述出整个任务的流程了,还有一些比较细节的问题,解决了就可以试着跑起来了

 

 

 

 

 

 

 



返回列表 返回列表
评论

    分享到