项目是尚硅谷b站视频的springmvc课程中的一个测试
视频的代码工具配置:
spring6、jdk7、mysql8、tomcat10
我的配置是:spring6、jdk7、mysql5、tomcat7
需求是:启动tomcat服务器,访问网页springmvc/hello返回hello springmvc!!字符串
刚开始一直这样报404错误:
回去检查了config和初始化配置文件,均没有错误
config配置代码:
package com.atguigu.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
/**
* 1.controller配置ioc容器
* 2.handlerMapping handlerAdapter加入到ioc容器
*/
@Configuration
@ComponentScan("com.atguigu.controller")
public class MvcConfig {
@Bean
public RequestMappingHandlerMapping handlerMapping(){
return new RequestMappingHandlerMapping();
}
@Bean
public RequestMappingHandlerAdapter handlerAdapter() {
return new RequestMappingHandlerAdapter();
}
}
init配置代码(springmvc的配置,抛却web.xml):
package com.atguigu.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
* 可以被web项目加载,会初始化ioc容器,会设置dispatcherServlet的地址
*/
public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
//设置项目对应的配置类
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MvcConfig.class };
}
//配置springmvc内部自带servlet的访问地址
@Override
protected String[] getServletMappings() {
return new String[]{ "/"};
}
}
后面突然想到会不会是tomcat版本的问题,因为担心改tomcat版本会影响MySQL数据库重装,,这里顺便复习了以下版本兼容的问题
MySQL版本跟jdk版本和connector版本必须兼容,不需要跟tomcat、spring版本兼容;
spring的版本对jdk版本有具体的要求,一般至少在jdk7,8及以上;
tomcat的版本向下兼容,但旧版本不具有新版本的功能。
对于刚开始学的读者,建议多看看配置,不然后期会很麻烦。
因为这里的练习使用了springmvc的内部自带的访问地址,我原本的tomcat7不支持该功能,所有报错404。
解决方案是:
edit configurations->添加Tomcat Server local->
在右侧区域,选择Application server->configure..选项
在出现的弹窗右侧tomcat Home处点击右侧的文件夹,选中你本地下载的tomcat文件目录,点击OK
最后点击Apply->OK,一定要先点Apply,不然可能配置失败。