web项目异常总结(初学)

前言

这周的考核任务是写一个类似图片素材网的网站,说实话Servlet和会话都学的比较浅,写这个项目的时候异常也都是层出不穷,每个异常基本都耗费了几个小时去查找资料,去改。虽然很浪费时间,但也收获了不少的东西,写这篇博客记录一下我解决异常中学到的知识。

一、java.lang.ClassNotFoundException找不到类异常

在这里插入图片描述
这类异常一般是没有导入正确的jar包,解决此类异常分两步:
1、查看自己是否导入了正确的jar包
2、查看自己的导入jar包的lib目录是否放在了WEB-INF目录下
在这里插入图片描述
WEB-INF目录是一个静态资源库,客户端无法访问,但浏览器可以访问到的库。
而且如果lib没有正确放在WEB-INF目录下的话,代码底层new出service对象时会抛出一个初始化异常:ExceptionInInitializerError

二、Xx.class.getClassLoader().getResource()出现空指针异常

这个异常是调用数据库连接池时加载德鲁伊配置文件出的异常,原代码如下

package jdbcutils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtils {
    private static DataSource ds;
    static{
        Properties properties = new Properties();
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream(new File("druid.properties"));//出现异常
            properties.load(inputStream);
            ds = DruidDataSourceFactory.createDataSource(properties);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally{
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static DataSource getDs(){
        return ds;
    }
    public static Connection getConn() throws SQLException{
        return ds.getConnection();
    }
}

如果引用文件是null的话,会报出空指针异常,那么思路就是,要么我的druid.properties文件里是null,要么我就根本没找到druid.properties文件,前者显然是不对的,那么就只有后者这一种可能。

为什么我会找不到配置文件呢?先看看以下代码


import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils {
   public static void main(String[] args){
        //加载配置文件,初始化连接池
        Properties properties = new Properties();
        InputStream ips = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(ips);
        //初始化连接池对象
       DataSource ds = DruidDataSourceFactory.createDataSource(properties);
    }
}

以上代码在IDEA运行完全没有问题,但到了tomcat上就会爆出空指针异常,由此可知,tomcat加载资源的方式并不相同。于是我们去查找out目录(存放.class文件的目录),发现并没有找到druid.properties配置文件,所以我们需要将druid.properties配置文件加载到out目录中。方法就是将该文件放在resources目录下。
在这里插入图片描述
在这里插入图片描述

三、404找不到资源

出现这个异常的解决方法比前两个简单,步骤:
1、查看地址名,是否缺‘/’,是否写错,检查虚拟路径是否有问题
2、检查目标资源路径,如果放在web目录的子包下,要将包名加上
3、查看out目录中对应文件以及包名是否存在问题

我遇到的一个问题就是out目录下的servlet包有两个,系统自动将第二个改成了Servlet,导致我访问不到里面的资源,更改包名后恢复。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET Web API 2框架揭秘是一本针对ASP.NET Web API 2框架进行深入介绍的电子书。ASP.NET Web API 2是一个用于构建基于HTTP协议的Web服务的开发框架。这本电子书透过简单直接的方式,帮助读者更好地理解和应用该框架。 在这本电子书中,我们将介绍Web API 2框架的核心概念和基本的工作原理。读者将了解到Web API 2的基本架构和特性,以及如何通过配置和扩展来实现自定义需求。我们还会涉及到常见的Web API设计模式、RESTful架构以及数据传输和安全方面的问题。 通过这本电子书,读者将深入了解Web API 2框架的关键概念,如控制器、动作方法、路由、返回类型和过滤器等。我们会通过实际示例来说明如何创建和调用Web API,并介绍如何处理输入数据、输出结果和错误处理等方面的问题。 此外,这本电子书还将讨论Web API 2框架与其他ASP.NET技术如MVC框架的关系,以及如何在实际项目中使用一些常用的工具和库来提高开发效率和代码质量。 总结而言,ASP.NET Web API 2框架揭秘电子书是一本完整而全面的指南,旨在帮助开发者快速入门和深入理解Web API 2框架,从而能够更好地应用于开发符合现代Web标准的高性能、可扩展和安全的Web服务。无论是初学者还是有经验的开发者,都能从这本电子书中获得实用的知识和技巧。 ### 回答2: ASP.NET Web API 2框架揭秘电子书是一本详细介绍ASP.NET Web API 2框架的电子书。ASP.NET Web API 2 是一个用于构建Web API应用程序的框架,它可以让开发者轻松地构建Web服务,并将其与各种客户端应用程序(如Web、移动设备和桌面应用程序)进行交互。 这本电子书详细介绍了ASP.NET Web API 2框架的工作原理、核心组件、常见用法和最佳实践。它从请求的路由到返回的响应的整个过程进行了解剖,帮助读者理解框架的内部工作机制。 电子书中涵盖了许多重要的概念,如控制器、路由、模型绑定、过滤器等。它解释了如何创建和配置Web API控制器,并讨论了一些高级主题,如版本控制、身份验证和授权。 此外,电子书还介绍了如何使用ASP.NET Web API 2框架来处理不同类型的数据,如JSON、XML和表单数据。它还讨论了如何处理常见的错误和异常,并提供了一些建议和实践,以优化性能和安全性。 总的来说,ASP.NET Web API 2框架揭秘电子书是一本帮助开发者深入了解ASP.NET Web API 2框架的权威指南。它适用于那些有一定ASP.NET开发经验的开发者,并且可以帮助他们更好地利用ASP.NET Web API 2框架来构建高效、可扩展和安全的Web API应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值