JavaEE思想概述,MVC思想,DispatcherSevlet以及idea下创建一个springMVC工程

一.JavaEE的思想概述

1.1JavaEE应用的分层模型

  无论是经典JavaEE还是现在所说的轻量级JavaEE,jAVAEE架构都可以分为如下层次

 1.Domain Project领域对象层

此层次由一系列的POJO对象组成(Plain Old Java Project)组成,这些对象是该系统的领域对象,往往包含了各自所需实现的业务逻辑方法

2.DAO层 DATA ACCESS OBJECT

数据访问对象层,此层由一系列的DAO组件组成,这些DAO实现了对数据库的创建,查询,更新和删除等原子操作

3.Service业务逻辑层

此层由一系列的逻辑对象组成,实现了系统所需要的业务逻辑方法

 4.Controller控制器层

由一系列控制器组成,这些控制器用于拦截用户请求,调用业务逻辑组件处理用户请求,并根据处理结果转发至对应的表现层

 5.View表现层

由一系列的JSP页面,Velocity页面组成,负责收集用户请求,显示处理结果

JavaEE组件以松耦合方式组织,方便应用的扩展性

> 什么是JavaBean
>
> JavaBean是一种可重用组件,为写成JavaBean,类必须是具体和公开的,并且具有无参数的构造器;
>
> JavaBean作为一种Java类,通过封装属性和方法,成为具有某种功能或者处理某个业务的对象;

1.2ORM框架

Object Relation Mapping对象关系映射,它的存在是为了解决面向对象与关系数据库存在的互补匹配,ORM是连接数据库的桥梁。只要提供了持久化类与表的映射关系,ORM框架就能在运行时参照映射文件的信息,把对象持久化到数据库中

二.SpringMVC

2.1MVC的架构思想

 2.1.1Model1和Model2

Java web的应用结构经历了Model1和Model2两个时代

Model1模式下,整个web应用几乎全部由JSP页面组成,JSP页面处理客户端请求对请求处理后直接做出响应,从工程化的角度来看,JSP页面身兼View和Controller两层角色,降低了代码的重用性

Model2模式则是基于MVC的架构的设计模式,JSP不再充当Controller角色,由Servlet充当控制器的角色,负责与后台的JavaBean通信

2.1.2MVC架构思想

MVC思想将一个应用分成三个基本部分,模型,视图,控制器来划分

Model,模型层,指工作中的JavaBean,用来处理数据

  **PS**:JavaBean常分为两类,第一类是实体类Bean,第二类是业务处理Bean,用来处理业务逻辑与数据访问

View,视图层,工程中的html与JSP,用来和用户交互展示数据

Controller,控制器层,接受请求和响应浏览器

2.2SpringMVC的实现原理

Spring将MVC流程进行封装,帮助开发者屏蔽底层细节,并开放接口供开发人员调用,让MVC开发更简便

 2.2.1SpringMVC的核心组件
1)DispatcherServlet

SpringMVC提供一个DispatcherServlet作为前端控制器来分派请求,它负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个SpringMVC的**核心模块**,开发者无需额外开发控制器对象。

DispatcherServlet来自于包,它继承自基类(父类)HttpServlet

org.springframework.web.servlet.DispatcherServlet

使用它时需要在web.xml中配置

 <!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 -->
    <init-param>
      <!-- contextConfigLocation为固定值 -->
      <param-name>contextConfigLocation</param-name>
      <!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources -->
      <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <!--
 		作为框架的核心组件,在启动过程中有大量的初始化操作要做
		而这些操作放在第一次请求时才执行会严重影响访问速度
		因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时
	-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <!--
        设置springMVC的核心控制器所能处理的请求的请求路径
        /所匹配的请求可以是/login或.html或.js或.css方式的请求路径
        但是/不能匹配.jsp请求路径的请求
    -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

所谓控制器实际上是由两部分组成,即拦截所有用户请求和处理请求的前端控制器DispatcherServlet和负责实际业务控制的Controller组成

2)Handler处理器

完成具体的业务逻辑,相当于Servlet

3)HandlerMapping

DispatcherServlet通过其将请求映射到不同的Handler

4)HandlerInterceptor

处理器拦截器,通过实现该接口对拦截进行处理

5)HandlerExecutionChain

处理器执行链包括Handler和HandlerInterceptor()

2.3创建SpringMVC应用

选择module

导入工程需要的依赖,在pom.xml文件中引入如下依赖

<dependencies>
    <!-- SpringMVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.1</version>
    </dependency>

    <!-- 日志 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

    <!-- ServletAPI -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring5和Thymeleaf整合包 -->
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
        <version>3.0.12.RELEASE</version>
    </dependency>
</dependencies>

配置web.xml,在web.xml中定义前端控制器DispatcherServlet

<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 -->
    <init-param>
        <!-- contextConfigLocation为固定值 -->
        <param-name>contextConfigLocation</param-name>
        <!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources -->
        <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <!-- 
 		作为框架的核心组件,在启动过程中有大量的初始化操作要做
		而这些操作放在第一次请求时才执行会严重影响访问速度
		因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时
	-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <!--
        设置springMVC的核心控制器所能处理的请求的请求路径
        /所匹配的请求可以是/login或.html或.js或.css方式的请求路径
        但是/不能匹配.jsp请求路径的请求
    -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

配置springMVC.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 自动扫描包 -->
    <context:component-scan base-package="com.ZhuShuoWeb.Controller"/>

    <!-- 配置Thymeleaf视图解析器 -->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">

                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>

                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

    <!--
       处理静态资源,例如html、js、css、jpg
      若只设置该标签,则只能访问静态资源,其他请求则无法访问
      此时必须设置<mvc:annotation-driven/>解决问题
     -->
    <mvc:default-servlet-handler/>

    <!-- 开启mvc注解驱动 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 处理响应中文内容乱码 -->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="defaultCharset" value="UTF-8" />
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html</value>
                        <value>application/json</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值