1、说一说Servlet生命周期
Servlet生命周期包括三部分:
初始化:Web容器加载servlet,调用init()方法e呐t
处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。
销毁:服务结束,web容器会调用servlet的distroy ()方法销毁servlet。
2、get提交和post提交有何区别
(1)get一般用于从服务器上获取数据,post一般用于向服务器传送数据
GET 请求可被缓存请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用请求有长度限制
Post正好相反
(2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中。
比如说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。
(3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。
所以说想上传文件的话,那我们就需要使用post请求方式
(4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求
3、JSP与Servlet有什么区别
Servlet是服务器端的程序,动态生成html页面发送到客户端,但是这样程序里会有很多out.println(),Java与html语言混在一起
很乱,所以后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成
.class文件运行。有了jsp,在MVC项目中servlet不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制jsp与javabean
之间的流转。
4、doGet与doPost方法的两个参数是什么
HttpServletRequest:(r块死T)封装了与请求相关的信息
HttpServletResponse:(r死棒死)封装了与响应相关的信息
5、request.getAttribute(I去B t)和request.getParameter(铺r米T)
(1)有setAttribute,没有setParameter方法
(2)getParameter获取到的值只能是字符串,不可以是对象,而getAttribute获取到的值是Object类型的。
(3)通过form表单或者url来向另一个页面或者servlet传递参数的时候需要用getParameter获取值;getAttribute只能获取setAttribute的值
(4)setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另一个页面的时候,应用服务器
会把这块内存拷贝到另一个页面对应的内存当中。通过getAttribute可以取得你存下的值,当然这种方法可以用来传对象。
用session也是一样的道理,这是说request和session的生命周期不一样而已。
6、JSP有哪些内置对象,作用是什么?
JSP内置对象
名称 作用
Request(r块死T) 包含用户端请求的信息
Response (r死棒死) 包含服务器传回客户端的响应信息
Session(赛神) 与请求有关的会话期
pageContext(佩及康T可死T) 管理网页属性
Application(啊铺r k神) 服务器启动时创建,服务器关闭时停止,为多个应用程序保存信息
out 向客户端输出数据
Config(康会个) servlet的架构部件
page佩及 指网页本身
Exception(一可赛铺神) 针对错误页面才可使用
7、四种会话跟踪技术作用域
(1)page:一个页面
(2)request::一次请求
(3)session:一次会话
(4)application(啊铺r k神):服务器从启动到停止。
7、JSP中动态INCLUDE和静态INCLUDE有什么区别
include指令用于把另一个页面包含到当前页面中,在什么时候包含的?再转换成servlet的时候包含进去的。
动态INCLUDE用jsp:include动作实现 <jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,
并且可以带参数.
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file=“included.htm” %>
8、forward和redirect(r得可T)的区别
转发与重定向
(1)从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送
的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是
新的URL.
(2)从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
(4)从效率来说
forward:高.
redirect:低.
9、 说出JSP的6个动作指令和作用?
•jsp:include:在页面被请求的时候引入一个静态或动态的文件。
•jsp:useBean(new死并):寻求或者实例化一个JavaBean。
•jsp:setProperty(怕吧里):设置JavaBean的属性。
•jsp:getProperty:获取某个JavaBean的属性。
•jsp:forward:把请求转到一个新的页面(html文件、jsp文件或者一个程序段)。
•jsp:plugin:根据浏览器类型为Java插件生成object或embed标记。
10 JSP的3种跳转方式
•response.sendRedirct(赛的r打可T )方法:重新发送请求
•response.setHeader(害得)方法:与response.sendRedirect()方法。
•<jsp:forward page=”跳转的页面”/>:是服务器端的跳转。
11 谈谈Servlet过滤器的作用?
Filter是特殊的Servlet,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行预处理,过滤器决定是否继续执行后续的文件。典型的应用,可以把用户验证的代码写在过滤器中,然后把过滤的路径配制成需要验证的文件的路径。
12 谈谈Servlet监听器的作用
Servlet监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码。监听器分为生命周期监听器和数据变化监听器 监听器必须在web.xml注册 不同的监听器实现不同的接口
13 请简要描述jstl
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
核心标签(core) 格式化标签(fmt) SQL 标签 XML 标签 JSTL 函数(fn)
14 如何现实servlet的单线程模式
Jsp修改page指令 <%@ page isThreadSafe=“fase”%>命令的JSP编译后的Servlet
Servlet中实现SingleThreadModel接口即可
SingleThreadModel接口页面没有方法,只是一个标识,让容器改变Servlet生成策略的
15 介绍el表达式
简介:EL 全名为Expression Language。EL表达式一般操作的是作用域(application,session,request,pageContext)中的属性,EL变量指某一个作用域中的属性。
注:el表达式操作不了局部变量!
用法:
使用EL表达式获取数据语法:“
标
识
符
”
E
L
表
达
式
语
句
在
执
行
时
,
会
调
用
p
a
g
e
C
o
n
t
e
x
t
.
f
i
n
d
A
t
t
r
i
b
u
t
e
方
法
,
用
标
识
符
为
关
键
字
,
分
别
从
p
a
g
e
、
r
e
q
u
e
s
t
、
s
e
s
s
i
o
n
、
a
p
p
l
i
c
a
t
i
o
n
四
个
域
中
查
找
相
应
的
对
象
,
找
到
则
返
回
相
应
对
象
,
找
不
到
则
返
回
”
”
(
注
意
,
不
是
n
u
l
l
,
而
是
空
字
符
串
)
。
示
例
:
{标识符}” EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。 示例:
标识符”EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””(注意,不是null,而是空字符串)。示例:{user}
EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
${user.address.city}
${user.list[0]}:访问有序集合某个位置的元素
${map.key} : 获得map集合中指定key的值
获得web开发常用对象
1、pageContext:代表pageContext对象 例如:${pageScope.name1}
2、pageScope:代表page域
3、requestScope:代表request域
4、sessionScope
5、applicationScoope
6、param:Map对象,保存了所有的请求参数
7、paramValues:Map对象(value对应一个数组).
8、header:Map对象。获取一个请求头的值 注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
9、headerValues:Map对象(value对应一个数组)
10、cookie:Map对象。(value对应一个cookie对象)
11、initParam:Map对象。(key=参数名value=参数值,此参数是在web.xml中配置的) 例如 ${initParam.encode }