1.说说jetty与tomcat的区别
- Jetty是一个轻量级的服务器,更小巧、快速。Tomcat服务器更适合于较大的工程
- Jetty的内置编码是UTF-8,Tomcat则是latin1。所以使用jetty不会产生乱码的问题
2.如何修改jetty默认端口?如何修改tomcat默认端口?
-
打开jetty的文件夹下的start.ini,找到如图的代码,修改即可
-
打开tomcat文件夹下的config文件夹,再打开conf中的service.xml文件,找到如下代码,修改即可
3.如何启动jetty服务器?
- 选择相应的工程后,就部署成功了
4、简述Servlet的生命周期
- 我们看到Servlet接口有如下几个方法,查询是否存在servlet,没有了就创建servlet对象,init()方法初始化,创建好之后会判断请求和回应方式是get还是post方法,然后通过service()方法去执行具体的动作,当请求结束之后,destroy()方法用于servlet的销毁
5.Servlet如何处理用户的请求?
- 通过servlet接口中的service()方法,然后根据不同的请求类型,调用相应的doxx()方法
6.说说get请求和post的请求的区别
- get请求会将用户在表单输入的信息展示在地址栏中,不安全,post不会
- get传送的数据比较小,通常不大于2kb,而post则没有限制
7.说说相对地址与绝对地址的区别
- 相对地址就是某个文件相对于另外一个大一层的文件的位置,使用起来比较好表示,但不是最准确的
- 绝对地址就是相对于整个盘符的位置,通过绝对地址一定能找到相应的文件,但是表示起来比较繁琐
8.说说请求重定向与请求转发的区别
- 重定向是使用sendRedirect()方法,重定向会发送两次请求,而我们知道servlet是多线程的,所以两次请求就会创建两个不同的request请求,这样之前保存的attribute信息就取不到了,那么地址栏的信息也会发生变化
- 请求转发是使用getRequsetDispatcher().forward()方法,他只发送一个请求,地址栏的信息不会发生变化
9.jsp有哪九大内置对象?servlet如何获取session和application对象?
- page、config、out、exception、pageContext页面上下文、session、application整个应用唯一、request、response
- servlet通过getsession()方法来获取session,application通过getServletContext()方法,通常将名字命名为servletContext
什么是单例?单例有哪些设计模式?
- 单例是指该类的对象只能创建一个,即该类会将构造方法私有,然后对外只提供一个返回对象的静态方法。有懒汉和饿汉模式
- 1、懒汉模式
public class Only {
public static Only only;
private Only() {
}
public static Only getInstance() {
if (only == null) {
only = new Only();
}
return only;
}
}
- 但是这样有个问题,在getInstance()中new only对象的时候,如果是多线程,如果线程1正在new还没有结束,此时线程2来了,他判断为null,那么也会new对象。所以为了安全,我们会加锁,但是加锁后要重复的判断是否为空,降低效率。
public class Only {
public static Only only;
private Only() {
}
public static Only getInstance() {
if (only == null) {
synchronized (Only.class){
if (only == null){
only = new Only();
}
}
}
return only;
}
}
- 2、饿汉模式
- 饿汉模式是将成员变量设置为final,构造方法私有
class Only2{
private static final Only2 only = new Only2();
private Only2(){
}
public static Only2 getInstance(){
return only;
}
}
- 可以看出,饿汉模式更简单、效率高、安全