SpringMVC的第一个程序

准备工作

  1. 添加maven依赖
		<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>
  1. 在工程中添加web支持(Tomcat服务器)
    在这里插入图片描述
  2. 配置web下web.xml,注册DispatcherServlet,并且绑定springMVC配置文件
<?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">

    <!--1.注册DispatcherServlet-->
    <servlet>
        <servlet-name>spring-mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通过初始化参数指定SpringMVC配置文件的位置,关联一个springmvc的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc</param-value>
        </init-param>
        <!--启动级别-1,启动顺序,数字越小,启动越早-->
        <load-on-startup>1</load-on-startup>
    </servlet>
     <!--设置请求被springmvc拦截-->
    <servlet-mapping>
        <!--/ 匹配所有的请求;(不包括.jsp)-->
        <!--/* 匹配所有的请求;(包括.jsp)-->
        <servlet-name>spring-mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

注意:

/*会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错

  1. 编写SpringMVC的配置文件
<?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:aop="http://www.springframework.org/schema/aop"
       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/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd">

<!--配置URL处理映射器-->
    <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>
<!--    配置Handle,BeanNameUrlHandlerMapping会根据bean的名字/hello进行映射-->
    <bean id="/hello" class="com.chenhui.controller.Hello"/>
</beans>
  1. 编写操作业务的Controller,要么实现Controller接口,要么增加注解,实现接口Controller重写handleRequest方法,需要返回一个ModelAndView,装数据,封视图
//这个类操作业务,要么实现Controller接口,要么增加注解@Controller
//实现Controller接口,重写handleRequest方法,需要返回一个ModelAndView,装数据,封视图
public class Hello implements Controller {
    
    
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    
    
        //ModelAndView 模型和视图
        ModelAndView modelAndView = new ModelAndView();
        //封装对象,放在ModelAndView中,作为Model
        modelAndView.addObject("msg","Hello SpringMVC");
        //封装要跳转的视图,放在ModelAndView中
        modelAndView.setViewName("hello");
        //这里要跳转的视图为:WEB-INF/jsp/hello.jsp
        return modelAndView;
    }
}
  1. 将业务类Controller交给SpringIOC容器管理,注册bean
    在这里插入图片描述
  2. 编写要跳转的jsp页面(可以取出ModelandView存放的数据)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Kuangshen</title>
</head>
<body>
${msg}
</body>
</html>
  1. 启动Tomcat,并访问请求路径
    在这里插入图片描述
    总结:实现接口Controller定义控制器是较老的办法
    缺点是:一个控制器中只有一个方法,如果要多个方法则需要定义多个Controller,定义的方式比较麻烦

在web阶段可能遇到的问题:访问出现404,排错步骤:

  1. 查看控制台输出,看一下是不是缺少了什么jar包
  2. 如果jar包存在,显示无法输出,就在IDEA的项目发布中,添加lib依赖
  3. 重启Tomcat 即可解决
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45608165/article/details/114282295