Javaweb的几个小问题(一)

1.说说jetty与tomcat的区别。

相同点:
Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。

不同点:
1、架构比较
Jetty的架构比Tomcat的更为简单
Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。
Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。
2、性能比较
Jetty和Tomcat性能方面差异不大
Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。
Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。
Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高,少数非常繁忙;Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。 Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。
3、其它比较
Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来

2.如何修改jetty默认端口?如何修改tomcat默认端口?

jetty在此处修改默认端口

Javaweb的几个小问题(一)_第1张图片

Tomcat在此处修改
Javaweb的几个小问题(一)_第2张图片

3.如何启动jetty服务器?
先cmd–>切换盘符 -->cd 文件夹
然后输入java -jar start.jar 命令
Javaweb的几个小问题(一)_第3张图片
4.简述Servlet的生命周期。

servlet的生命周期分为四个阶段:1:实例化 2:初始化 3:处理请求服务 4:对象销毁
1.如果是第一次请求。
—>doGet
构造方法–>init–>service —>destroy
—>doPost
2.如果不是第一次请求
说明这个servlet已经驻留内存了。
—>doGet
service – ---->destroy
—>doPost

servlet在第一次被访问就会实例化一个servlet对象,然后立即调用init方法初始化对象,创建后的servlet对象会一直驻留在服务器内部,为后续的请问提供服务,只要有请求访问servlet,服务就会调用service方法处理请求,直到服务器关闭或web项目被移除,随着web应用的销毁,servlet也就被销毁,在销毁之前会调用destroy方法进行善后处理。

5.Servlet如何处理用户的请求?

Javaweb的几个小问题(一)_第4张图片

6.说说get请求和post的请求的区别。

1、GET请求一般用去请求获取数据, POST一般作为发送数据到后台时使用
2、GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的,POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制
3、GET请求刷新浏览器或回退时没有影响,POST回退时会重新提交数据请求
4、GET 请求可被缓存, POST 请求不会被缓存
5、GET 请求保留在浏览器历史记录中, POST 请求不会保留在浏览器历史记录中
6、GET 请求可被收藏为书签, POST 不能被收藏为书签
7、GET请求只能进行url编码(application/x-www-form-urlencoded)
, POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)
8、GET请求比较常见的方式是通过url地址栏请求, POST最常见是通过form表单发送数据请求

7.说说相对地址与绝对地址的区别。

相对地址相对当前资源的地址。 容易出错,写法简单
绝对地址放之四海而皆准的地址。 肯定不会出错,拼起来比较麻烦

绝对地址:

${pageContext.request.contextPath}
<%=request.getContextPath()%>

8.说说请求重定向与请求转发的区别。

相同点:页面都会实现跳转

不同点

  • 请求转发的时候,request.getRequestDispatcher(url).forward(request,response); 一次请求,地址栏不会发生改变,request对象不变,request 里的属性可以保存。

  • 重定向时候(redirect):response.sendRedirect(url); 两次请求,地址栏会发生改变,request对象也会变。request 里的属性无法保存。

最常见的情形就是权限认证失败后,必须请求重定向到登录页面,重新登录。

9.jsp有哪九大内置对象?servlet如何获取session和application对象?

jsp有九大内置对象:out,page,request,response,session,application,exception,pageContext,config
常用的就是:request,response,session,application, 只需要掌握这四个就够了。
request.getSession获取session;
request.getServletContext().setAttribute(“nation”,“china”);
获取application
范围从大到小排列 ,application>session>request>page

例如:

        request.setAttribute("city","西安");
        //保存属性到session
        request.getSession().setAttribute("school","西部开源");
        //保存国家名字到application
        request.getServletContext().setAttribute("nation","china");

注册成功


所在城市:${requestScope.city}
所在学校:${sessionScope.school}
所在国家: ${applicationScope.nation}

10.什么是单例?单例有哪些设计模式?

单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存。

常见的单例模式实现方式有五种:饿汉式、懒汉式、双重检测锁式、静态内部类式和枚举单例。
详细查看

你可能感兴趣的:(javaweb)