使用ide简单创建一个Spring MVC
流程介绍
-
本次项目是参考书籍和网上信息做的一次小学习,希望能有所收获!
步骤如下 -
1 :创建项目,引入jar包。
-
2:配置前端控制器
-
3:创建Controller类
-
4:创建Spring MVC的配置文件,配置控制器映射信息
-
5:创建视图网页
-
6:启动项目,测试应用
本次项目的步骤就可以简单总结为以上六点,下面我们将一一做介绍。
1、创建项目,引入jar包
-
开启本次项目之路,配置好相关jar包,以满足项目需求,这些包可以在idea中直接创建时选用,如下:
注: 本次可能遇到的问题(包括,创建目录没有Spring选项,解决方法如下),如果有,可以跳过 -
方法一:
-
同时点击 “ctrl + Shift + Alt + / ”,会出现一个目录,选择最上面的Register。进入下列目录选项:
-
然后进入并选择 : javaee.legacy.project.wizard,最后重启即可
-
方法二:选择setting -> Plugins 在里面搜索spring,打勾后点击Apply,重启即可(我使用方法一,这是网上方法)
-
之后的整体框架都初始化好了,只需要配置一下tomcat和Artifacts。
配置tomcat的目的是发布服务器,作为一个PC端可发布的小型服务器,可以较为快速的在电脑上发布并被访问。
-
1、配置如下:
注:如果出现端口被占用,方法一:杀掉占用该端口的进程;方法二:更换上述的HTTP port端口。JMX port同理。如果右下角存在Fix按钮,点击修复即可!!! -
2、Artifacts:作为一个maven中的概念,表示某个module需要如何打包。例如我们常说的jar、war或者war exploded、ear等形式。
2、配置前端控制器
- 在web.xml文件中配置我们的前端控制器DispatcherServlet,如下所示:
- 在servlet元素下配置前端过滤器。并初始化加载配置文件。
主要是对前端过滤器初始化时加载的文件进行配置,在元素 “init-param”中实现,并在servlet-mapping映射中将*.from修改为 / 。
- 其中:load-on-startup元素中的1表示容器在启动时立即加载这个Servlet;url-pattern元素中的"/"来拦截所有的URL,统一交由DispatcherServlet处理。
3、创建Controller类
-
在项目src下,创建org.spring.controller目录文件,并创建hello.java文件如下:
注:导入的包,选择与红色框定选择的相同才对。 -
其中logger日志,将调用情况记录下来。
-
ModelAndView时我们的包含了视图名和模型的对象
-
对象添加hello world的信息,其attributeName起名为message。
-
设置逻辑视图名,也就是通过该路径,找到我们的网页文件。
-
将该对象返回
4、创建配置文件,配置控制器映射信息
- 先上图:
可以看到上述添加的内容都在红色方框中,其中分别配置了Handle、处理映射器、处理适配器以及视图解析器。
-
首先定义了一个名称为“hello”的Bean,该Bean会将控制类hello映射到“/hello”请求中;
-
然后配置了处理器映射器,其目的是为了将处理器Bean中的name(即url)进行处理器查找;
-
然后配置了处理器适配器,主要是为了完成对hello处理器中handleRequest方法进行调用;
-
最后配置了视图解析器InternalResourceViewResolver来解析结果视图,将视图呈现给用户。
-
在spring4.0之后,其实可以不要配置处理映射器、处理适配器和视图解析器,Spring内部会默认加载出来,这里展示是为了仔细了解内部原理。
5、创建视图页面
- 在创建controller类时我们提到,在给对象添加逻辑视图名时,就埋下了网页创建在何处的伏笔,最终需要在WEB-INF目录下创建content目录,在该目录下创建名为welcome的jsp文件,如下:
- 其中head作为标题,显示在我们的网页最上端的位置,body作为主要内容显示在网页中。我们使用${}作为EL表达式来获取对象name为message的信息。(此时会获取到hello world信息,如下)
6、启动项目
- 点击右上角绿色三角符号,完成项目发布,到tomcat服务器后启动服务器。在浏览器中访问我们在tomcat中设置的网址进行访问。默认为8080端口,我更改为8888。
- 可以看到访问成功,并且如下在调试台看到
- 每点击一次都会使handleRequest被调用。也就明白了整个流程的意义。
总结
- 1、用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatchServlet拦截
- 2、拦截到请求后,会调用HandleMapping处理器映射器
- 3、处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有就生成)一并返回DispatcherServlet
- 4、DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理适配器)
- 5、处理适配器会调用并执行Handler(处理器),这里的处理器就是程序中编写的Controller类,也被成为后端控制器
- 6、Controller执行完成后,会返回一个ModelAndView对象,该对象中包含视图名或包含模型与视图名
- 7、处理器适配器将ModelAndView对象返回给DispatcherServlet(前端控制器)
- 8、前端控制器会根据ModelAndView对象选择一个合适的ViewResolver(视图解析器)
- 9、ViewResolver解析后,会向前端控制器中返回具体的View
- 10、前端控制器对View进行渲染(即将模型数据填充至视图中)
- 11、视图渲染结果会返回给客户端浏览器显示