问题描述:
springmvc+mybatis项目,tomcat插件成功启动后,访问报404的错误。
个人排查:
1.将其独立部署到tomcat服务器而不用tomcat插件可以成功启动并访问。
2.tomcat插件启动成功后,target下的classes目录下面没有配置文件,但是有class文件。buildpath中已经配置输出文件夹为target/classes,仍然无效。
tomcat插件配置:
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<update>true</update> <!-- 热部署 -->
<charset>utf-8</charset> <!-- 设置字符集 -->
<uriEncoding>UTF-8</uriEncoding><!-- 设置uri编码 -->
<port>8080</port> <!-- 设置端口 -->
<path>/</path><!-- 设置默认访问应用的路径 -->
</configuration>
</plugin>
</plugins>
前端控制器配置:
<!-- 前端控制器 -->
<!-- The front controller of this Spring Web application, responsible for
handling all application requests -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:springmvc/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
controller:
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/")
public String hello() {
return "index";
}
@RequestMapping("/user")
@ResponseBody
public List<User> getUserList() {
List<User> list = userService.getUserList();
return list;
}
}
访问url:localhost:8080,正常应该跳转到index.jsp界面,实际输出:No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'springDispatcherServlet'
。
端口号后面加上项目名称试试
第一即使让dispatcherServlet的拦截加上后缀如:*.do;
这样以jsp后缀的就不会别拦截了。
第二个方法是在spring-servlet.xml中加入:
Tomcat端口改成8090
有报错吗?把运行结果贴一下
还有是否配置了扫描 controller
启动后,target目录下的classes下没有配置文件,只有.class文件。
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--spingMVC的配置路径 -->
<param-value>classpath:springmvc/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截设置 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在上面还可以加上这个
<!-- 起始欢迎界面 -->
<welcome-file-list>
<welcome-file>/view/index.jsp</welcome-file>
</welcome-file-list>
如果你出现tomcat可以独立启动,也可以访问,但是部署在eclipse无法访问的话:
双击tomcat,Server Locations选择第一个,如果是灰色的话右击删除tomcat,再重新添加tomcat就可以选择了
pom.xml里面加上这段试试
<build>
<finalName>common-info</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
找到原因了,把pom文件中的
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
```
删掉,url便可以映射到controller方法了,但是又出现了一个新的问题,调用业务层和dao层报错`org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wisdom.dao.UserMapper.selectByExample`,求问广大猿友如何解决?!