spring报错笔记

1.通配符很全面,但无法找到元素***

解决:beans里面导包导错了

2.org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'bookId' in 'class com.aotao.pojo.Books'     在Books中没有找到bookId;

解决:

1.Books类中创建的属性

private int bookID;
private String bookName;
private int bookCounts;
private String detail;

2.BookMapper接口的内容

发现圈红的地方与Books类中的bookID不一致所以报错

 

3.org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.aotao.dao.BookMapper.deleteBookById

很奇葩的错误方法和前面更新一样完全看不出哪里有错误

解决:

既然是没找到方法那可能是某处的方法名称没写对

如下图这里的deleteBookId应该改成deleteBookById要和BookMapper里面的方法名一致

 

 

4.使用@RestController后返回的值找不到页面

代码如下:

@RestController
public class AjaxController {
     @RequestMapping("/hello")
     public String sayHello(){
          return "hello";
     }
}

 原因:

在web.xml文件中没有加:

<servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc-servlet.xml</param-value>
            </init-param>

            <!--启动级别1-->
            <load-on-startup>1</load-on-startup>
        </servlet>

        <!--/ 匹配所有的请求:(不包括.jsp)-->
        <!--/* 匹配所有的请求:(包括.jsp)-->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

5.Could not autowire. No beans of 'ArticleService' type found.

注释没写清楚可以看:https://blog.csdn.net/mengltx/article/details/79833322

 

6.Springboot 使用getRequestDispatcher一直循环报错 

拦截器:

public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //登陆成功之后,应该有用户的session
        System.out.println("开始拦截");
        Object username = request.getSession().getAttribute("username");
        if (username == null){
            request.setAttribute("msg","没有权限,请先登陆");
            request.getRequestDispatcher("/admin/login.html").forward(request,response);
            return false;
        }else {
            return true;
        }
    }
}

MvcConfig类

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
   
    //添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册TestInterceptor拦截器
        System.out.println("是否注册");
        InterceptorRegistration registration = registry.addInterceptor(new LoginHandlerInterceptor());
        registration.addPathPatterns("/**");                      //所有路径都被拦截
        registration.excludePathPatterns(
                "/**/*.html",
                "/**/*.js",
                "/**/*.css",
                "/**/*.woff",
                "/**/*.ttf"
        );
    }
}

 

 

问题解析:https://blog.csdn.net/A_bad_horse/article/details/105300073

原因:

1. 首次登录会进入:http://localhost:8080/admin/toLlogin页面

2. 接下来拦截器会拦截/admin/toLogin页面判断是否有session

3. 因为没有设置/admin/下面的登陆页面不拦截所以一直重复1-2-1死循环

解决:把/admin/下的index.html不拦截如果没有session的情况下跳转到/admin/index 页面

再把视图控制器加上

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("/");
        registry.addViewController("/admin/index.html").setViewName("/admin/index");
        registry.addViewController("/admin/login.html").setViewName("/admin/login");
    }

    //添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册TestInterceptor拦截器
        System.out.println("是否注册");
        InterceptorRegistration registration = registry.addInterceptor(new LoginHandlerInterceptor());
        registration.addPathPatterns("/**");                      //所有路径都被拦截
        registration.excludePathPatterns(
                "/admin/index.html", // 排除system路径下所有文件
                "/images/**",
                "/**/*.html",
                "/**/*.js",
                "/**/*.css",
                "/**/*.woff",
                "/**/*.ttf"
        );
    }
}

 

7.springboot 整合mybatis时insert语句报错找不到类Mapper method 'com.aotao.springboot.mapper.ArticleMapper.insertArticle' has an unsupported return type: class com.aotao.springboot.domain.Article

aritcle:

package com.aotao.springboot.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Article {
    private int articleID;
    private String articleTitle;
    private String content;
    private String flag;
    private String description;
    private String imgUrl;
    private String createTime;
    private String updateTime;
    private int typeID;

   
}

 

insert:

<insert id="insertArticle" parameterType="Article">
        insert into article (articleTitle,content,flag,description,imgUrl,createTime,updateTime,typeID)
        values (#{articleTitle},#{content},#{flag},#{description},#{imgUrl},#{createTime},#{updateTime},#{typeID});
    </insert>

分析:

报错内容说的是insertArticle 方法返回了不支持的类型

public Article insertArticle(Article article);

返回类型为Article,我发现添加文章操作应该返回的是添加成功了几条而不是一个类型。

所以把返回类型改为int就行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值