精华内容
下载资源
问答
  • tomcat启动SpringMVC本质是Springmvc框架遵守了Servlet规范,去代码根目录找一个文件,然后根据文件里的内容,找到一个类,再运行这个类的一个叫onStartup方法,然后代码就开始一层一层的开始往下运行了。...

    tomcat启动SpringMVC本质是Springmvc框架遵守了Servlet规范,去代码根目录找一个文件,然后根据文件里的内容,找到一个类,再运行这个类的一个叫onStartup方法,然后代码就开始一层一层的开始往下运行了。
    idea 配置可参考https://blog.csdn.net/weixin_40364421/article/details/89432916
    1. web.xml配置
    在severlet3.0之前,severlet必须从/WEB-INF/web.xml中读取相应启动方式代码,完成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_3_1.xsd"
             version="3.1">
      <display-name>Archetype Created Web Application</display-name>
        <!--welcome pages-->
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    
        <!--配置springmvc DispatcherServlet-->
        <servlet>
            <servlet-name>springMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <!--配置dispatcher.xml作为mvc的配置文件,让其加载bean,即Spring应用上下文-->
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>
        <!--将DispatcherServlet映射到"/"-->
        <servlet-mapping>
            <servlet-name>springMVC</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!--把applicationContext.xml加入到配置文件中-->
        <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>
    </web-app>
    

    这里的配置主要是配置两个应用上下文,分别是
    (1)DispatcherServlet(dispatcher-servlet.xml)启动的时候,它会创建Spring应用上下文,并加载配置文件或配置 类中所声明的bean,其包含Web组件的bean,如控制器、视图解析器以及处理 器映射。
    (2)ContextLoaderListener(applicationContext.xml)要加载应用中的其他bean。这些bean通常是驱动应 用后端的中间层和数据层组件。

    dispatcher-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:mvc="http://www.springframework.org/schema/mvc"
           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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--此文件负责整个mvc中的配置-->
    
        <!--启用spring的一些annotation -->
        <context:annotation-config/>
    
        <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
        <mvc:annotation-driven/>
    
        <!--静态资源映射-->
        <!--本项目把静态资源放在了webapp的statics目录下,资源映射如下-->
        <mvc:resources mapping="/css/**" location="/static/css/"/>
        <mvc:resources mapping="/js/**" location="/static/js/"/>
        <mvc:resources mapping="/image/**" location="/static/images/"/>
        <mvc:default-servlet-handler />  <!--要求DispatcherServlet将对静态资源 的请求转发到Servlet容器中默认的Servlet上,而不是使用DispatcherServlet本身来处理此类请求-->
    
        <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
        <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
        <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置-->
            <property name="suffix" value=".jsp"/>
            <property name="exposeContextBeansAsAttributes" value="true"/>
        </bean>
    
        <!-- 自动扫描装配 -->
        <context:component-scan base-package="com.my"/>
    
    </beans>
    

    applicationContext.xml的配置如下,配置applicationContext.xml,负责一些非MVC组件的配置,暂时没有所以是空的,但也可以扫描一下

    <?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 http://www.springframework.org/schema/context/spring-context.xsd">
    
        <context:component-scan base-package="com.my"/>
    </beans>
    
    

    2. javaConfig配置
    在Servlet 3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果能发现的 话,就会用它来配置Servlet容器。
    Spring提供了这个接口的实现,名为SpringServletContainerInitializer,这个类 反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完 成。Spring 3.2引入了一个便利的WebApplicationInitializer基础实现,也就是AbstractAnnotationConfigDispatcherServletInitializer。因此当部署到Servlet 3.0容器中的时候,容器会自动发现它,并用它来配置Servlet上下文。

    package spittr.config;
    
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    
    import spittr.web.WebConfig;
    
    public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
      
      @Override
      protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { RootConfig.class }; //ContextLoaderListener上下文
      }
    
      @Override
      protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebConfig.class };//DispatcherServlet上下文
      }
    
      @Override
      protected String[] getServletMappings() {//初始化路径
        return new String[] { "/" };
      }
    
    }
    

    RootConfig配置

    package spittr.config;
    
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    
    import spittr.web.WebConfig;
    
    public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
      
      @Override
      protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { RootConfig.class };
      }
    
      @Override
      protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebConfig.class };
      }
    
      @Override
      protected String[] getServletMappings() {
        return new String[] { "/" };
      }
    
    }
    

    WebConfig配置

    package spittr.web;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    
    @Configuration
    @EnableWebMvc
    @ComponentScan("spittr.web")
    public class WebConfig extends WebMvcConfigurerAdapter {
    
      @Bean
      public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
      }
      
      @Override
      public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
      }
      
      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // TODO Auto-generated method stub
        super.addResourceHandlers(registry);
      }
    
    }
    
    
    展开全文
  • DispatcherServlet的作用:使用springMVC时,java和前端对接的是Controller,而tomcat并不识别Controller,无法和前端沟通,所以需要一个中介。tomcat是支持访问servlet的,所以中介就是DispatcherServlet。由于...

    启动tomcat
    当tomcat启动之后,tomcat会自动读取web.xml配置文件(约定)。首先读取DispatcherServlet,还有其他配置文件的路径。

    DispatcherServlet的作用:使用springMVC时,java和前端对接的是Controller,而tomcat并不识别Controller,无法和前端沟通,所以需要一个中介。tomcat是支持访问servlet的,所以中介就是DispatcherServlet。由于dispatcherServlet和controller都是第三方开发人员编写的,所以dispatcherServlet里的doGet和doPost里写上controller的相关java代码。在web.xml里配置,目的是把所以请求打到dispatcherServlet上。交给servlet负责分发。

    读取其他配置文件目的:是把其他配置文件合到web.xml里来。读取配置文件的方式是java的DOM方法。在配置文件中有些是javaEE自带的,有些是第三方标签。自带的标签tomcat可以直接识别,而第三方的标签是用spring的jar包去识别。配置文件里有spring的j启动类的包路径。当tomcat读到包路径的时候,包的路径是按约定在web.xml中注册的。tomcat在启动过程中,会用DOM操作读取这些标签,看有哪些路径。按约定,凡是在这个标签里的路径都会提取出来进行反射。反射拿到类信息之后再通过newInstance拿到类实例。再通过代理的方式对他们进行执行。执行主方法引起一连串的执行。

    在springMVC的启动类中会读取web.xml文件,用DOM操作读取自定义标签。其中自定义标签里有controller的扫描范围。当读取扫描范围之后,springMVC去包下面扫描所有文件。把.class文件全挑出来,根据路径进行反射。获取每个类的class类信息,挑选出带有controller注解的类的类信息。再把类里带有requestMapping注解的方法挑出来,把类上的requestMapping注解的value值和方法上requestMapping注解的value值拼成一个url,通过newInstance获取类实例,同时也获取方法实例,然后以url为key,以方法实例做value存入hashmap。

    请求流程:

    tomcat接收到请求后,没办法把请求塞给controller的,所以会把请求发给Dispatcherservlet(参照tomcat原理),接收的还是httprequest。dispatcherServlet会从请求中提取url,根据提取的url去hashmap中进行匹配,匹配成功,拿出实例,进行代理去执行相应的Method方法。

    controller方法的入参可以是对象类型,(httprequest参数如何转化成对象?)借助的是java反射。将参数对象进行反射,跟请求参数进行匹配,key一样就把请求参数value赋值给对象的域的值。

    展开全文
  • https://blog.csdn.net/SELECT_BIN/article/details/84982243

    https://blog.csdn.net/SELECT_BIN/article/details/84982243

    展开全文
  • Tomcat+Springmvc中文乱码问题解决方法

    千次阅读 2017-05-18 16:21:11
    请求时参数变乱码在web.xml中设置springmvc编码<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> ...
  • 等下载好tomcat,进行启动的时候。意外的报了标题中的错误。根据报错信息,应该是权限的问题。网上查阅了资料,进行重新赋权以后就可以了,在此记录一下。 解决方案 打开Terminal,找到catalina.sh所在的文件夹下; ...
  • 由于重装电脑,重新配置IDEA开发环境的时候遇到一个很奇怪的问题。 在我新建一个最简单的SpringMVC项目并按网上的文章配置后(参考...为了确认问题所在, 我打包成war文件, 手动放置在tomcat的...
  • 一. 如果连index.jsp初始化页面都报错,那么就需要看看web文件夹是否是被标记有一个蓝点 如果没有, 1. 2. 导入成功 二.WEB-INF下需要有jar包 ...在WEB-INF下添加lib包然后导入jar包 ...三....四.......
  • springmvc启动方式不太一样。弄明白了以后发现自己以前也捣鼓过。 以前做对日的时候,研究过在eclipse里面用jboss启动项目,是先创建服务,然后在服务上跑工程。 第一步,安装maven 官网地址:...
  • 一:tomcat 读取web.xml 文件中 spring 相关组件 首先读取的监听器 org.springframework.web.context.ContextLoaderListener 然后调用contextInitialized 方法 xml文件如下: <!-- spring 装载xml文件-...
  • 主要介绍了Java +Tomcat + SpringMVC实现页面访问示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 编程环境为IDEA,jdk版本1.8;使用springmvc+tomcat来实现一个网页,算是web开发的基础操作,对于初学者应该有帮助,代码的作用我都注释了。后期使用起来方便拓展。
  • 今天用spring5.0做了一个工程,tomcat一直启动报错,后来去官网查了下。原来5.0只支持jdk8+,我本地是jdk7,所以出现版本不匹配。严重: A child container failed during start java.util.concurrent....
  • 今天在配置SpringMVC时,不知道是何原因Tomcat无法启动了,而删除SpringMVC项目后,tomcat又正常了,但一直提示信息: No Spring WebApplicationInitializer types detected on classpath。 目前还不知打哦是什么...
  • 背景:springmvc工程,项目在tomcat8 下启动log打印的中文乱码,但是自己写main方法测试Systemout 中文不是乱码 我相信大家都在博客其他地方按照 https://blog.csdn.net/alvin_1992/article/details/79892919,...
  • Tomcat部署SpringMvc项目出现无法访问静态资源的问题结构图: 最近在做一个web项目,在本地部署Tomcat服务器的时候可以访问静态资源,但是在服务器端却没有办法访问静态资源,网上找了很多博客,都不适用于我的情况...
  • 一、 安装tomcat—配置 Tomcat官网 1. 在eclipse中配置tomcat 1.1 打开eclipse ,单击window——》Perference 1.2 找到Server–》Runtime Environment --》Add 1.3 我这里是 Apache Tomcat v9.0 找到自己的安装...
  • 初学springmvc 自己练习一下最简单的实力 但是报错 下面是错误代码 type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request....
  • tomcat部署springmvc war包

    2020-11-20 01:43:35
    spring mvc 5.2.7.RELEASE Tomcat 8.5.57 打成war包直接放到tomcat/webapps下,启动, 访问: localhost:8080/war包名字/URI
  • SpringMVCtomcat中的执行原理和过程

    千次阅读 2017-10-18 11:15:46
    一、WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象(每...服务器软件或容器如(tomcat)加载项目中的web.xml文件,通过其中的各种配置来启动项目,只有其中配置的各项均无误时,项目才能
  • tomcat:apache-tomcat-8.5.43-windows-x64 下载地址: http://tomcat.apache.org/ SpringMvc:spring-framework-5.1.3.RELEASE 下载地址: https://repo.spring.io/release/org/springframework/spring/ 二...
  • 零xml配置 & 内置tomcat 启动spring mvc build.gradle添加依赖 compile group : 'org.springframework' , name : 'spring-webmvc' , version : '5.1.12.RELEASE' // 内置tomcat需要 compile group...
  • springMVC启动tomcat后,不显示页面

    千次阅读 2019-04-27 15:02:46
    springMVC启动tomcat后,不显示页面 第一种:不显示小猫 当你用eclipse启动tomcat之后,作如下操作。 【问题】在浏览器中输入http://localhost:8080,不显示如下界面。 【解决方法】 将tomcat作如下设置,如果你...
  • 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 SpringBoot核心原理 基于SpringMVC无配置文件(纯Java)完全注解化+内置tomcat-embed-core实现SpringBoot框架,Main函数启动。 SpringBoot核心快速整合第三...
  • IDEA SpringMVC Tomcat连接成功 代码没问题 页面跳转报404 1.保证项目中web文件夹正常 如果web包图标上没有蓝点得设置一下 2.确认web项目中导入了依赖,否则新建一个lib包导入所有依赖 3.建立连接 4.最后运行就没...
  • 写在前面: ...第一节 IDEA 使用tomcat部署maven版本的spring+springmvc项目 1.工具介绍 对于tomcat先将其简单的理解成能将war包解析,并运行其中java web项目代码的容器。 对于maven,则是一...
  • 2018-07-18 14:38:29window7下Java环境安装记录:一、安装Tomcat1、下载tomcat 7.0,解压,无需安装,放置到目录:D:\apache-tomcat-7.0.90。2、配置系统环境变量,CATALINA_BASE=D:\apache-tomcat-7.0.90,CATALINA...
  • springmvc 中遇到一个问题,代码都没有错误,但是发布上去之后就是无法访问,404,发现是WEB-INF下没有lib,点击artifacts,之后添加就好了。
  • springmvc项目启动时报错。   [INFO] Running war on http://localhost:8080/springmvc-test-3 [INFO] Using existing Tomcat server configuration at D:\workPath\IdeaProjects\springmvc-test-3\target\tomcat...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,656
精华内容 30,262
关键字:

tomcat如何启动springmvc

spring 订阅