最近学习一下springboot的相关知识,跟着视频构建第一个demo,但是运行起来,访问某个请求时,一直报异常:
大概的意思就是这个请求会被视图解析器解析到login页面。
pom.xml如下,springboot基础配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.jy.restart</groupId>
<artifactId>springboot1</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>springboot1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 配置spring boot所需的依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<dependencies>
<!-- spring boot的相关启动 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<!-- log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 使用Jasper引擎解析JSP -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!--jsp支持-->
<!-- servlet 依赖. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 没有该配置,devtools 不生效 -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
<finalName>springboot1</finalName>
</build>
</project>
然后controller层代码如下:
package cn.java.controller.front;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@EnableAutoConfiguration
public class LoginController {
@RequestMapping("/login")
public void login(String userName,String pwd) {
System.out.println(userName + "=" + pwd);
}
public static void main(String[] args) {
SpringApplication.run(LoginController.class, args);
}
}
上网搜了一下报错原因,很多都是说要引入依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
但是引入之后仍然报错,不起作用。
后面我对比了一下自己和视频中代码不一样的地方,就是@RequestMapping(“/login”)这里,视频中是@RequestMapping(“/login.do”)。我修改成视频中的时,再去浏览器访问,只输出结果,没有抛出异常。这是为什么呢?我的方法名字也是login。
在springboot中,如果你的url的匹配路径和方法名字相同,它会默认给你请求定位到请求路径名的页面,如果没有该页面,则抛出异常。
所以只需要@RequestMapping里面的路径和注解的方法名不一样就可以避免这个异常信息了。