SpringMVC-Here we go~

快速搭建一个SpringMVC项目

配置文件版

新建普通Maven项目+引入相关依赖+Web框架支持

导入SpringMVC的依赖

配置web.xml,注册DispatcherServlet

    <!--1. 注册DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <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>

【nameservlet.xml】

// 格式与applicationConfig.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
    1. 获取ModelAndView的数据
    2. 解析ModelAndView中视图的名字
    3. 根据视图名找到对应视图(prefix+name+suffix)
    4. 将数据渲染至视图上
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--Handler-->
    <bean id="/hello" class="cn.iris.controller.HelloController"/>
</beans>

【编写一个业务类(cn.iris.controller.HelloController.class)】(记得在springmvc-servlet.xml中配置Bean)

package cn.iris.controller;

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

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

/**
 * @author Iris 2021/8/14
 * @implements 首先导入接口
 */
public class HelloController implements Controller {
    
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();

        // 封装对象,放在ModelAndView中,Model
        mv.addObject("msg", "HelloSpringMVC");
        // 封装要跳转的视图,放在ModelAndView中
        /* hello:/WEB-INF/jsp/hello.jsp */
        mv.setViewName("hello");
        return mv;
    }
}

【将业务类中跳转的jsp页面创建出来(WEB-INF/jsp/hello.jsp)】

<%--
  Created by IntelliJ IDEA.
  User: asus
  Date: 2021/8/14
  Time: 15:29
  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>

${msg}

</body>
</html>

【配置好Tomcat就可以跑起来了~】
【tips:可能遇到的问题(404)】

  1. 查看控制台输出 》》是否缺少jar包
  2. 若jar包存在,显示无法输出,在IDEA项目发布中添加lib依赖(IDEA选手)
  3. 【重启即可解决[狗头出现]】

注解版开发

【创建一个Maven项目+引入相关依赖+web框架支持】

【解决文件扫描问题】

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <!-- 由于修改了默认的resource目录,导致src/main/resources的所有文件都不能被扫描,因此还要配多一个 -->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

【配置web.xml】(同上)

【项目Artifacts添加lib】(IDeA选手解决404报错)

【配置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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--自动扫描包-->
    <context:component-scan base-package="cn.iris.controller"/>
    <!--让SpringMVC不处理静态页面(.html/.css/.js/.mp3/...)-->
    <mvc:default-servlet-handler />
    <!--
    支持MVC注解驱动
        在Spring中一般采用【@RequestMapping】注解来完成映射关系
        要使【@RequestMapping】注解生效需要在上下文中注册
            【DefaultAnnotationHandlerMapping】
            【AnnotationMethodHandlerAdapter】
        这两个实例分别在类级别和方法级别处理
        Annotation-driven配置帮助我们自动完成上述两个实例的注入
    -->
    <mvc:annotation-driven />

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

【WEB-INF目录下创建jsp/hello.jsp】(格式同上)

【使用注解编写Controller--模拟业务操作】

package cn.iris.controller;

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

@Controller
//@RequestMapping("/hello")
/**
 * @author Iris 2021/8/15
 */
public class HelloController {

    @RequestMapping("/hello")
    /**
     * 如果类上方加RequestMapping,访问地址则会变成:
     * localhost:8080/springmvc/hello/hello
     */
    public String hello(Model model) {
        // 封装数据
        model.addAttribute("msg","Here we go~");
        // 会被视图解析器处理
        return "hello";
    }
}

【配置Tomcat,跑起来~】

【tips:注意点】

  • 使用SpringMVC必须配置三大件:
    • 处理器映射器
    • 处理器适配器
    • 视图解析器
  • 开发时,仅需手动配置视图解析器,处理器映射器和处理器适配器仅需开启注解驱动即可(可省去大段xml配置)
posted @ 2021-08-16 17:04  菜鸢爱敲bug  阅读(47)  评论(0编辑  收藏  举报