看了回复后,大家最多想到的是路径写错了,没加项目名称,http://localhost:8089/项目名/user/login.do。关于这个问题,由于我在问题描述里没写清楚,结果让大伙走弯路了,我项目部署用的是虚拟路径,在/conf/Catalina/localhost/下,定义一个ROOT.xml配置文件,文件中路径配置为我的工程路径,如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" docBase="E:/code/spring/WebContent" reloadable="false" />
这样tomcat在启动的时候扫描/conf/Catalina/localhost/ROOT.xml文件,会把ROOT.xml文件里配置的工程加载到tomcat中(和把项目发布到tomcat/webapps下不同,配置虚拟路径后,tomcat/webapps/下没有该工程的任何信息),这样在地址栏里就看不到我的项目名称了,直接输入http://localhost:8089/login.jsp就可以访问login.jsp页面了,这样直接导致的结果就是访问不到/user/login.do,
后来Dead_knight 说,他把配置文件修改了下后,成功了,我按照Dead_knight的配置,重新修改了我的配置文件后还是不行,既然Dead_knight那边成功了,那就应该和代码,配置无关了,我把项目换了种发布方式后,这次请求成功了,仔细看了下Dead_knight的配置文件,就是在DefaultAnnotationHandlerMapping中多了order=0的属性。
我想,既然是由于虚拟路径引起的问题,会不会是由于哪里没配置的原因呢,看了jinnianshilongnian的博客后,参考着试着配置了一下,在原来配置的基础上,加入了<mvc:resources mapping="/**" location="/" order="1"/>,直接访问http://localhost:8089/user/login.do,报404,而在login.jsp中点提交,报405,后
台打印org.springframework.web.servlet.PageNotFoundhandleHttpRequestMethodNotSupported
警告: Request method 'POST' not supported
不知道会不会是<mvc:resources mapping="/**" location="/" order="1"/>没配对的原因?