0929
阅读提示:
带有*为重点内容. 续上次0828servlet面试题01,链接如下
https://blog.youkuaiyun.com/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的作用?