SpringMVC——记录那些走过的坑(1)

前言

Idea在开发的时候,的确比Eclipse智能,但是没有Eclipse方便,好多在Eclipse中没问题的源代码跑到idea里面就会因为结构而遇到各种各样的坑

工欲善其事,必先利其器

idea新建一个SpringMVC项目
第一步,打开Idea,create a new project,注意我图中的打√的地方,然后一路next,Finsh
在这里插入图片描述
就这?就这?就这?Too young too single
第二步,先看看咱们的项目结构,src就是源码
在这里插入图片描述
修改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">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Springmvc的前端控制器 / 核心控制器:  DispatcherServlet -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 给DispatcherServlet配置初始化参数:
                指定Springmvc的核心配置文件
         -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:SpringMVC.xml</param-value>
        </init-param>

        <!--
            load-on-startup: 设置DispatcherServlet在服务器启动时加载。
                Servlet的创建时机:
                     1. 请求到达以后创建
                     2. 服务器启动即创建
         -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 指定请求的匹配 -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

直接在src下新建SpingMVC.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">
    <!--  1. 组件扫描 -->
    <context:component-scan base-package="main.SpringMVC"></context:component-scan>
    <!--  2. 视图解析器

             工作机制:  prefix + 请求处理方法的返回值 + suffix  =  物理视图路径.
                      /WEB-INF/views/success.jsp

            WEB-INF: 是服务器内部路径。 不能直接从浏览器端访问该路径下的资源. 但是可以内部转发进行访问

        -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

第三步,打开Project Structure(敲黑板了)
在这里插入图片描述
第四步,编写HelloWorld
index.jsp
在这里插入图片描述
请求方法


/**
 * 为什么只能用Controller
 * 注册为组件
 * 请求处理器  / 控制器
 */
@Controller
public class test {

    /**
     * 处理客户端的请求:  http://localhost:8888/Springmvc01/hello
     *
     * @RequestMapping: 完成请求 与 请求处理方法的映射.
     *
     */
    @RequestMapping(value="/hello")
    public String  handleHello() {
        System.out.println("Hello SpringMVC ");

        return "success";  // 通过视图解析器解析得到具体的视图, 再转发去往该视图.
    }
}

第五步,添加Tomcat并执行
在这里插入图片描述
在这里插入图片描述

运行结果:

在这里插入图片描述
在这里插入图片描述

原理剖析

Springmvc的HelloWorld:
1. 创建web工程, 导入核心的jar包.
2. 在web.xml中配置SpringMVC的前端控制器: DispatcherServlet
3. 配置SpringMVC的核心配置文件: springmvc.xml
4. 编写请求处理器
5. 浏览器端发送请求, 请求处理器中处理请求
6. 测试

Springmvc HelloWorld 执行流程:
1. 启动Tomcat服务器, 会加载DispatcherServlet, 然后就会读取springmvc.xml,进而创建好的Springmvc容器对象.
创建Springmvc容器对象: 组件扫描会 扫描到请求处理器, 以及请求处理中@RequestMapping注解,
能得到具体的请求与请求处理器 中方法的映射。

2. 客户端发送请求: http://localhost:8888/Springmvc01/hello
3. 请求到达web.xml中与<url-pattern>进行匹配, 匹配成功,就将请求交给DispatcherServlet
4. DispatcherServlet根据请求 与 请求处理方法的映射, 将请求交给具体的请求处理器中的请求处理方法来进行处理 
5. 请求处理方法处理完请求, 最终方法会返回一个字符串
6. 视图解析器根据请求处理方法返回的结果, prefix + returnValue + suffix, 解析生成具体的物理视图路径, 
       再通过转发的方式去往视图。  ·
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章