• SpringMVC配置


    Spring MVC注解配置

    关于IDEA的配置

    创建好项目以后File -> Project Structure -> Artifacts 在界面中右击WEB-INF创建一个文件夹lib,
    右键文件夹lib -> Add Copy of -> library Files 然后将所有的包添加进去。

    Tomcat 创建好以后要 fix以下,确认就行。

    pom.xml文件文件配置

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.mashibing</groupId>
        <artifactId>spring_mvc</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.3.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.2.3.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.3.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </project>
    
    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>
            <!-- 关联springmvc的配置文件 -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <!-- applicationContext.xml文件为springmvc的配置文件 -->
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    <!--匹配servlet的请求,
        /:标识匹配所有请求,但是不会jsp页面
        /*:拦截所有请求,拦截jsp页面
    
         但是需要注意的是,当配置成index.html的时候,会发现请求不到
         原因在于,tomcat下也有一个web.xml文件,所有的项目下web.xml文件都需要继承此web.xml
         在服务器的web.xml文件中有一个DefaultServlet用来处理静态资源,但是url-pattern是/
         而我们在自己的配置文件中如果添加了url-pattern=/会覆盖父类中的url-pattern,此时在请求的时候
         DispatcherServlet会去controller中做匹配,找不到则直接报404
         而在服务器的web.xml文件中包含了一个JspServlet的处理,所以不过拦截jsp请求
        -->
    </web-app>
    

    applicationContext.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">
    
        <!-- 添加控制扫描包,由IOC容器进行控制管理 -->
        <context:component-scan base-package="com.mashibing"></context:component-scan>
        <!-- 视图解析器 -->
        <bean id="internalResourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!-- 方法执行完后的返回值,由驶入解析器进行地址拼接,拼接成完整的地址,再由DispatcherServlet进行转发 -->
            <!-- 视图解析器转发页面的前缀 -->
            <property name="prefix" value="/WEB-INF/page/"></property>
            <!-- 视图解析器转发页面的后缀 -->
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>
    
    测试类
    package com.mashibing.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    /* 在类名前面也能加@RequestMapping注解,里面有参数时表示增加一层路径。如在类名前加@RequestMapping("/hello"),那么发送hello请求时,就找不到对应的方法了。正确应该是hello/hello
    */
    @Controller
    public class HelloController {
        @RequestMapping("/hello")
        public String hello(Model model){
            model.addAttribute("msb","hello,Springmvc");
            //返回值的处理页面,方法执行完,将会被转发到这个页面
            return "hello";
        }
    }
    
    hello.jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    ${msb}
    </body>
    </html>
    

    Spring mvc的运行流程

    1.客户端发送请求

    2.tmocat接收到对应的请求

    3.SpringMVC前段控制器DispatcherServlet接收到所有请求

    4.查看请求和注解@RequestMapping中哪个参数相匹配,找到具体的类的处理方法

    5.前端控制器找到目标处理类和方法后,执行对应方法

    6.方法执行完会有一个返回值,有springMVC中的视图解析器将这个方法返回值进行拼接,拼接成一个完整的地址

    7.DispatcherServlet拿到页面地址后,转发到具体页面

    @RequestMapping

    1.可以进行模糊匹配

    ​ ?:能代替任意单个字符

    ​ * :能代替任意多个字符和一层路径

    ​ **:能代替多层路径

    2.参数

    ​ value:要匹配的请求,也就是默认的参数

    ​ method:限制发送请求的方式 GET POST

    ​ params:请求要接受的参数,如果设置了这个属性,那么请求中必须要包含这个属性,

    ​ 如params={“username”},那么发送的请求中必须包含usernmae。params有几种规则:

    ​ 1.直接限定参数 params={"username",“age”}

    ​ 2.不包含某个参数 params={"!username"}

    ​ 3.限定某个参数为某值,或不为某值params={"username=123","age!=20"}

    ​ headers:填写请求头信息

    ​ consumers:只接受内容类型是哪种的请求,相当于指定Content-Type

    ​ produces:返回的内容类型 Content-Type:text/html;charset=utf-8

  • 相关阅读:
    python爬虫 --- 简书评论
    python 爬虫 伪装
    pygal的简单使用
    anaconda安装不存在的包
    python爬虫 赶集网
    my.conf 修改编码
    python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
    基于visual Studio2013解决C语言竞赛题之1021九九乘法表
    基于visual Studio2013解决C语言竞赛题之1020订票
    基于visual Studio2013解决C语言竞赛题之1019填数
  • 原文地址:https://www.cnblogs.com/tyhA-nobody/p/14256648.html
Copyright © 2020-2023  润新知