SpringMVC Controller 配置总结


一、搭建环境

1、导入maven依赖

使用Spring MVC需要导入servletjspjstlspring-webmvcjunit依赖,打开pom.xml

<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.12.RELEASE</version>
    </dependency>
</dependencies>

2、在maven项目中添加web框架支持

点击项目名称,点击右键,点击Add Framework support,选中Web Application,选择版本,最后点击OK
在这里插入图片描述
这时候,我们创建的maven项目中会多出一个web目录

然后需要把web所需要的依赖包,放入WEB-INF文件夹下,选中项目名称,点击左上角的File,然后点击Project Structer
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是这样:
在这里插入图片描述
就算添加成功了!

3、新建一个页面

WEB-INF下新建一个目录:jsp,这里存放jsp页面,在这个目录下新建一个jsp页面,在这个页面中只做一件事,取后台传来的msg
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
	${msg}
</body>
</html>

4、配置Tomcat服务器

点击idea右上角的add Confriguration
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后点击+,选择Artifact,选择载入哪个项目,修改名字,点击Apply,最后点击OK
在这里插入图片描述

5、编写web.xml关联SpringMVC-servlet

打开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">
    <!-- 注册DispatcherServlet,这个是SpringMVC的核心,是请求分发器,前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <!-- 这个类是spring写好的 -->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 关联一个SpringMVC的配置文件:[servlet-name]-servlet.xml -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 启动级别-1:与服务器一起启动 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- /:只匹配所有的请求 不包括.jsp-->
    <!-- /*:匹配所有的请求,包括.jsp -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

这时候,因为还没有写springmvc-servlet.xml文件,所以会报红

接下来在src/main/resources下新建一个springmvc-servlet.xml,这是个bean

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

接下来进入正题:

二、使用配置文件【不推荐】

1、绑定映射、处理、解析器

使用配置文件搞SpringMVC需要在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
        https://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>

</beans>

2、实现Controller接口

src.main.java.com.wzq.controller下新建一个HelloController,这个HelloController需要实现接口Controller,重写handleRequest方法,并返回一个ModelAndView

package com.wzq.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {
    
    
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    
    
        //模型和视图
        ModelAndView mv = new ModelAndView();
        //封装对象,放在ModelAndView中
        mv.addObject("msg","Hello SpringMVC");
        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello");
        return mv;
    }
}

最后需要把这个类注册到bean,打开springmvc-servlet.xml,在最后面添加

<bean id="/hello" class="com.wzq.controller.HelloController" />

3、测试

直接点击运行,在浏览器地址栏输入:

http://localhost:8080/hello

在这里插入图片描述
成功

但是使用配置文件搞SpringMVC是很不推荐的,因为要写好多的类实现Contrlloer接口,还要注册到bean,有点不高级,接下来看使用注解开发SpringMVC

三、使用注解【推荐】

1、使用默认处理器,添加视图解析器

打开springmvc-servlet.xml,做四件事:

  • 自动扫描com.wzq.controller下的包,将其注册为bean
  • 使用默认处理器
  • 开启注解的支持
  • 添加视图解析器
<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 扫描包 -->
    <context:component-scan base-package="com.wzq.controller"/>
    <!-- 使用默认处理器 -->
    <mvc:default-servlet-handler/>
    <!-- 开启注解支持 -->
    <mvc:annotation-driven/>

    <!-- 视图解析器: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>
</beans>

2、写Controller

这里使用@Controller@RequestMapping注解:

package com.wzq.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//@Controller注解的类会自动添加到Spring的上下文中
@Controller
public class ControllerTest {
    
    

    //映射访问路径
    @RequestMapping("/h1")
    public String index(Model model){
    
    
        //Spring MVC 会自动实例化一个Model对象用于视图中传值
        model.addAttribute("msg","hello SpringMVC");
        //返回视图位置
        return "hello";
    }

    /*
    * 还可以配置多个
    * */
}

3、测试

启动Tomcat服务器,在地址栏输入:

http://localhost:8080/h1

在这里插入图片描述
成功

猜你喜欢

转载自blog.csdn.net/lesileqin/article/details/113709550