目录标题
Spring MVC 【入门】第一篇!
MVC 设计概述
在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1:
出现的弊端:
JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起
要求开发者不仅要掌握 Java ,还要有高超的前端水平
前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试
代码难以复用
正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,早期的 MVC 模型(Model2)就像下图这样:
首先用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式。
M 代表 模型(Model)
模型是什么呢? 模型就是数据,就是 dao,bean
V 代表 视图(View)
视图是什么呢? 就是网页, JSP,用来展示模型中的数据
C 代表 控制器(controller)
控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet 扮演的就是这样的角色。
Spring MVC 的架构
为解决持久层中一直未处理好的数据库事务的编程,又为了迎合 NoSQL 的强势崛起,Spring MVC 给出了方案:
传统的模型层被拆分为了业务层(Service)和数据访问层(DAO,Data Access Object)。 在 Service 下可以通过 Spring 的声明式事务操作数据访问层,而在业务层上还允许我们访问 NoSQL ,这样就能够满足异军突起的 NoSQL 的使用了,它可以大大提高互联网系统的性能。
特点:
结构松散,几乎可以在 Spring MVC 中使用各类视图
松耦合,各个模块分离
与 Spring 无缝集成
Hello Spring MVC
让我们来写一下我们的第一个 Spring MVC 程序:
第一步:在 IDEA 中新建 Spring MVC 项目
并且取名为 【HelloSpringMVC】,点击【Finish】:
IDEA 会自动帮我们下载好必要的 jar 包,并且为我们创建好一些默认的目录和文件,创建好以后项目结构如下:
第二步:修改 web.xml
我们打开 web.xml ,按照下图完成修改:
把元素的值改为 / ,表示要拦截所有的请求,并交由Spring MVC的后台控制器来处理,改完之后:
dispatcher
/
第三步:编辑 dispatcher-servlet.xml
这个文件名的开头 dispatcher 与上面 web.xml 中的 元素配置的 dispatcher 对应,这是 Spring MVC 的映射配置文件(xxx-servlet.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- /hello 路径的请求交给 id 为 helloController 的控制器处理-->
<prop key="/hello">helloController</prop>
</props>
</property>
</bean>
<bean id="helloController" class="controller.HelloController"></bean>
</beans>
第四步:编写 HelloController
在 Package【controller】下创建 【HelloController】类,并实现 org.springframework.web.servlet.mvc.Controller 接口:
package controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller{
@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
return null;
}
}
出现了问题: javax.servlet 包找不到
解决: 将本地 Tomcat 服务器的目录下【lib】文件夹下的 servlet-api.jar 包拷贝到工程【lib】文件夹下,添加依赖
Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起
ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");
这里表示视图的是index.jsp
模型数据的是 message,内容是 “Hello Spring MVC”
package controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller {
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");
return mav;
}
}
第五步:准备 index.jsp
将 index.jsp 的内容修改为:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<h1> ${message}</h1>
### 第六步:部署 Tomcat 及相关环境
在【Run】菜单项下找到【Edit Configurations】
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201018215159690.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)
配置 Tomcat 环境:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201018215212629.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)
选择好本地的 Tomcat 服务器,并改好名字:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101821522889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)
在 Deployment 标签页下完成如下操作:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201018215241799.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)
点击 OK 就好了,我们点击右上角的三角形将 Tomcat 服务器运行起来。
出现的问题: Tomcat 服务器无法正常启动
原因: Tomcat 服务器找不到相关的 jar 包
解决方法: 将【lib】文件夹整个剪贴到【WEB-INF】下,并重新建立依赖:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101821530257.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)
### 第七步:重启服务器
重启服务器,输入地址:localhost/hello
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201018215333398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxMTMwOTc5MTkyMzI=,size_16,color_FFFFFF,t_70#pic_center)