zoukankan      html  css  js  c++  java
  • Java——Spring MVC环境配置

    1.Maven依赖spring-webmvc

    <?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.ikidana</groupId>
        <artifactId>firstspringmvc</artifactId>
        <version>1.0-SNAPSHOT</version>
        <repositories>
            <repository>
                <!--创建私服的地址-->
                <id>aliyun</id>
                <name>aliyun</name>
                <url>https://maven.aliyun.com/repository/public</url>
            </repository>
        </repositories>
        <dependencies>
            <!--引入这个包就会自动的引入spring其他依赖包-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
        </dependencies>
    </project>

    2.web.xml配置DispatchServlet

    <?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_3_1.xsd"
             version="3.1">
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <!--
                DispatcherServlet是SPring MVC最核心的对象
                DispatcherServlet用于拦截Http请求
                并根据请求的URL调用与之对应的Controller方法,来完成Http请求处理,本质就是解析器
            -->
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--配置spring核心配置文件的位置,告诉Spring IOC容器加载那个配置文件-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
            
            <!--
                启动时加载
                在Web应用启动时自动创建Spring IOC容器
                并初始化DispathcherServlet
            -->
            <!--
                如果没有配置load-on-startup配置,
                会在系统第一次访问URL的时候创建IOC容器和初始化DispathcherServlet
                为了提高程序的响应速度,一般都会将其配置
            -->
            <load-on-startup>0</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <!--/代表拦截所有请求-->
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

    3.配置applicationContext的mvc标记

    <?xml version="1.0" encoding="UTF-8"?>
    <!--xmlns:mvc spring命名空间下的核心标签-->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mv="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
                http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/mvc
                http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        <!--
            context:component-scan标签的作用:
            在Spring IOC初始化过程中,自动创建并管理com.ikidana.springmvc及子包中拥有下面注解的对象:
            @Repository:dao文件中,与数据直接交互的类
            @Service:业务逻辑类
            @Controller:描述Spring mvc的控制器类
            @Component:不知道是那种类的时候
        -->
        <context:component-scan base-package="com.ikidana.springmvc"></context:component-scan>
    
        <!--启用Spring MVC的注解开发模式-->
        <mvc:annotation-driven/>
    
        <!--将图片/JS/CSS等静态资源排除在外,可提高执行效率-->
        <mvc:default-servlet-handler/>
    </beans>

    4.开发Controller控制器

    //由于在context:component-scan规定的目录下,同时又拥有Controller注解
    //所以在IOC容器初始化的时候,会自动将TestController初始化并管理起来。
    //由于存在@Controller注解,所以spring知道这是一个spring MVC的控制器。这个类的作用是处理HTTP请求,并返回响应。
    @Controller
    public class TestController {
        @GetMapping("/test")  //将当前的方法绑定某个get方式请求的url
        @ResponseBody  //直接向响应输出字符串数据,不进行任何页面跳转
        public String test(){
            return "Test";
        }
    }

    在运行之前,需要将Maven依赖添加到发布的目录:

     

     之后就可以通过浏览器进行访问了:

    5.Spring MVC处理示意图

    客户端浏览器向Tomcat服务器发送一个HTTP请求,
    在这个HTTP请求中包含了servlet映射地址,以及要传递的参数。
    Tomcat会解析每一个应用程序的web.xml文件,找到与之匹配的URL。
    同时找到与之对应的servlet-name,根据servlet-name找到对应的servlet,对这个servlet进行实例化和初始化。
    Tomcat会执行servlet的service()方法,执行其中的服务代码。
    然后将结果响应给浏览器。浏览器收到代码之后进行解析。

    servlet是什么时候进行实例化?
    servlet并不是在tomcat应用程序启动的时候实例化的。
    servlet默认情况下是第一次访问的时候实例化的,
    也可以通过web.xml配置load-on-startup,使其在服务器启动的时候实例化。
    servlet全局有且只有一个对象。

    并发环境如何处理,基于单例多线程提供web服务。
    多线程就需要注意线程安全,因为所有线程都共享了一个servlet实例。
    所以在使用servlet的时候,不允许在servlet内创建存在状态的变量或者对象,
    否则在并发访问时可能产生无法预期的结果。

  • 相关阅读:
    第一阶段——站立会议总结DAY10
    第十二周学习进度条
    第一阶段——站立会议总结DAY09
    第一阶段——站立会议总结DAY08
    人机交互设计课下作业
    第一阶段——站立会议总结DAY07
    第一阶段——站立会议总结DAY06
    第一阶段——站立会议总结DAY05
    个人总结
    第二个冲刺期的第十天
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12521295.html
Copyright © 2011-2022 走看看