码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC配置

时间:2021-01-12 10:56:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:不包含   dep   app   path   osi   ppi   idea   maven   framework   

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

SpringMVC配置

标签:不包含   dep   app   path   osi   ppi   idea   maven   framework   

原文地址:https://www.cnblogs.com/tyhA-nobody/p/14256648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!