springMVC简易搭建运行

  • Post author:
  • Post category:其他



目录


1.MVC架构


2.springMVC的概念


3.搭建springMVC框架顺序:


4.springmvc的运行流程


5.在controller接收请求的参数


6.接收参数含有日期类型


7.处理静态资源


1.MVC架构

​ MVC是一种软件架构的思想。

​ M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

​ V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。

​ C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

2.springMVC的概念

​ Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

3.搭建springMVC框架顺序:

1.1.引入依赖 spring-webmvc
2.注册DispatcherServlet到web.xml文件。需要指定加载的springmvc配置文件的路径
3.tomcat启动时会加载servlet
4.创建springmvc的配置文件。 
5.创建一个类,在类上加上@Controller  并且在方法上加上@RequestMapping注解

1.创建maven-web工程,手动在main下添加Java,resource包,并把web-inf下的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">
</web-app>

2.在pom.xml中引入spring-webmvc依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.15.RELEASE</version>
  </dependency>

3.注册DispatcherServlet到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>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--classpath:表示编译后的路径-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

4.创建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"
       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="com.cmw.controller"/>
</beans>

5.创建一个controller类,并用tomcat运行

package com.cmw.controller;
​
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
​
/**
 * @Author 86151
 * @Create 2022/6/7 - 21:08
 */
@Controller//该注解标记该类为处理层类, 类似webServlet
public class Hello {
    @RequestMapping(value = "/a")//把请求路径映射到该方法上
    public String HELLO(){
        System.out.println("输出结果");
        return "hello.jsp";//响应一个页面
    }
}

4.springmvc的运行流程

 *     1. 客户端发生请求http://localhost:8080/qy151_springmvc01/abc
 *     2. 来到tomcat服务器。
 *     3. springmvc的前端控制器DipatcherServlet接受所有的请求。
 *     4. 查看你的请求地址和哪个@RequestMaping匹配。
 *     5. 执行对应的方法。方法会返回一个字符串。springmvc把该字符串解析为要转发的网页。
 *     6. 把该字符串经过视图解析器拼接。
 *     7. 拿到拼接的地址,找到对应的网页。
 *     8. 渲染该网页给客户

5.在controller接收请求的参数

接收少量的参数

package com.cmw.controller;
​
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
​
/**
 * @Author 86151
 * @Create 2022/6/7 - 21:08
 */
@Controller//该注解标记该类为处理层类, 类似webServlet
public class Hello {
    @RequestMapping(value = "delete")
    public String delete(int id){
        System.out.println("根据id删除信息:"+id);//只需在方法处添加参数就可以,但是参数名一定要和请求的参数名一致。
        return "hello.jsp";
    }   
}

接收大量的参数

解决乱码:

使用springmvc自带的过滤器,在web.xml中添加

<!--springmvc提供了过滤器-->
    <filter>
        <filter-name>encodingfilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

6.接收参数含有日期类型

(1)需要用到@DateTimeFormat(pattern = “yyyy-MM-dd”)

package com.cmw.entity;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @Author 86151
 * @Create 2022/6/7 - 21:35
 */
@Data
public class Student {
    private Integer id;
    private String name;
    private String email;
    private Integer age;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
}

注:引用@Data需要在pom.xml中引入依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
  </dependency>

(2)在springmvc.xml中添加注解驱动

注意:annotation-driven选择xmlns:mvc=”

Index of /schema/mvc

<!--开启注解驱动-->
    <mvc:annotation-driven/>

7.处理静态资源

哪些资源为静态资源。css img js html

在springmvc.xml中添加放行静态资源

<!--放行静态资源-->
    <mvc:default-servlet-handler/>



版权声明:本文为weixin_53997529原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。