回顾springmvc

一、中央调度器(dispatcherServlet)

是springmvc最重要的对象,他的父类继承自HttpServlet。在dispatcherServlet的创建过程中,会同时创建Springmvc容器对象,读取Springmvc的配置文件,吧这个配置文件中的对象都创建好。

注册方式

 

 

1、 创建处理器:

@Controller:表示当前类为处理器()

@RequestMapping:表示当前方法为处理器方法。该方法要对value属性所指定的URI进行处理与响应

加在类上方时表示所有该类方法的根路径

2、声明组件扫描器

在springmvc配置文件中声明组件扫描器

3、视图解析器的注册

在mvc配置文件中配置bean对象InternalResourceViewResolver中引入了请求的前缀与后缀。二ModelAndView中只需给出跳转页面的文件名即可,视图解析器会自动拼接。

4、配置<url-pattern/>

(1)*.do

一般DispatcherServlet的url配置使用这种后缀匹配方式。

(2)/

静态资源的访问默认是由tomcat默认的servlet来做的,但当使用/时所有的资源都会被DispatcherServlet支配,会自动忽视静态资源的访问,此时需要额外配置来访问静态资源

方法一:<mvc:default-servlet-handler/>(有四种,后缀别忘了是mvc的)

 

 

 方法二:<mvc:resources/>

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

mapping 表示对该资源的请求。注意后面是两个**

location:表示静态资源所在目录,当然目录不要使用/WEB-INF/及其子目录。

 

还要声明注解驱动

<mvc:annotation-driven/>

二、中央调度器执行流程

 

 

 三、注解式开发

1、@RequestMapping定义请求规则

可以注解在类上也可以注解在方法上,其value值一般以“/”开始,加在方法上时表示该方法的uri,

加在类上方时表示所有该类方法的根路径。@RequestMapping还有一个属性知识method,如果不写则默认两种请求方式都可以。其枚举值常用的为RequestMethod.GET和RequestMethod.POST。

 2、处理器方法的参数

可以包含以下四类参数,这些参数会在系统调用时由系统自动复制,即程序员可在方法内直接使用。

HttpServletRequest

HttpServletResponse

HttpSession

请求中携带的请求参数

3、参数的接收

1)逐个参数的接收:只要保证请求参数名与该请求处理方法的参数名相同即可。

2)请求参数中文乱码问题:可用Spring-web依赖中的CharacterEncodingFilter类来处理

 

 

 

3)矫正请求参数名@RequestParam

当请求URL所携带的参数名称与处理方法中指定的参数名不相同时,则须在处理方法参数前添加一个注解@RequestParam(“请求参数名”),指定请求URL所携带参数的名称。

value属性指定请求参数的名称,required指定请求参数是否可以为空

 

 

 4)对象参数接收

将处理器方法的参数定义为一个对象,只要保证请求参数名与这个对象的属性同名即可

4、处理器方法的返回值

返回值有四种类型:

第一种:ModelAndView

第二种:String

第三种:void

第四种:返回自定义类型对象

1)返回ModelAndView

适合当处理器处理完后需要跳转到其他资源,又需要在资源见传递数据,此时返回该值。

2)返回String

处理器方法返回的字符串可以指定逻辑视图名,通过逻辑视图解析器可以将其转换为物理视图地址

3)返回void

当使用AjAX响应时并且无需跳转到其他资源时,可以用返回值void。(当传值是json格式时需要在pom.xml中加入jackson依赖)

4)返回对象Object

可以是任意自定义类型数据,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中。

该转换需要由HttpMessageConverter完成。而转换器的开启,需要有<mvc:annotation-driven/>

5)返回字符串对象(非json)

返回值String加上上方的@ResponseBody注解是的String不再是返回视图,而是字符串对象。但当返回的字符串为中文时会变成乱吧,此时需要@RequestMapping的produces属性指定字符集

 

 

 四、SSM整合开发

1、SSM所需依赖

<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jsp依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>

</dependencies>

<build>
<resources>

<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

 

2、配置web.xml

(1)注册ContextLoaderListener监听器

 

 

 (2)注册字符集过滤器

 

 

 

(3)配置中央调度器

 

 

 (4)jdbc配置文件

 

 

 (5)spring配置文件applicationContext.xml

 

 

 (6)springmvc配置文件:springmvc.xml

 

 

 (7)mybatis.xml

 

 

 五、请求重定向和转发

当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向。

而根据索要跳转的资源类型,又可分为跳转到页面与跳转到其他处理器。

注:请求转发可以访问WEB-INF中的页面,而重定向不能直接访问。

(1)请求转发

独立于视图解析器,需要在setViewName()指定的视图前添加forward,并写出视图的完整路径。

当处理器方法返回 String时,在视图路径前面加入 forward: 视图完整路径。

 

 

 (2)请求转发

独立于视图解析器,在处理器方法返回的视图字符串的前面添加redirect,则可实现重定向跳转。

六、异常处理

使用方式:将一个包专门用来自定义异常,将处理异常的方法专门定义在一个类中,作为全局的异常处理类。需要使用注解@ControllerAdvice,字面理解就是控制器增强。使用@ControllerAdvice修饰的类中可以使用ExceptionHandler。当使用@RequestMapping注解修饰的方法抛出异常时,会执行@ControllerAdvice修饰的类中的异常处理方法。

注:需要使用<context:component-scan>来扫描@ControllerAdvice所在的类路径来创建对象,以及注册注解驱动<mvc:annotation-driven/>

七、拦截器

 

 

 1、注册拦截器(语法与切入点execution类似)

 

 2、需要创建一个类实现HandlerInterceptor接口,然后实现任意三个方法preHandle、postHandle、afterCompletion

 

posted @ 2022-03-17 19:46  芜湖笑笑生  阅读(75)  评论(0)    收藏  举报