对前端控制器等配置的理解

本文详细介绍了SpringMVC框架的基本概念、使用步骤及配置方法。包括如何搭建SpringMVC环境、配置DispatcherServlet、理解控制器作用及其配置方式,并解析了DispatcherServlet的工作原理。
摘要由CSDN通过智能技术生成

.SpringMVC

就是关于Web层面的MVC分层框架

Spring FrameWork框架的延续

该框架为我们的Web开发提供了一整套的MVC模式

View: jsp html页面 -->客户端也可以是浏览器

Controller: class类,拥@Controller ----->核心

Model: 就是Map集合 ,这里的数据默认会转化到request.setAttribute

 

 

原来的url

http://localhost:8080/TB/index?un=张三&pass=123456

 

RESTFUL:类型的url

http://localhost:8080/TB/index/张三/123456

 

 

.SpringMVC基本使用

1.引用jar包

 

2. 创建配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<!--配置控制器对象 -->

<bean id="/h1" class="org.qf.controller.HelloController"></bean>

<!-- 扫描注解 -->

<context:component-scan base-package="org.qf.controller"></context:component-scan>

</beans>

3. 创建控制器对象

4. 在web.xml配置分发的DispatcherServlet并加载配置文件

 

5.运行

 

SpringMVC三大件 -->缺一不可

1.控制器: 我们需要重点掌握

2.xxxMVC.xml :配置Spring FrameWork的一些内容 :控制器需要在该配置中使用

3.DispatcherServlet :前端控制器(分发的servlet) :解析请求并转发给对应的View

3.SpringMVC配置详解

DispatcherServlet:

必须在web.xml中进行注册映射

这个必须优先启动,数值越小,优先级越高

需要配置:

<load-on-startup>1</load-on-startup>

默认会加载 :Spring FrameWork的配置文件,文件要求

文件: WEB-INF/servletname--->servlet.xml

(SpringMVC规定,一个DispatcherServlet就应该有一个配置文件)

 

如果改变配置文件路径:

需要使用`初始化参数

contextConfigLocation

这个值就是我们的配置文件路径

 

Servlet的url-pattern取值说明:

1. /完整名称 :只能针对当前的url请求

2 /* :拦截所有 包含:图片(png\jpg等) css js html jsp servlet等 SpringMVC 不建议使用

3. /*.xxx -->*.do *.op *.action *.controller *.jpg -->拦截指定字符结尾的请求

4. / :拦截所有资源(除了jsp)-->springMVC推荐使用

<!--就是为了放行静态资源 -->

 

 

<mvc:default-servlet-handler/>

<mvc:resources location="" mapping=""></mvc:resources>

 

初始化过程:

1. 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener><contex-param>

2. 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。

3. 接着容器会将读取到<context-param>转化为键值对,并交给ServletContext

4. 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。

5. 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。

6. 得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。

ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、ServiceBean

DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如ControllerHandlerMappingHandlerAdapter等等,该初始化上下文应该只加载Web相关组件。

由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet

 

 

三.Spring FrameWork的配置文件

也就是之前Spring的配置文件

通过IOC容器创建的对象

需要引用:mvc 和context还有bean

可以配置:

需要配置控制器对象

配置视图拦截器

数据解析器

 

1.控制器

根据创建控制器方式的不同,配置也不一样

 

 

2.SpringMVC创建的两种创建方式

实现Controller接口(基本不用)

需要在配置文件中,使用<bean id="url" class=""/>

必须实现唯一方法:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)

注解

@Controller:主要用在类上,标记这是一个控制器

内部的方法应该使用@RequestMapping

可以用来类或方法上,可以标记请求的url路径

 

必须在配置文件中使用

<context:component-scan base-package="org.qf.controller"></context:component-scan>

进行注解的扫描

 

.解析DispatcherServlet

DispatcherServlet:类

继承

FrameworkServlet

继承

HttpServletBean

继承

HttpServlet

 

initStrategies(ApplicationContext context),完成初始化配置

完成以下的模块哈ude初始化:

 

initMultipartResolver(context);//文件上传模块的初始化

主要用来完成文件上传的

initLocaleResolver(context);//初始化本地化解析

国际化

initThemeResolver(context);//主题解析器

initHandlerMappings(context);处理器映射文件

一般用来处理Mapping

initHandlerAdapters(context);处理器适配器

initHandlerExceptionResolvers(context);处理器异常解析器

initRequestToViewNameTranslator(context);视图名称解析器

initViewResolvers(context);视图解析器

initFlashMapManager(context);flash刷新

 

DispatcherServlet内部的对象实例:

multipartResolve:默认没有,一个

localeResolver:默认有,一个

themeResolver:默认有,一个

handlerMapping:默认有,可以有多个

handlerAdapter:默认有,可以有多个

handlerExceptionResolver:默认有,可以有多个

viewNameTranslator:默认有,一个

viewResolvers:默认有,可以有多个

flashMapManager:默认有,一个

 

 

.执行过程:

initStrategies:完成初始化

详情见图:

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值