SpringMVC
什么是MVC?
我想大家对MVC应该都不陌生了,在之前也应该都接触过,也就是分层开发
MVC: 全名是 Model view Controller,是模型(Model)、视图(View)、控制层(controller)的缩写 而SpringMVC是基于Spring对web层的支持,实现了对WebMVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC的架构设计思想,将Web层进行解耦,并管理其生命周期,为简化日常开发提供了很大的便利
SSM:Spring、SpringMVC、Mybatis 在之后的开发中,可以用SpringMVC来代替Servlet做控制层,Spring用来管理对象的,Mybatis用来代替JDBC做持久层
说白了SpringMVC就是对Servlet的封装,也就是Servlet可以做什么,SpringMVC也一样不差,甚至可以做的更多乃至更简单方便。
SpringMVC的执行流程:
一、SpringMVC的导入
还是采用maven来管理项目,直接在pom.xml文件内写入依赖即可:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.21</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.21</version>
</dependency>
二、实现Controller 方法使用MVC
接着编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解;需要返回一个ModelAndView,装数据
HelloMVC:
public class HelloMVC implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","你好,SpringMVC");
mv.setViewName("hello");
return mv;
}
}
接着配置一下web,xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMvc-Servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
编写SpringMVC的配置文件springMvc-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">
<context:component-scan base-package="zte.controller"></context:component-scan>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
接着写要跳转的jsp页面,显示ModelandView存放的数据,因为我们在Controller 里面setViewName是hello,所以我们在 /WEB-INF/jsp/下创建一个hello.jsp
当在地址栏输入/hello的时候,就会调用handleRequest方法,返回一个/WEB-INF/jsp/hello.jsp 的页面
hello.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>MVC</title>
</head>
<body>
${msg}
</body>
</html>
配置TomCat: 遇到404解决办法:
- 查看控制台输出,是否缺少jar包
- 在IDEA的项目发布中,添加lib依赖
- 重启即可解决
这就是实现Controller 接口的方法,但我们实际业务中并不会这样去写,因为太复杂了,要写的太多,所以我们来看一个注解版的SpringMVC。
三、使用注解实现SpringMVC
首先还是在Maven的pom.xml文件内添加依赖,主要是Spring框架核心库、Spring MVC、servlet , JSTL。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.21</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>demo01</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
然后还是先配置配置web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMvc-Servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
然后添加Spring MVC配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="zte.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
HelloMVC控制层:
@Controller
@RequestMapping("/user")
public class HelloMVC {
@RequestMapping("/hello")
public String helloMVC(Model model){
model.addAttribute("msg","你好mvc,我是通过注解方式来访问你的!");
return "hello";
}
}
这里关于一些注解作用的解释:
- @Controller 为了让Spring IOC容器初始化时自动扫描到
- @RequestMapping 为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/user/hello
- 方法中声明Model类型的参数是为了把Action中的数据带到视图中
- 还有很多很多注解,大家可以继续学习其他的注解
视图层就不写了,还是用上面的hello.jsp即可
配置TomCat,输入URL测试:
如果遇到404问题还是可以参考上面写的解决方法,依次排除即可。
通过以上的步骤,用两种方式实现了简单的SpringMVC的搭建,SpringMVC代码清新简洁,大幅度提升工作效率,内部组件化程度高,可插拔式组件即插即用,想要什么功能提供配置文件即可性能卓越,尤其适合现代大型或超大型项目。
注意:
使用springMVC必须配置的三大块:
处理器映射器:HandlerMapping 处理器适配器:HandlerAdapter 视图解析器:View Resolver
四、总结
最后,总结一下使用SpringMVC的步骤:
- 新建一个web项目(Maven)
- 在pom.xml里面导入需要的依赖
- 配置web.xml , 注册DispatcherServlet
- 配置SpringMVC配置文件,文件名要与web.xml里param-value里一致
- 创建Controller类,推荐使用注解法
- 根据控制类方法的返回编写视图,放到/WEB-INF/jsp下(根据自己的情况创建)
- 配置TomCat,输入URL测试
|