-
报错java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
这类问题归结于下面:Intellij idea使用Maven搭建web项目启动报找不到类,而maven的pom.xml都已引用,问题就是在于没在WEB-INF下新建lib文件夹
解决办法:
在IDEA中点击File > Project Structure > Artifacts > 在右侧Output Layout右击项目名,选择Put into Output Root,执行后,在WEB-INF在增加了lib目录,里面是项目引用的jar包,点击OK。
重新启动tomcat就行了。 -
在web.xml中设置分发器
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
对于<url-pattern>/</url-pattern>
方式一:带后缀,比如*.action *.do .aaa
该种方式比较精确、方便,在以前和现在企业中都有很大的使用比例 方式二:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了 servlet和jsp之外的js、css、png等)
为什么配置为/ 会拦截静态资源???
因为tomcat容器中有一个web.xml(父),你的项目中也有一个web.xml(子),是一个继承关系
父web.xml中有一个DefaultServlet, url-pattern 是一个 /
此时我们自己的web.xml中也配置了一个 / ,覆写了父web.xml的配置
为什么不拦截.jsp呢?
因为父web.xml中有一个JspServlet,这个servlet拦截.jsp文件,而我们并没有覆写这个配置,
所以springmvc此时不拦截jsp,jsp的处理交给了tomcat
如何解决/拦截静态资源这件事? 方式三:/ 拦截所有,包括.jsp
这里的/必须为/ ,为/*会页面访问不了