发表于: 2017-06-26 23:03:30

1 1093


今天完成的事情:

1:继续任务五项目,控制器添加新的增删改查功能,由于前期设计数据库字段不好,大改表结构,然后修改代码符合表结构.修正之前出现的若干bug,然后又产生了若干bug...(绝望脸)

2:了解currentTimeMillis,HandlerInterceptor

简单了解重定向:sendRedirect



明天计划的事情:

继续完善.学习任务五



遇到的问题:

这两行return有点看不懂啊.

问题在注释中,我的list.jsp可没在什么student下面.这前缀不太能理解.


还有就是

这种情况怎么解决.简单的添加静态解决不了问题


收获:

1:idea小知识

sout快速输入system.out.println                                                 //eclipse为syso

psvm快速输入public static void main(String[] args){}               //eclipse为main

这两我今天问了师兄才刚刚知道...尴尬


碰到无法输入的xxxx:可以在后面直接输入"",前面的类似映射的东西会自动生成(不知道我说明白没,但我自己能理解)


2:重定向:sendRedirect

原理:
客户发送一个请求到服务器,服务器匹配servlet,servlet处理完后调用sendRedirect()这个方法,这个方法是response的方法,所以servlet处理完后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问你输入的那个jsp,接着客户端收到这个请求后,立刻发出一个新的请求,去请求你输入的那个jsp,两个请求互不干扰,互相独立,在前面request里面setAttribute()的任何东西,后面的request里面都获得不了.
可见sendRedirect()里面是两个请求,两个响应.


3:HandlerInterceptor

HandlerInterceptor是什么?
是spring拦截器.
为什么要使用HandlerInterceptor?
在进行登录操作时我们都要使用拦截器拦截用户的访问,以避免用户未登录操作

在spring-mvc中添加拦截器配置

实现的接口是java底层,大致知道就行
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 渲染了对应的视图之后执行。用于进行资源清理。


4:currentTimeMillis

获取时间:System.currentTimeMillis();这是JAVA已经设计好的方法
在开发过程中,通常很多人习惯使用new Date()来获取当前时间.newDate()所做的事情其实就是调用了System.currentTimeMillis()
如果只需要毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点.
例子:
system.out.print("当前时间:"+new java.util.Date(System.currentTimeMillis())+"\n");
system.out.print("输出时间:"+new java.util.Date(System.currentTimeMillis()+3600*1000));
输出结果:
//当前时间
(星期几) (月份) (日期) (时) (分) (秒) cst 2017
//当前时间+1小时
(星期几) (月份) (日期) (时+1) (分) (秒) cst 2017
具体:


返回列表 返回列表
评论

    分享到