springMVC框架简介
SpringMVC是spring为展现层提供的基于MVC设计理念的优秀WEB框架,是目前最主流的MVC框架之一
SpringMVC通过一套注解,可以让普通的JAVA类成为contrllor控制器,无需继承Servlet,实现了控制层和Servlet之间的解耦 。
SpringMVC支持Rest风格的URL写法
SpringMVC采用了松耦合,可热插的主键结构,比其他的框架更具扩展性和灵活性
官网地址:spring.io/
MVC含义
- M : model 模型层
- V:view 视图层
- C:controller 控制层
忆苦思甜-传统servlet
本节目的是采用servlet的方式,来实现一个http请求和响应。回忆一下,已经逝去的岁月。
1. 通过骨架创建一个Maven项目
2. 补充项目结构文件夹并标记
创建好目录后,选中目录,右击 mark directory as 选择对应目录类型即可。
3. 修改web.xml
采用4.0版本
<?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">
</web-app>
4. 导入servlet和jsp依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
5. 编写servlet
仅仅是跳转到到一个jsp页面
/**
* 实现Servlet
*
* @author 老马
* @date 2023-03-16 11:23
*/
@WebServlet("/demo")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
req.getRequestDispatcher("first.jsp").forward(req,resp);
}
}
6.first.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>fistJSP</title>
</head>
<body>
第一个jsp页面!
</body>
</html>
7. 代码地址
gitee.com/mayuanfei/s…下的springmvc01
忆苦思甜-SpringMVC
本节是把上面用Servlet实现的方式采用SpringMVC再次实现一遍。对比一下。
1. pom文件中引入依赖
<dependencies>
<!--springMVC支持包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.25</version>
</dependency>
<!-- servlet jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. 配置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">
<!--配置DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置初始化参数,读取springMVC的核心配置文件的位置和名称-->
<!--
当然,不使用initparam,springMVC会到一个默认路径下读取默认名称的.xml配置文件
默认路径为/WEB-INF/
默认配置文件名为:<servlet-name>-servlet.xml
我们暂时不推荐这种方式
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--Web容器启动立即初始化servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置dispatcherServlet的映射路径为 / 包含全部的servlet, JSP除外-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3. resource目录下添加springmvc.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
">
<!--配置spring包扫描-->
<context:component-scan base-package="com.mayuanfei"/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
4. 编写controller类
@Controller
@RequestMapping("/laoma")
public class MyController {
@RequestMapping("/first")
public String first() {
System.out.println("hello world");
return "first";
}
}
5. 代码地址
gitee.com/mayuanfei/s…下的springmvc02
记忆印记
- 最初的servlet要继承HttpServlet,而且一个类仅仅能实现一个请求
- springMVC可以在一个类中实现对多个请求的响应。
- 通过配置视图解析器可以简化返回的页面路径。
- springMVC这个年代更多还是前后台绑在一起开发的