81.【SpringMVC】(一)

简介: 81.【SpringMVC】

(一)、认识MVC三层架构

https://springref.com/

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要做那些事情?
  1. 将URL 映射到java类或java方法上
  2. 封装用户提交的数据
  3. 处理请求:调用相关的业务处理–封装响应数据
  4. 将相应的数据进行渲染 .jsp等表示层数据
(3).常见的MVC三层框架结构

常见的服务端MVC框架:Struts,SpringMvc,ASP

常见的前端MVC框架: VUE React

(4).知识拓展
  1. 全栈 : 后台+前端+数据库+运维
  2. 前端 : 后台+前端

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框架

  1. 轻量级,简单易学
  2. 高效,基于请求相应的MVC框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大: RESTful、数据验证、格式化、本地化、主题等
  6. 简介灵活

(二)、第一个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>


相关文章
|
7月前
|
缓存 前端开发 Java
|
7月前
|
XML JSON fastjson
|
7月前
|
前端开发 JavaScript Java
|
4月前
|
XML 前端开发 Java
SpringMvc专题
SpringMvc笔记(持续更新)此方法的执行时机是在控制器方法执行之前,所以我们通常是使用此方法对请求部分进行增强。同时由于结果视图还没有创建生成,所以此时我们可以指定响应的视图。
|
4月前
|
前端开发 Java API
|
4月前
|
存储 JSON Java
SpringMVC应用
SpringMVC应用
32 0
|
8月前
SpringMVC@RequestHeader
SpringMVC@RequestHeader
18 0
|
8月前
SpringMVC@CookieValue
SpringMVC@CookieValue
23 0
|
8月前
|
前端开发 应用服务中间件
SpringMVC2
SpringMVC2
23 0
|
8月前
|
前端开发 Java Maven
SpringMVC1
SpringMVC1
57 0
SpringMVC1

热门文章

最新文章

相关课程

更多