1.HTTP请求的GET 与POST方式的区别
GET请求表示从指定的资源请求数据,POST请求表示向指定的资源提交要被处理的数据。GET把参数包含到url发送到服务器,请求长度有限制,可以被缓存,不安全;post信息独立存在,与http一起发送到服务器,不会缓存,安全性高,刷新后数据会重新发送
2.什么是servlet
servlet是一种服务器端的java应用程序,具有独立于平台和协议的特性,可以生成Web页面,他担当客户请求和服务器相应的中间层,继承于HttpServlet;servlet有良好的生存期的定义,包括加载,实例化,初始化,处理请求,以及销毁。这个生存期由javax.servlet.Servlet接口的init,service,和destroy方法表达;Web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do()方法。结束服务web容器调用servlet的destory()方法。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行service方法,service方法自动派遣运行与请求对应的do(GET/POST)等,当服务器决定将实例销毁时调用destory方法。
servlet基本架构
public class ServletName extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{}
}
3.throws,throw,try,catch,finally分别代表什么含义?在try块可以抛出异常吗?
throws在方法名的后面,将异常声明但是不处理,将异常向上抛,谁调用谁处理,使调用者知道要捕获这个异常
方法名 (参数)throws 异常1,异常2{}
throw在方法体内,明确的标出在哪抛出异常,由方法体内中的语句进行处理
try存放可能会出现的异常,也可以通过throw抛出异常
catcht捕捉try抛出的异常
finally一定会执行的代码
4.常见的运行时异常:空指针异常(NullPointerException),数组越界异常(ArrayIndexOutOfBundsException),类转换异常(ClassCastException)
5.sleep()和wait()方法的区别?
sleep是Thread类的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持;wait()是Object类的方法,此线程进入等待状态,并且解除此对象的luck,只有针对此对象发出notify方法,这个对象才有竞争运行状态的机会
6.同步与异步的区别是:同步:发送请求,等待返回的信息后才能发送下一个请求;异常:发送请求,不用等待返回的信息。随时可以发送下一个请求。做事情都会有一个流水线,两者的区别在于执行顺序的先后;
同步举例:电话,发起者要等待接收者接听后,才开始通信,需要等待返回的信息
异步举例:比如广播,发起者不用担心接收者的状态,不用等待返回的信息
7.常用的类:Class\String \Integer\StringBuffer\StringBuilder\List
常用的包:java.lang,java.util,java.sql,java.io,javac.servlet
常用的接口:HttpServletResponse,HttpServletRequest,List,Map,Document
8.数据库的三范式:
第一范式:数据表中的每一个字段都是不可再分的最小字段
例如: userInfo: '山东省烟台市 1318162008' 依照第一范式必须拆分成
userInfo: '山东省烟台市' userTel: '1318162008'两个字段
第二范式:在满足第一范式的基础上,数据表中的每一列都必须完全依赖于主键,不存在部分依赖主键或者于主键无关的列
例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单ID相关。
产品表只能描述产品相关的信息,所以所有的字段都必须与产品ID相关。
因此在同一张表中不能同时出现订单信息与产品信息。
第三范式:在满足第二范式的基础上,数据表中的每一列必须与主键相关联,而不是间接关联,可以分出多张表
订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户ID即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户ID,而不是关联 于订单ID。
9.连接mysql数据库
public class Jdbctest{
public static void main(String[]args){
//加载数据库驱动
Class.forname(driverManagerName);
//建立连接
Connection cn=DriverManager.getConnection(url,username,password);
//创建发送端
PreparedStatement pst=cn.prepareStatement("INSERT INTO staff(name, age) VALUES (?, ?)“)
//执行sql语句
pst.setString(1,name);
//返回结果
Resultset rs=pst.executeQuery();
//关闭流
try{
if(rs!=null)
rs.close();
}catch(Exception e){
e.printStackTrace();
}}}}