JAVA学习总结(二)

关于面向对象中的异常处理、XML文档、Servlet使用

异常处理

我们在写程序的时候难免会出现各种错误,其中有些是我们可以预见的,有些确实我们无法预见的,而不同的异常情况处理方式也有所不同,这里我要说的就是利用Exception来处理一些我们在写程序时可以处理的异常。
我们可以了解到常见的异常原因有:

  • 用户的非法输入
  • 请求的流不存在
  • 内存溢出等

相应的就会产生一些:

  • 检查时异常
  • 运行时异常
  • 错误

我们就会使用Exception类、trycatchfinallythrowthrows来处理这些异常。
在JAVA中有一些内置的异常处理方法,比如IOExceptionClassNotFoundException等,我们只需要在合适的时候调用它们,至于具体都有哪些,我们可以在需要的时候查阅。当然,我们也可以通过继承Exception类来实现你想要的异常处理。

所有的异常类是从 java.lang.Exception 类继承的子类。
Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。
Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
Error 用来指示运行时环境发生的错误。

另外,在敲代码的时候,我们要注意几点:

  1. throw和throws的区别。throw写在方法里,后面跟的是一个实例化的对象,throws写在类名后面,后面跟的是异常的类型(可以写多个,中间用逗号隔开);
  2. try和catch配对。一个try至少要有一个catch和它对应或者有一个finally,一个try可以有多个catch;
  3. finally。finally是异常处理的最终措施,无论是否发生异常,finally 代码块中的代码总会被执行。它推荐写,但也可以不写。
  4. catch的顺序。当有多个catch时,catch的顺序为从小到大,即第一个catch的异常可以继承自下一个异常或是和下一个异常平级,但不能是第二个异常继承自第一个异常,这样就没有意义了。

下面是个伪代码

//try、catch和finally
try{
   // do something
}
catch(异常类型1 异常的变量名1){
  // do something
}
catch(异常类型2 异常的变量名2){
  // do something
}
finally{
  // do something
}

//throw和throws
public static void main(String[] args) throws IOException,
                              InsufficientFundsException
   {
       // Method implementation
       throw new Exception();
   }

XML文档

XML,可扩展标记语言,和JSON一样被设计来传输和存储数据。而要写一个XML文档,就要有一个文档头(必须在开头):

<?xml version="1.0" encoding="UTF-8"?>

在写注释时,XML使用的是<!-- -->而不是//,这种注释方式支持换行但是不支持嵌套。
XML有其自身许多属性和元素,我们在与JAVA搭配使用的时候就涉及到这么几个点:

  • schema——说明本文档有schema约束条件
  • xmlns——就是XML的命名空间,去你后面指定的URL找需要的东西
  • xmlns:xsi ——指定schemaLocation来自哪个命名空间
  • xsi:schmeLocation——指定该名称空间下的哪个xsd文件

这是写在一个XML文档开始的部分,后面就看你发挥了,是要写个Servlet还是写个Filter。
我还想说的是转义的问题。和其他语言使用“\”不同,这里使用的是&amp;+你要转义的字符,例如:

jdbc:mysql://localhost:3306/test?useSSL=true&amp;&serverTimezone=Hongkong

关于XML的解析,由于目前使用较少,了解仅限以下内容:

解析的两种方式
DOM:树形结构解析,在加载整个文档之后进行解析
SAX:按行读取,读一行解析一行

基于两种方式的三种具体实现
JAXP: 基于DOM,是w3c推出
DOM4J:基于DOM,是第三方开源的
SAX:基于SAX,是来源于一个开源社区

而这些解析方式都有各自的处理过程和优缺点,大家可以自行了解。
再给个开头样例:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
        
         <!--
  		servlet或是Filter等
  		 -->
  		 
</web-app>

Servlet

在我看来,servlet是sun公司搞出来的一套在服务端和客户端之间的一个交互的工具,运用这个工具,我们可以更便利的实现我们的需求,他可以处理异常,提交表单、访问数据库等等,我们要做的就是去使用它。那么我们要怎么使用它呢?
首先,我们要添加它所依赖的jar包,这个包一般在你下的Tomcat的lib文件夹里都会有。
在这里插入图片描述
然后给它配置一个文件web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>demo.serverlet.controller.HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
</web-app>

其中有几个关键词

  • servlet——在这里写servlet的声明
  • servlet-name——servlet的声明
  • servlet-class——所声明的servlet在哪个方法里实现
  • servlet-mapping——servlet的映射,其中的servlet-name要和上面servlet匹配
  • url-pattern——映射到的路径,用以网络访问时具体的路径

在一个servlet里可以声明多个具体的内容,每一个声明都要有一个映射与之对应;url-pattern要区分大小写,当然url-pattern里也可以写*.do或者绝对路径。
接下来就是具体实现servlet,其中主要包括以下几个部分:

  1. 继承HttpServlet。我们通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求;
  2. init()。执行必需的初始化;
  3. service()。实际做的内容,可以是post或get,也采用继承;
  4. destory()。清场,这里servlet 被销毁,但是并没有立即被回收,再次请求时,并没有重新初始化,还是需要JAVA自己的垃圾回收器。

下面给个例子:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
 
  private String message;

  public void init() throws ServletException
  {
      // 初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
     System.out.println("destory");
  }
}

启动tomcat,访问localhost:8080/hello就会显示出下面的结果
在这里插入图片描述

当然,异常处理、XML和servlet不仅仅是这一点内容,还有更多的内容等着我们慢慢积累。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值