发表于: 2017-10-11 22:53:17

1 753


一、今日完成

1.修改任务5代码,尝试让整个项目跑通运行起来,如下是项目结构:

目前对src/resources/mapper目录下的mapping.xml写的sql语句完成了排错,剔除了单词拼写错误或者字段遗漏的问题;在controller层组件与表现层视图对象之间映射跳转存在一些问题,在浏览器上有几个页面的url无法访问,提示404错误,计划明天上午解决它们,提交任务5.


2.学习过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)相关知识。

(1)Filter主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。流程:Filter 对用户请求进行预处理,接着将请求交给Servlet 进行处理并生成响应,最后Filter 再对服务器响应进行后处理。


实现过程:

1)编写java类实现Filter接口,并实现其doFilter方法。 

2)在 web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。


web.xml配置:

<filter-name>用于为过滤器指定一个名字,该元素的内容不能为空。 

<filter-class>元素用于指定过滤器的完整的限定类名。 

<init-param>元素用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,<param-value>指定参数的值。

 

<filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源指定方式:Servlet 名称或者资源访问的请求路径 。

<filter-name>子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字 

<url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式) 

<servlet-name>指定过滤器所拦截的Servlet名称。 

<dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。可以设置多个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。 

 

(2)当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,需要在web.xml中配置字符编码过滤器。

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


3.Listener 监听器是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。

(1)主要有以下三类:

i.ServletContext监听

ServletContextListener:用于对Servlet整个上下文进行监听(创建、销毁)。

public void contextInitialized(ServletContextEvent sce);//上下文初始化

public void contextDestroyed(ServletContextEvent sce);//上下文销毁


ServletContextAttributeListener:对Servlet上下文属性的监听(增删改属性)。

public void attributeAdded(ServletContextAttributeEvent scab);//增加属性

public void attributeRemoved(ServletContextAttributeEvent scab);//属性删除


ii.Session监听

Session属于http协议下的内容,接口位于javax.servlet.http.*包下。

HttpSessionListener接口:对Session的整体状态的监听。

public void sessionCreated(HttpSessionEvent se);//session创建

public void sessionDestroyed(HttpSessionEvent se);//session销毁

 

HttpSessionEvent事件:

public HttpSession getSession();//取得当前操作的session

  

HttpSessionAttributeListener接口:对session的属性监听。

public void attributeAdded(HttpSessionBindingEvent se);//增加属性

public void attributeRemoved(HttpSessionBindingEvent se);//删除属性

public void attributeReplaced(HttpSessionBindingEvent se);//替换属性


HttpSessionBindingEvent事件:

public String getName();//取得属性的名称

public Object getValue();//取得属性的值

public HttpSession getSession();//取得当前的session


iii.Request监听

ServletRequestListener:用于对Request请求进行监听(创建、销毁)。

public void requestInitialized(ServletRequestEvent sre);//request初始化

public void requestDestroyed(ServletRequestEvent sre);//request销毁

 

ServletRequestEvent事件:

public ServletRequest getServletRequest();//取得一个ServletRequest对象

public ServletContext getServletContext();//取得ServletContext(application)对象

  

ServletRequestAttributeListener:对Request属性的监听(增删改属性)。

public void attributeAdded(ServletRequestAttributeEvent srae);//增加属性

public void attributeRemoved(ServletRequestAttributeEvent srae);//属性删除

public void attributeReplaced(ServletRequestAttributeEvent srae);//属性替换

 

ServletRequestAttributeEvent事件:能取得设置属性的名称与内容

public String getName();//得到属性名称

public Object getValue();//取得属性的值


(2)Listener配置信息必须在Filter和Servlet配置之前,Listener的初始化(ServletContentListener初始化)比Servlet和Filter都优先,而销毁比Servlet和Filter都慢。在web.xml中配置:

<listener>

    <listener-class>com.listener.class</listener-class>

</listener>


4.关于拦截器集成的接口和常用方法,以及登录验证的工具类在之前的日报里已经有所说明。


二、明日计划

1.提交任务5代码;

2.学习redis相关知识,开始做任务6.


三、遇到问题

暂无。


四、收获

以上。


禅道:http://task.ptteng.com/zentao/task-view-10377.html

今天完成并提交任务审核。


返回列表 返回列表
评论

    分享到