搜索
首页
笔记
案例
关于
课程列表
SpringMVC
入门
运行helloworld
SpringMVC请求处理流程
注解式开发
@RequestMapping
控制器方法的参数
中文乱码
控制器方法的返回值
解读url-pattern
整合SSM
整合SSM
使用ssm完成用户注册功能
请求转发、拦截器、异常处理
请求转发与重定向
异常处理
拦截器
课程导航
计算机基础知识
C
Linux
linux常用软件
计算机网络
程序员修养
设计模式
工具
Git
composer
vim
IntelliJ IDEA
wireshark
laravel
Spring
SpringMVC
Maven
数据库
MySQL
Redis
MongoDB
JDBC
Mybatis
MyBatis-Plus
服务端编程
PHP
Java
shell script
JavaWeb
HTML / CSS
HTML
CSS
HTML5
CSS3
BOOTSTRAP
JavaScript
JavaScript
JQuery
layui
SpringMVC请求处理流程
运行helloworld
## 新建WEB工程 ![](http://img.1024phper.com/blog21041101525617001) ![](http://img.1024phper.com/blog21041101525634092) ![](http://img.1024phper.com/blog21041101525611478) ![](http://img.1024phper.com/blog21041101525669122) ## 创建目录 在main目录下建立java以及resources目录 ## 加入依赖 依赖 ```xml
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-webmvc
5.2.5.RELEASE
``` ## 修改web.xml文件版本 默认版本太低,修改为4.0版本的。 ```xml
``` ## 整合Tomcat ![](http://img.1024phper.com/blog21041112131680375) ![](http://img.1024phper.com/blog21041112131637787) ![](http://img.1024phper.com/blog21041112131589043) ![](http://img.1024phper.com/blog21041112131556765) ![](http://img.1024phper.com/blog21041112131581486) ## 注册中央调度器 ```xml
myweb
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
myweb
*.do
``` 我们来解析下这个配置的含义,主要可以分为下面几个: ### DispatcherServlet ```xml
myweb
org.springframework.web.servlet.DispatcherServlet
1
``` 该中央调度器为一个 Servlet,名称为 DispatcherServlet。中央调度器的全限定性类名在导入的 Jar 文件 spring-webmvc-5.2.5.RELEASE.jar 的第一个包 org.springframework.web.servlet下可找到。 DispatcherServlet是核心功能,必须在tomcat服务器启动后,创建DispatcherServlet对象的实例。DispatcherServlet在他的创建过程中, 会同时创建springmvc容器对象,读取springmvc的配置文件,把这个配置文件中的配置的对象都创建好。 那么在创建DispatcherServlet对象实例的过程中,是什么时候创建SpringMVC容器对象的呢? DispatcherServlet是一个Servlet,Servlet在初始化的时候会执行init()方法。DispatcherServlet的init方法,会创建springmvc容器对象,并把该容器对象放到ServletContext中。 #### load-on-startup 在\
中添加\
的作用是,标记是否在Web服务器(这里是Tomcat)启动时会创建这个 Servlet 实例,即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建。它的值必须是一个整数。 ➢ 当值大于等于 0 时,表示容器在启动时就加载并初始化这个 servlet,数值越小,该 Servlet的优先级就越高,其被创建的也就越早; ➢ 当值小于 0 或者没有指定时,则表示该 Servlet 在真正被使用时才会去创建。 ➢ 当值相同时,容器会自己选择创建顺序。 ### 自定义SpringMVC主配置文件位置 默认启动tomcat报错,读取SpringMVC主配置文件位置为`/WEB-INF/
-servlet.xml` 这样不太灵活,一般我们都自定义SpringMVC配置文件位置 ```xml
contextConfigLocation
classpath:springmvc.xml
``` ## 创建SpringMVC主配置文件 在resources目录 下,创建springmvc.xml。并注册组件扫描器 ```xml
``` ## 创建处理器 ```java @Controller public class MyController { @RequestMapping("/some.do") public ModelAndView doSome () { System.out.println("------doSome------"); ModelAndView mv = new ModelAndView(); mv.addObject("name", "gwx"); mv.addObject("age", 30); mv.setViewName("/show.jsp"); return mv; } } ``` 在类上与方法上添加相应注解即可。 * @Controller:表示当前类为处理器 * @RequestMapping:表示当前方法为处理器方法。该方法要对 value 属性所指定的 URI 进行处理与响应。被注解的方法的方法名可以随意。 若有多个请求路径均可匹配该处理器方法的执行,则@RequestMapping 的 value 属性中可以写上一个数组。 ModelAndView 类中的 addObject()方法用于向其 Model 中添加数据。Model 的底层为一个 HashMap。 Model 中的数据存储在 request 作用域中,SringMVC 默认采用转发的方式跳转到视图,本次请求结束,模型中的数据被销毁。 ## 创建目标jsp 在webapp目录下创建show.jsp文件。 ```xml <%@ page contentType="text/html;charset=UTF-8" language="java" %>
show
name:${name}
age:${age}
``` ## 测试 在浏览器中输入`http://localhost:8080/day01/some.do` ## 修改视图解析器 SpringMVC 框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器InternalResouceViewResolver 中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。 ```xml
``` 一般的,我们将不希望被用户直接访问的jsp文件,放置在WEB-INF/文件目录下。我们在WEB-INF目录下创建jsp目录,并将show.jsp文件移动到此目录中。 修改控制器 ```java mv.setViewName("show"); ``` ## 一个控制器方法处理多个请求路径 ```java @RequestMapping(value = {"/some.do","/first.do"}) public ModelAndView doSome(){ // ...... } ```
SpringMVC请求处理流程
文章目录