JSP精要-one

JSP

JSP内置对象
JSP内置对象 对象描述
Out 向客户端对象输出数据
Request 向服务器提交数据
Response 服务器项目信息
Exception 异常信息
Config 配置信息
Page 指向当前page本身
Session 保存会话信息(统一用户的不同对象之间共享信息)
Application 上下文(不同用户间共享信息)
PageContext 队jsp页面所有对象及命名空间的访问
out对象

out.flush()
out.clearBuffer
out.clear

out.print("获取当前缓冲区大小:"+out.getBufferSize());
out.print("当前缓冲区剩余字节数目"+out.getRemaining());
Request对象
Request对象 对象描述
简单语法格式整理

    
    

<%@page errorPage="error_page.jsp" isErrorPage="true" %>


  String username=request.getParameter("username");
    String password=request.getParameter("password");
    out.println("username "+username);
    out.println("
"); out.println("password "+password); "> 需要添加statdard.jar jstl.jar包
Spring内置对象
  response.setHeader("Cache-Control","no-cache");//无缓存
    response.setIntHeader("refresh",2);//设置两秒钟自动刷新
    out.print("this date is :"+new java.util.Date().toString()+"
"); response.sendRedirect("https://www.baidu.com");//重定向页面 Cookie cookie=new Cookie("username","password"); cookie.setMaxAge(3600); response.addCookie(cookie); session.getId();
面向方面的程序设计(AOP)

Spring框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,其在概念上独立于应用程序的业务逻辑(sample:日志记录、声明性事务)

OOP中模块化的关键单元是类,AOP中模块化的关键单元室方面。AOP帮助你将横切关注点从他们所影响的对象中分离出来,依赖注入帮助你将你的应用程序对象从彼此中分离出来。

  • 控制反转IOC
    在编写一个复杂的java程序时应用程序类应当尽可能的独立于其他的java类来增加这些类的可重用性,当进行单元测试时,可以使他们独立于其他类进行测试。

  • 依赖注入DI
    依赖注入可以以向构造函数传递参数的方式发生,或者通过使用setter方法post-construction。

Spring体系结构
JSP精要-one_第1张图片
Spring体系框架图
核心容器

核心容器由核心、bean、上下文的表达式语言模块组成

  • 核心提供框架的基本组成部分、包括IOC和依赖注入功能。
  • Bean提供BeanFactory,工厂模式的复杂实现。
  • 上下文建立在由core和bean提供的坚实基础上,他是访问定义和配置的任何对象的媒介。ApplicationContext接口是上下文模块的重点。
  • 表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言
数据集成、访问
  • JDBC提供删除冗余的JDBC相关编码的JDBC抽象层
  • ORC为流行的对象关系映射API,包括JPA、JDO、Hibernate和iBatis提供集成层
  • OXM提供抽象层、它支持对JAXB、Castor、XMLBeans,JiBx和XStream的对象/XML映射实现
  • JMSjava消息服务包含生产和消费的信息的功能
  • 事务事务模块为实现特殊接口的类及所有的POJO支持编程式和声明式事务管理
Web
  • Web提供基本的面向web的集成功能,例如多个文件上传的功能和使用servlet监听器和面向web应用程序的上下文来初始化IOC容器
  • Web-MVC包含Spring的模型-视图-控制(MVC),实现了web应用程序
  • Web-SocketWebSocket-Based提供支持,而且在web应用程序中提供客户端和服务器端之间的通信的两种方式。
  • Web-Portlet提供在portlet环境中实现MVC,并且反映了Web-Servlet模块的功能。
Spring实例
  • 1.生成工厂对象,加载完指定路径下bean配置文件,利用框架提供的FileSystemXmlApplicationContext API生成工厂beanFileSystemXmlApplicationContext负责生成和初始化所有对象,比如:所有XML bean配置文件中的bean
  • 利用第一步生成的上下文中的getBean()方法得到所需要的bean,这个方法通过配置中的beanID来返回一个真正的对象,一旦得到这个对象就可以利用这个对象条用任何方法。
 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("/configure/beansConfigure.xml");
        HelloWord helloWord= (HelloWord) applicationContext.getBean("helloWord");
        helloWord.getMessage();
bean property
属性 描述
class 强制属性,制定用来创建bean的bean类
name/id 指定唯一的bean的标识符
scope 指定由特定bean定义创建的对象的作用域
constructor-arg 用来注入依赖关系
properties 用来注入依赖关系
autowiring mode 用来注入依赖关系
lazy-initialization mode 第一次调用时创建对象(懒汉模式)
initialization 在bean的所有必须属性被容器设置之后,调用回调方法
destruction 当包含该bean的容器被销毁是,使用回调方法
Spring配置元数据

Spring IoC容器完全由实际编写的配置元数据的格式解耦

  • 基于XML的配置文件
  • 基于注解的配置
  • 基于java的配置
Spring Bean的作用域
作用域 描述
singleTon 单例模式
prototype 普通模式,每次调用创建一个新的对象
request 作用域定义为HTTP请求,只在web-aware spring ApplicationContext的上下文中有效
session 作用域定义限制为HTTP会话,只在web-aware spring ApplicationContext的上下文中有效
global-session 作用域将bean的定义限制为全局HTTP绘画,只在web-aware spring ApplicationContext的上下文中有效

在Spring定义一个bean时,必须声明该bean的作用域.

作用域 描述
singleTon 单例模式
prototype 普通模式,每次调用创建一个新的对象
request 作用域定义为HTTP请求,只在web-aware spring ApplicationContext的上下文中有效
session 作用域定义限制为HTTP会话,只在web-aware spring ApplicationContext的上下文中有效
global-session 作用域将bean的定义限制为全局HTTP绘画,只在web-aware spring ApplicationContext的上下文中有效

作用域设置实例

 
Spring bean的生命周期

声明带有 init-methoddestroy-method 参数的 。

  • init-method 属性指定一个方法,在实例化 bean 时调用该方法。
  • destroy-method 指定一个方法,只有从容器中移除 bean 后,才能调用该方法。

org.springframework.beans.factory.InitializingBean 接口指定一个单一的方法:

void afterPropertiesSet() throws Exception;

我们只需要在实现InitializingBean接口就可以在对象创建后做一些事情

public class TestBean implements InitializingBean {
   public void afterPropertiesSet() throws Exception{
      // do some initialization work
   }
}

同样的在org.springframework.beans.factory.DisposableBean 接口指定一个单一的方法:

void destroy() throws Exception;

然后在类对象中实现DisposableBean接口

public class TestBean implements DisposableBean{
    @Override
    public void destroy() throws Exception {
        // do some initialization work
    }
}

除此之外,在基于XML元数据配置的境况下还可以通过设置destroy-method属性实现


在类里面我们可以这样定义

public class TestBean {
   public void destroy() {
      // do some destruction work
   }
}
BeanPostProcessor

有时候会需要在bean实例化对象前后去做一些准备工作或预处理,可以在创建bean类时实现BeanPostProcessor接口去完成自定义工作。
该接口定义了postProcessBeforeInitializationpostProcessAfterInitialization两个带参函数,示例代码如下

public class TestBean implements BeanPostProcessor {
   public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
      System.out.println("BeforeInitialization : " + beanName);
      return bean;  // you can return any other object as well
   }
   public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
      System.out.println("AfterInitialization : " + beanName);
      return bean;  // you can return any other object as well
   }
}

注意:在main方法中需要注册一个在 AbstractApplicationContext 类中声明的关闭 hook 的 registerShutdownHook() 方法。它将确保正常关闭,并且调用相关的 destroy 方法。

context.registerShutdownHook();

我的文章列表

你可能感兴趣的:(JSP精要-one)