SpringMVC 结合 Servlet 不成功问题集锦
问题集锦
question 1:Tomcat 10 版本太高
cause
.
主要就是说:Tomcat 10
之前的用户如果使用 Tomcat 10
就需要将 javax.*
的导入转变为 jakarta.*
。这样才能将代码在 Tomcat 10
中部署,还给你了一个迁移工具migration tool 来帮助你迁移代码。
resolve
换 Tomcat 9 版本及以下。
咱们主要来学习如何使用 Tomcat 来部署运行项目,如果自己还需手动迁移代码,那么花费的时间有点得不偿失了(大佬除外)。
question 2:idea 的 web 项目标志没有了蓝点.
cause
正确的 web 项目:.
错误的 web 项目:.
resolve
Project Structure
-> Artifacts
.
Project Structure
-> Modules
-> 选择自己具体的 Module -> 点击 +
号
.
注意一下,一般是没有什么问题。
.
别忘记了 Apply
!Apply
!Apply
!,别问为什么,因为我也忘了。
.
成功了!
.
question 3:路径映射不正确
cause
org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET /login
你确定你的环境配置没有问题,但是报 404 问题,这可能是一个解决方案!
resolve
SpringMVC---彻底解决/和/*的问题!到底该用哪一个?.
web.xml
<!--
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,
而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处。
DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
1、文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析;
2、通过 HandlerMapping,将请求映射到处理器(返回一个 HandlerExecutionChain,它包括一个处理器、多个 HandlerInterceptor 拦截器);
3、通过 HandlerAdapter 支持多种类型的处理器(HandlerExecutionChain 中的处理器);
4、通过 ViewResolver 解析逻辑视图名到具体视图实现;
5、本地化解析;
6、渲染具体的视图等;
7、如果执行过程中遇到异常将交给 HandlerExceptionResolver 来解析。
-->
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<!--
url-pattern 的值为 /
Spring 原话:Fortunately the default Servlet mapping "/" is a good choice.
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
原文就看懂了这一句话:
.
question 4:taglib 标签找不到
resolve
导入依赖
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
question 5:jdbcTemplate 数据库字段与 model 字段不一致
cause
数据库字段:
.
model 字段:
.
resolve
Using the JDBC Core Classes to Control Basic JDBC Processing and Error Handling.
package com.rnny.utils;
import com.rnny.model.User;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("name"));
user.setPassword(rs.getString("password"));
return user;
}
}
查询一个对象
public User selectByPrimaryKey(int id) {
User user;
String sql = "select * from user where id = ?;";
user = jdbcTemplate.queryForObject(sql, new UserRowMapper(), id);
return user;
}
查询多个对象
public List<User> getAll() {
List<User> userList = new ArrayList<>();
String sql = "select id, name, password from user;";
userList = jdbcTemplate.query(sql, new UserRowMapper());
return userList;
}