`
zhoumeng87
  • 浏览: 69867 次
文章分类
社区版块
存档分类
最新评论

javaEE中的spring配置笔记

阅读更多

 

0 JavaEE的工程目录

0.1 WebContent

    项目的主目录,在eclipse新建工程时可以自己命名,部署时会把该文件夹的内容发布到tomcat的webapps里。

    该目录下可以建立JS/CSS/JSP文件夹和index.jsp作为用户访问的前端内容。servlet和springMVC会通过所谓的转发器把这里的前端请求转发到后台java去。

    0.1.1 WEB-INF

        (0) WEB-INF文件夹是禁止通过URL访问的

        (1) lib: 放第三方jar包

        (2) classes: 发布时会把编译后的文件放在这里

        (3) web.xml: Web应用程序的部署描述符,项目启动时web容器先读取这个进行一系列的配置。

 0.2 src

    源文件路径,一般存放java源文件。(官网:www.fhadmin.org) 这个路径在eclipse中可以右键-Property-Java Build Path进行更改。比如增加一些放有配置文件的文件夹路径,比如resource/spring.xml。

0.3 build/classes

    这个路径也可以在eclipse中可以右键-Property-Java Build Path进行更改。发布时会把这些文件搬到WebContent/WEB-INF/classes下。

0.4 一般的项目结构

 

1 web.xml

1.1 加载顺序

    web.xml 的加载顺序是: context-param -> listener -> filter -> servlet 。而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

1.2 context-param

 
<!-- 用于设定上下文参数contextConfigLocation,指定spring相关文件的位置 (官网:www.fhadmin.org)-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml </param-value>
</context-param>
<!-- 在此设定的参数,可以在servlet中用getServletContext().getInitParameter("contextConfigLocation ")来取得 -->
 

1.3 listener

 
<!-- 开启spring功能 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 防止内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener>
 

ContextLoaderListener基于Web上下文级别的监听器:在启动服务器时,

(1) 创建上下文对象

(2读取contextConfigLocation参数,加载Spring文件创建Bean并放入上下文对象

(3) 将上下文对象放入ServletContext(就是Java Web的全局变量)中

1.4 filter

 
<!-- 配置字符集过滤器 (官网:www.fhadmin.org)-->
<filter>
    <filter-name>encodingFilter</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>
    
<!-- 配置项目的编码mapping -->
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 

 1.5 servlet

 
<!-- 配置spring mvc -->
<servlet>
    <servlet-name>springMvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- 配置spring mvc mapping -->
<servlet-mapping>
    <servlet-name>springMvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
 

load-on-startup 元素在 web 应用启动的时候指定了 servlet 被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该 servlet 被调用的时候才加载这个 servlet 。如果值是正整数或零,容器在配置的时候就加载并初始化这个 servlet ,容器必须保证值小的先被加载。

 

DispatcherServlet和ContextLoaderListner

 DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

2、通过HandlerMapping,将请求映射到处理器,BeanNameUrlHandlerMappingURLBean名字映射。

3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器)

4、通过ViewResolver解析逻辑视图名到具体视图实现;InternalResourceViewResolver将逻辑视图名映射为jsp视图。

5、本地化解析;渲染具体的视图等;

6、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

DispatchServlet会创建Spring应用上下文,并加载配置文件。(官网:www.fhadmin.org) DispatchServlet加载包含Web组件的bean,如控制器,视图解析器,处理器映射。可自行指定配置文件的位置。ContextLoaderListner加载应用中的其他bean,通常是驱动应用后端的中间层和数据层组件。加载根据上下文参数contextConfigLocation

 

关于WebContextLoaderListenerDispatcherServlet的大致处理可参考下图。

 

3 spring理论知识

3.1 spring核心

Spring框架的核心是Spring容器。容器负责管理应用中组件的生命周期,它会创建这些组件并保证它们的依赖能够得到满足。Spring自带多个容器实现,可以归为两种不同类型。

    bean工厂:最简单的容器,提供基本的DI支持,由org.springframework.beans.factory.beanFactory接口定义。

    应用上下文:基于BeanFactory构建,提供应用框架级别的服务,由org.springframework.context.ApplicationContext接口定义。Spring自带了多种类型的应用上下文。AnnotationConfigWebApplication:从一或多个基于java的配置类中加载Spring Web上下文。XmlWebApplicationContext:(官网:www.fhadmin.org) 从Web应用下的一或多个XML配置文件中加载上下文定义。应用上下文准备就绪后,可以调用上下文的getBean方法从容器中获取bean。   

    

 Spring致力于简化企业级java开发,促进代码的松散耦合。成功的关键在于DI和AOP。DI有助于应用对象之间的解藕,而AOP可以实现横切关注点与它们所影响的对象之间的解藕。

    DI是组装应用对象的一种方式,借助这种方式对象无需知道依赖来自何处或者依赖的实现方式。AOP帮助应用将散落在各处的逻辑汇集于一处,即切面。散布于应用中多处的功能被称为横切关注点,比如日志,安全,缓存,事务管理。通常来讲这些横切关注点从概念上是与应用的业务逻辑相分离的,把它们相分离正是AOP要解决的问题。

    Bean的类型有以下几种。

    单例(Singleton):整个应用,只创建bean的一个实例。
    原型(Prototype):每次注入或通过Spring应用上下文获取时创建新的实例。
    会话(Session):在Web应用中,为每个会话创建一个bean实例
    请求(Request):在Web应用中,为每个请求创建一个bean实例。

 

 3.2  Web中的Spring

Spring通常用来开发Web应用。SpringMVC基于MVC模式实现,能够帮助你构建Spring框架那样灵活和松耦合的Web应用程序。

三层架构:UIL,BLL,DCL(User Interface Layer, Business Logic Layer, Data Control Layer)。这与MVC是不同的。

大多数基于Java的Web框架中,所有请求都会通过一个前端控制器,在Spring MVC中,DispatchServlet就是前端控制器。DispatchServlet会查询处理器映射将请求发送到不同的控制器。Controller完成逻辑处理(委托给service完成),数据信息以model的形式传递

搭建Spring MVC

1:配置DispatchServlet和ContextLoaderListener。(可以在web.xml,也可以在java中配置)

2:启用SpringMVC(可以用XML,也可以用注解)(官网:www.fhadmin.org):启用SpringMVC,启用组件扫描,配置JSP视图解析器,配置静态资源的处理。

3:编写控制器@Controller@RequestMapping:注解映射Url,处理请求,传递model到视图view中,模型数据会作为请求属性放到Request中。

4:Spring MVC的高级技术:其中一个就是文件上传,multipart格式的数据将一个表单拆分为多个部分(part),每个部分对应一个输入域,可以允许某个部分为二进制数据。DispatchServlet没有实现解析multipart数据的功能,它将解析任务委托给MultipartResolver接口的实现。Spring内置了两个实现类,其中一个是CommonsMultipartResolver。Spring提供了MultipartFile接口用于处理multipart数据。表单form中enctype="multipart/form-data"告诉浏览器以multipart数据形式提交表单。

 

3.3  后端中的Spring

Spring的数据访问哲学:Spring的目标之一就是允许我们开发时能遵循OO原则中的“针对接口编程”。Spring对数据访问的支持也不例外,为了避免应用与特定的数据访问策略耦合在一起,编写良好的DAO应该以接口的方式暴露功能。此外,持久化方式的选择独立于DAO。

数据访问模板化:Spring的模板类处理数据访问的固定部分,事务控制,管理资源和处理异常。你只需要关心自己的数据访问逻辑。

配置数据源:通过JDBC驱动程序定义的数据源;连接池的数据源;等等

Spring中使用JDBC(模板):不要求掌握其它框架的查询语言,它是建立在SQL之上的;使用JDBC能够更好地对数据访问的性能进行调优,允许你使用数据库的所有特性;JDBC让我们在更低层次上处理数据。

在Spring中集成Hibernate(ORM工具)
1:org.Hibernate.Session接口提供基本的数据访问功能,如保存,更新,删除以及从数据库加载对象的功能。
2:获取Session对象的标准方式是借助于SessionFactory接口的实现类,它主要负责Session的打开,关闭以及管理。
3:我们要通过Spring的某一个session工厂bean来获取Hibernate SessionFactory。
4:在Spring应用上下文中配置完Session工厂bean后,就可以创建自己的DAO了。通常需要配置数据源,数据库连接属性,扫描包。

 

3.4  Spring集成

消息转换将控制器产生的数据转换为服务于客户端的表述形式。Spring自带了各种各样的转换器,满足了常见的将对象转换为表述的需要。(根据请求头信息转换数据)

需要在控制器方法添加@ResponseBody注解。它告诉DispatchServlet考虑请求头信息,并查找能够为客户端提供所需表述形式的消息转换器。

与之类似,@RequestBody也能告诉Spring查找一个消息转换器,将来自客户端的资源表述转换为对象。

0
0
分享到:
评论

相关推荐

    JavaEE精讲之Spring框架实战 ——学习笔记.zip

    在本学习笔记中,我们将深入探讨JavaEE中的Spring框架,这是一个强大的、全面的企业级应用程序开发框架,它简化了Java开发并提供了丰富的功能。Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及对Java ...

    李君老师JavaEE笔记-Spring中集成Dwr

    在李君老师的JavaEE学习笔记中,他重点讲解了如何在Spring框架中集成DWR,以实现更高效、更简洁的前后端交互。 #### 二、在Spring中集成DWR的第一种方式 李君老师首先介绍了通过在Struts2的插件中集成DWR的方法。...

    笔记28-JAVAEE之Spring IoC&DI

    JAVAEE之Spring IoC&DI Spring IoC(Inversion of Control,即...Spring IoC&DI是JAVAEE开发中的一种重要机制,它提供了一种解耦合的方式,使得应用程序的各个组件之间能够松散耦合,提高了系统的灵活性和可维护性。

    javaee的杂乱笔记

    MVC架构模式是JavaEE中非常重要的一个概念,主要用于构建清晰且可维护的应用程序。 - **Model(模型)**:是应用程序的核心组件,负责处理应用程序的数据逻辑。它直接与数据库交互,执行所有业务规则并进行数据处理...

    全套java笔记javaEE(上)

    在JavaEE开发中,Spring MVC是广泛应用的实现框架。 2. IDEA开发工具:IntelliJ IDEA是Java开发的主流集成开发环境,以其高效、智能的编码辅助功能而备受推崇。这份笔记可能介绍了IDEA的基本操作、项目配置、调试...

    javaee框架SSM课堂笔记.docx

    根据提供的文档信息,以下是对JavaEE框架SSM(Spring+SpringMVC+MyBatis)课堂笔记中的关键知识点进行的详细解析。 ### 第一部分:Spring框架基础 #### 1. Spring简介 - **Spring概念**:Spring是一个开源的轻量级...

    传智168期JavaEE Spring 姜涛 day38~day40笔记

    传智168期JavaEE Spring姜涛的day38到day40的课程笔记,涵盖了Spring框架的基本概念、核心原理、版本演进、优势以及如何在项目中进行使用。这一系列知识构成了Spring框架的精华所在,是JavaEE开发者不可或缺的知识...

    JavaEE学习笔记.pdf

    * JavaEE和Spring有什么区别? JavaEE应用实例 JavaEE应用实例包括: * 一个基于JavaEE的电商平台 * 一个基于JavaEE的企业资源规划系统 * 一个基于JavaEE的客户关系管理系统 * 一个基于JavaEE的网上银行系统 ...

    JavaEE开发的颠覆者SpringBoot实战

    书中详细讲解了Spring Boot如何通过starter POMs简化依赖管理,以及自动配置机制如何根据类路径中的存在项来自动配置应用。 Spring Boot对Spring框架进行了深度整合,包括Spring MVC、Spring Data、Spring Security...

    javaEE-Spring-sturst2-MySql基于java新闻发布及管理系统(源码+数据库sql+lun文).rar

    该压缩包文件“javaEE-Spring-sturst2-MySql基于java新闻发布及管理系统(源码+数据库sql+lun文).rar”包含了一个完整的Java EE应用,它基于Spring、Struts2和MySQL数据库来构建一个新闻发布及管理系统。这个系统提供...

    读书笔记:JavaEE开发的颠覆者 Spring Boot 实战 学习笔记已完结.zip

    读书笔记:JavaEE开发的颠覆者 Spring Boot 实战 学习笔记已完结

    七、Spring-笔记

    Spring 框架是由 Rod Johnson 创作的开源、轻量级的项目管理框架,致力于 JAVAEE 轻量级解决方案。 Spring 框架集众多设计模式于一身,相对于原来学过的框架而言, Spring 框架和之前学习的 Struts2 、 MyBatis 框架...

    JavaEE就业班笔记

    编写可读性强、可维护性好的代码,使用单元测试和集成测试确保软件质量,这些都是JavaEE就业班笔记中应该涵盖的内容。 通过系统地学习和实践这些知识点,学习者将能够具备开发复杂JavaEE应用程序的能力,并为进入IT...

    Spring高级框架课程笔记.pdf

    * Spring Boot 框架的主要特点是自动配置、 starters、production-ready 等。 六、Spring Cloud * Spring Cloud 是一个基于 Spring 框架的云原生应用程序框架,提供了一个松散耦合的架构,帮助开发者快速构建云...

    轻量级javaEE笔记

    【轻量级JavaEE笔记】 JavaEE,全称Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的一个标准和框架。轻量级JavaEE,通常指的是使用一系列轻量级框架来替代传统的JavaEE规范,以减少系统复杂度...

    JavaEE学习实战笔记心得

    ### JavaEE学习实战笔记心得 #### JavaSE基础要点 - **环境配置**: - **JDK下载与安装**:确保下载与操作系统相匹配的JDK版本,完成安装。 - **环境变量设置**: - **JAVA_HOME**: 指向JDK的安装目录。 - **...

Global site tag (gtag.js) - Google Analytics