1、上传文件需要有什么条件?
a、必须以POST方式请求
b、在表单中加入enctype="multipart/form-data"
c、在servlet中加入注解@MultipartConfig
2、请求转发和重定向的区别。
1、请求转发由RequestDispatcher发出,重定向由response发出
2、请求转发客户端向服务器发出一次请求,而重定向客户端向服务器发出两次请求。所以请求转发可以共享request中绑定的数据,而重定向不行。
3、请求转发只能转发服务器内部资源,而重定向可以在第二次请求时转发别的服务器。
3、解释Web应用程序保存客户端状态有哪些形式
1、隐藏表单、
2、cookie
3、session
4、URL重写
4、cookie的工作流程。
客户端请求服务器,服务器调用response.addCookie()方法,产生响应时,会产生set-cookie的响应头,将cookie对象信息以文本方式发送给客户端。当客户端再次请求,会将cookie信息,再以cookie响应头的方式发送给服务器。从而跟踪状态。
5、sessoin的工作流程。
客户端请求服务器,服务器为了跟踪客户端的状态,调用request.getSession()产生一个session对象,同时给该对象分配一个唯一标识sessionId。为了管理所有用户的session对象,WEB容器以sessionId为键,session对象为值,存放进一个Map集合。产生响应时,会将sessionId以set-cookie响应头的方式发送给客户端。客户端再次请求,将sessionId以cookie请求头的方式发送给服务器。而服务器根据sessionId找到session对象。从而跟踪状态。
6.解释session和cookie的区别。
1、session是存放在服务器端的对象,而cookie信息保存在客户端
2、session可以通过绑定共享对象的方式保数据,而cookie只能以文本方式保存数据
3、使用session时客户端和服务器只交互sessionId,而使用cookie时,客户端和服务器交互的是具体的数据。所以,使用session更为安全。
7.为什么需要管理session?如何销毁session。
因为http协议是一种无状态的协议,所以,客户端是否下线,服务器并不知道。那么,即使客户端下线,服务器还在为当前客户保存session对象。所以,必须对过期的session及时清理以释放服务器内存。销毁有三种方式:
1、会话超时
2、调用invalidate()方法强行销毁
3、应用程序结束
8.如果客户端禁用cookie,session还能记录客户端状态吗?
如果不能,有什么方法可以在客户端禁用cookie时,session仍然有效。
如果客户端禁用cookie,那么意味着服务器发送给客户端的sessionId就不能从客户端,以cookie方式发送给服务器。服务器得不到sessionId,那么会认为是新用户,从而无法取出之前保存的信息。
解决方案是,对URL进行重新编写,将sessionId,附加在URL后面。这样即使客户端禁用cookie,服务器同样可以得到sessionId,取出session对象
9、JSP引擎是什么?
JSP引擎的作用是:将jsp页面翻译成java类。
10、JSP为什么是servlet?
按照Servlet规范,由jsp引擎所翻译的jsp类,必须实现HttpJspPage接口,而该接口是servlet的子接口,所以同样满足servlet规范。jsp的本质是servlet。只不过jsp重在数据展示,而servlet重在逻辑处理。
11、描述JSP生命周期
12、JSP的隐式对象有哪些?
13、JSP脚本元素有哪些?
声明<%! %>
脚本<% %>
表达式<%= %>
14、JSP注释有哪些?
jsp注释<%-- --%>
html注释<!-- --%>不能注释java代码
java注释// /**/
15、JSP动作包含和指令包含的区别是什么
16、完成商品评论系统。
1.自定义标签
<?xml version="1.0" encoding="utf-8"?>
<taglib>
<tlib-version>1.2</tlib-version><!-- 标签库版本 -->
<jsp-version>1.2</jsp-version><!-- jsp版本 -->
<tag><!-- 注册标签 -->
<name>tt</name><!-- 标签名称 -->
<tag-class>com.project.tag.MyTag</tag-class><!-- 标签类全路径 -->
</tag>
</taglib>