springMVC能访问jsp文件但访问不了Controller
项目场景:
刚学习springMVC,之前干web时候搭建的环境就一直能用,新建列一个模块后练习,发现代码与老师敲的一模一样,但就是开启服务器后只能访问jsp,访问Controller一直报404
问题描述:
MVC简易搭建就四个地方,
一,maven中添加依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
二,web.xml中声明springDispatherServlet
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--自定义springMVC读取的配置文件所在位置-->
<init-param>
<!--指定springMVC文件的位置-->
<param-name>contextConfigLocation</param-name>
<!--指定自定义文件的位置-->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--表示Tomcat在启动后创建对象的顺序-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!--可以有两种值,
1,使用扩展名,,如*.do,*.mvc等:http://localhost:8080/mvc/some.do
2,使用 / -->
<url-pattern>/</url-pattern>
</servlet-mapping>
二,在controller目录下新建一个类,类上使用@Controller注解,类下面的方法即相当于servlet的doGet()方法,在方法上注解@RequestMapping或者@GetMapping都行,括号里的即为访问地址url,
@Controller
public class MyController {
@RequestMapping("/some.do")
public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
mv.addObject("name","张三");
mv.setViewName("/show.jsp");
return mv;
}
二,resource目录下的springmvc.xml文件中添加如下代码进行注解扫描
<context:component-scan base-package="amon.controller"/>
原因分析与解决:
对比代码后,该有的地方都有,并且Tomcat启动并没有问题,而maven项目的包又都成功导入并使用了因此只能是环境问题,我检查了jdk版本都没错,target目录下的文件也都在,Java Enterprise目录结构下也可以找到调度器生成的myweb目录,但就是访问不了,只可能是资源资源部署到服务器上时出问题了,于是在看列Aritifacts内,终于发现,是构建项目时lib目录没有生成,从而无法访问,于是新建一个lib目录,设置成目录文件就好了
总结,基础不牢,地动山摇,很多时候我们跌入过的坑,都是之前运气好没踩下的坑,坑只要不踏平,永远都在那里