(一)、认识MVC三层架构
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc%20Spring%20MVC
1.回顾MVC
SpringMVC 控制器默认支持GET和POST两种方式,默认的是转发,而不是重定向。WEB-INF目录下的文件只能通过请求转发进行获取,重定向不能进行获取。
(1).什么是MVC三层框架
经典MVC模式中,M是指业务模型(Model–dao service),V是指用户界面(View – jsp),C则是控制器(Control–servlet),使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。
(2).MVC要做那些事情?
- 将URL 映射到java类或java方法上
- 封装用户提交的数据
- 处理请求:调用相关的业务处理–封装响应数据
- 将相应的数据进行渲染 .jsp等表示层数据
(3).常见的MVC三层框架结构
常见的服务端MVC框架:Struts,SpringMvc,ASP
常见的前端MVC框架: VUE React
(4).知识拓展
- 全栈 : 后台+前端+数据库+运维
- 前端 : 后台+前端
2.代码回顾
依赖
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!-- servlet-jsp依赖--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> </dependency> <!-- jstl依赖--> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <!-- standard依赖--> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- junit 测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 基本框架 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.19.RELEASE</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
servlet层
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1.获取前端的参数 String method=req.getParameter("method"); // 2.进行判断要执行哪一个? if (method != null&&method.equals("add")) { req.getSession().setAttribute("msg","执行了add方法"); }if (method != null&&method.equals("delete")) { req.getSession().setAttribute("msg","执行了delete方法"); } req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
配置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>test1</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test1</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
在WEB-INF下创建jsp文件夹创建test.jsp
<%-- Created by IntelliJ IDEA. User: 22612 Date: 2022/12/24 Time: 10:28 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>跳转成功了呀</h1> ${msg} </body> </html>
首页设置
<%-- Created by IntelliJ IDEA. User: 22612 Date: 2022/12/24 Time: 10:19 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <h1>首页面加载中</h1> <form action="hello" method="post"> <input type="text" name="method"> <button type="submit"></button> </form> </body> </html>
3.什么是SpringMVC
SpringMVC是Spring Framework的一部分,是基于java实现的MVC的轻量级Web框架
- 轻量级,简单易学
- 高效,基于请求相应的MVC框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大: RESTful、数据验证、格式化、本地化、主题等
- 简介灵活
(二)、第一个SpringMVC
0.前提
不要导入: servlet jsp jstl 的这三个jar包到lib目录下,但是要存在于pom.xml里,否则会出现严重的500错误。切记。其他的依赖需要导入lib目录下
1.搭建环境
servlet-api -> 提供HttpRequest 和 HttpResponse
javax.servlet.jsp-api -> action调用servlet里面get和post方法
jstl是可以快速在web页面${名称}。
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!-- servlet-jsp依赖--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> </dependency> <!-- jstl依赖--> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <!-- standard依赖--> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- junit 测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 基本框架 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.19.RELEASE</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
2.配置WEB-INF的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>
3.在资源Resource的包下设置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"> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 视图解析器:DispatcherServlet给他的ModelAndView --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀 --> <property name="suffix" value=".jsp"/> </bean> <bean id="/hello" class="com.Jsxs.controller.helloController"/> </beans>