https://blog.csdn.net/qq_40703552/article/details/100129334
之前没有错,我还是感觉可以从凝练一下:
*1.从携带数据量上
*2.从请求参数的位置
*3.从用途上
4.安全性
HttpServletRequest(与请求有关)与HttpServletResponse(与响应有关)
1.获取指定参数的单个值:getParamater(String name)
2.获取指定参数的多个值 getParamaterValues(String name)
3.获取整个参数列表 getParamaterMap()
简单说一下,具体的话.自己搜一下吗,别太懒哦.
当容器启动时,tomcat会读取webapps下的web.xml文件.对其进行解析,读取器servlet的信息,并将其加载实例化.
是否一开始实例化取决于 数字越小,启动越早
由于servlet是单例的,多个用户访问servlet的时候,servlet会为每一个用户创建一个线程.当多个用户访问同一个资源时,就可能出现安全问题.
原则
1.如果该资源被共享的话,需要加同步机制sychronized(this){}
2.否则的话,直接定义在doGet,doPost即可
注:多线程的并发的读写servlet类属性会导致数据不同步.但是如果只是并发的读取属性而不写入,则不存在数据不同步的问题.因此servlet的只读属性最好定义为final类型的.
如果面试真的问你这个问题的话.可以从从三个角度来谈.我只说重要的,其他的直接你看看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)
使用ServletContext作用域
存在问题:所有的Servelt都共享这一个域,就会造成数据冲突的问题
解决:缩小作用范围 域对象 request 作用域
1、request可以封装请求行、头、体的信息
2、也可以当成域对象
而作为域对象的三个方法:
存数据:setAttribute(name,value)
取数据:getAttribute(name)
删除数据:removeAttribute(name)
作用范围:
一次请求有效
1、说一说Servlet的生命周期?
2、JAVA SERVLET API中forward() 与redirect()的区别
3.什么情况下调用doGet()和doPost()?
4.Servlet执行时一般实现哪几个方法?
1.Servlet的基本架构代码片断是什么?
2.如何现实servlet的单线程模式?
3.页面间对象传递的方法是什么?
4.四种会话跟踪技术包括哪几项?
5.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
1.说出数据连接池的工作机制是什么?
2.Class.forName的作用?