web学习06

java开发中使用的设计模式

 1.model1

   jsp+javabean(实体类)

 2.model2(模拟mvc开发模式)

   m:model(模型) javabean

   v:view(视图)  jsp

   c:control(控制器) servlet

   

  分层思想

    1.web层

    2.逻辑层

    3.数据层


javaweb中的监听

  

  事件

  事件源

  监听对象

  注册监听

 

  javaweb中可以监听

  httpServletRequest对象

  ServletContext对象

  httpSession对象(监听绑定的对象的变化)

  监听对象的什么?

  1.对象的创建与销毁

  2.域中保存的值的变化

  注意:使用监听器需要跟web.xml中配置

 <!-- 注册监听器 -->
  <listener>
  <listener-class>com.lanou3g.MyServletContextListener</listener-class>
  </listener>

  

监听对象的创建和销毁

1.  ServletContextListener

        public class MyServletContextListener implements ServletContextListener{
	//实现接口中的方法
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("ServletContext初始化");
	}
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("ServletContext销毁");
	}

2.  HttpSessionListener

        public class MyHttpSessionListener implements HttpSessionListener{
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		//HttpSessionEvent session事件对象
		String id = se.getSession().getId();
		System.out.println(id+"创建了");
	}
	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		HttpSessionListener.super.sessionDestroyed(se);
	}

3.  ServletRequestListener

监听域对象中属性值得变化

 1. ServletContextAttributeListener

 2. HttpSessionAttributeListener

 3. ServletRequestAttributeListener

public class MyServletRequestAttributeListener implements ServletRequestAttributeListener{
	@Override
	public void attributeAdded(ServletRequestAttributeEvent srae) {
		System.out.println("添加"+srae.getName()+"..."+srae.getValue());
	}
	@Override
	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		System.out.println("删除");
	}
	@Override
	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		System.out.println("替换"+srae.getName()+"..."+srae.getValue());
		
		
	}

监听session中绑定了自定义对象的值得变化

   HttpSessionBindingListener  user

   注意:实现该接口不用去web.xml中配置

   注意:该接口 需要 被绑定的对象的类 来实现该接口

public class User implements HttpSessionBindingListener{
	@Override
	public void valueBound(HttpSessionBindingEvent event) {
	System.out.println("绑定对象");
	System.out.println(event.getName());
	System.out.println(event.getValue());
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("解除绑定");
	}
}

过滤器(filter) 解决全站乱码问题

1.实现filter

2.实现方法(声明周期方法 dofilter拦截方法)

3.配置web.xml 配置过滤的路径

 

<!-- 配置要过滤的路径  /*过滤所有路径 -->
 <url-pattern>/*</url-pattern>

 声明周期

随着项目的启动而创建

随着项目的停止而销毁


public class Demo01 implements Filter{
	//声明周期方法
	public Demo01() {
		System.out.println("实例化");
	}
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	System.out.println("初始化");
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		//对请求响应进行编码处理
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		System.out.println("拦截前");
		//放行方法 链 chain
		//将处理好编码格式的响应和请求 向下传递
		chain.doFilter(request, response);
		System.out.println("拦截后");
		
		
	}
	
	@Override
	public void destroy() {
		System.out.println("销毁");
	}

}

没有更多推荐了,返回首页