servlet面试题及答案~02(简单的servlet差不多就这些啦,明天jsp走起。留了一些问题,自己可以尝试解答。)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40703552/article/details/100149761

0929

阅读提示:

带有*为重点内容. 续上次0828servlet面试题01,链接如下

https://blog.csdn.net/qq_40703552/article/details/100129334

更正:06)get和post的区别

之前没有错,我还是感觉可以从凝练一下:

*1.从携带数据量上

*2.从请求参数的位置

*3.从用途上

4.安全性

5.从传递数据速度上.总结1.post带有更多请求头信息2.post需要确认.3post不会缓存4.post不能管道化传输(参考链接来自博客园 返回主页迷途小哈https://www.cnblogs.com/strayling/p/3580048.html)

思考get与post如何解决乱码?

拓展:07)servlet的两个重要的API

HttpServletRequest(与请求有关)与HttpServletResponse(与响应有关)

如何从页面获取参数,有几种方式

1.获取指定参数的单个值:getParamater(String name)

2.获取指定参数的多个值 getParamaterValues(String name)

3.获取整个参数列表 getParamaterMap()

09)tomcat容器是如何创建servlet类实例?用到了什么原理

简单说一下,具体的话.自己搜一下吗,别太懒哦.

当容器启动时,tomcat会读取webapps下的web.xml文件.对其进行解析,读取器servlet的信息,并将其加载实例化.

是否一开始实例化取决于 数字越小,启动越早

10)servlet的安全性问题

由于servlet是单例的,多个用户访问servlet的时候,servlet会为每一个用户创建一个线程.当多个用户访问同一个资源时,就可能出现安全问题.

原则

1.如果该资源被共享的话,需要加同步机制sychronized(this){}

2.否则的话,直接定义在doGet,doPost即可

注:多线程的并发的读写servlet类属性会导致数据不同步.但是如果只是并发的读取属性而不写入,则不存在数据不同步的问题.因此servlet的只读属性最好定义为final类型的.

11)Request对象的主要方法包括哪些?(借鉴了一下)

如果面试真的问你这个问题的话.可以从从三个角度来谈.我只说重要的,其他的直接你看看api就行拉.你要相信真有奇葩的面试题.哈哈.

1.request操作请求行的方法

String getMethod() 判断请求方式

String getContextPath() 该方法用于获取请求URL中属于WEB应用程序的路径,这个路径以“/”开头,表示相对于整个WEB站点的根目录,路径结尾不含“/”。如果请求URL属于WEB站点的根目录,那么返回结果为空字符串("")动态获取项目名称。例如:/day12

String getRemoteAddr() 该方法用于获取请求客户端的IP地址

2.request操作请求头的方法

方法声明 功能描述
String getHeader(String name) 该方法用于获取一个指定头字段的值,如果请求消息中没有包含指定的头字段,getHeader()方法返回null;如果请求消息中包含有多个指定名称的头字段,getHeader()方法返回其中第一个头字段的值
Enumeration getHeaders(String name) 该方法返回一个Enumeration集合对象,该集合对象由请求消息中出现的某个指定名称的所有头字段值组成。在多数情况下,一个头字段名在请求消息中只出现一次,但有时候可能会出现多次
Enumeration getHeaderNames() 该方法用于获取一个包含所有请求头字段的Enumeration对象
int getIntHeader(String name) 该方法用于获取指定名称的头字段,并且将其值转为int类型。需要注意的是,如果指定名称的头字段不存在,返回值为-1;如果获取到的头字段的值不能转为int类型,将发生NumberFormatException异常
Long getDateHeader(String name) 该方法用于获取指定头字段的值,并将其按GMT时间格式转换成一个代表日期/时间的长整数,这个长整数是自1970年1月1日0点0分0秒算起的以毫秒为单位的时间值

3.request操作请求头的方法

存数据:setAttribute(name,value)

取数据:getAttribute(name)

删除数据:removeAttribute(name)

12)servlet的查询结果用如何保存(保存在什么作用域?)

使用ServletContext作用域

存在问题:所有的Servelt都共享这一个域,就会造成数据冲突的问题

解决:缩小作用范围 域对象 request 作用域

13)request的作用:

1、request可以封装请求行、头、体的信息

2、也可以当成域对象

而作为域对象的三个方法:

存数据:setAttribute(name,value)

取数据:getAttribute(name)

删除数据:removeAttribute(name)

作用范围:

一次请求有效

延伸:

看完这两天的内容.下面几个问题看看能不能回想起来?

1、说一说Servlet的生命周期?

2、JAVA SERVLET API中forward() 与redirect()的区别

3.什么情况下调用doGet()和doPost()?

4.Servlet执行时一般实现哪几个方法?

这下面5个问题比上有点难度.当然还是基础.试着自己去整理思考一下.不会的小伙伴私信我哦.最好能独立完成.当然有哪位小伙伴留言也行.

1.Servlet的基本架构代码片断是什么?

2.如何现实servlet的单线程模式?

3.页面间对象传递的方法是什么?

4.四种会话跟踪技术包括哪几项?

5.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

考考之前你所学的哦

1.说出数据连接池的工作机制是什么?
2.Class.forName的作用?

猜你喜欢

转载自blog.csdn.net/qq_40703552/article/details/100149761
今日推荐