1、servlet缺点,为什么会出现jsp技术?
因为Servlet当初的设计目的是用来产生网页的程序,所以所有的页面必须在Servlet中进行构造,这样做的效率在当今来说,真的很低下,所以对于Servlet来说,它是很不利于展现的,不过它很适合于对数据的处理,所以很适合于充当控制器来使用。因为Servlet构建页面实在够差,所以后来SUN推出了JSP来一改Servlet引入的尴尬。
2、常见动态网站的技术对比
jsp:java平台、安全性高、适合开发大型的,企业级的Web应用程序。
.Net:.net平台、简单易学(界面化操作)。但是安全性和跨平台性差
php:简单、高效、成本低开发周期短。特别适合中小型企业(LAMP=Linux+Apache+Mysql+Php).
3、请求转发与请求重定向的区别?
请求重定向:客户端行为,respon.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的url会改变。
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL不会改变。
4、session与cookie的对比?
session: cookie:
(1)服务器端保存客户信息 客户端保存
(2)保存的是object类型 string类型
(3)随着会话结束而销毁 可以长期保存客户端
(4)保存重要信息(密码) 不重要的信息
(5)保存的数据大 保存的数据少
5、include指令与include动作的区别?
include指令 | include动作 | |
语法格式 | <%@ include file="..."%> | <jsp:include page="..."> |
发生作用的时间 | 页面转换期间 | 请求期间 |
包含的内容 | 文件的实际内容 | 输出内容 |
转换成的servlet | 主页面和包含页面转换为一个servlet | 转换出两个独立的servlet |
编译时间 | 较慢—资源必须被解析 | 较快 |
执行时间 | 稍快 | 较慢—每次资源必须被解析 |
6、脚本元素:在一定程度上可以理解就是java的片段
1、脚本: <% java代码 %> 局部变量
2、表达式: <%=java表达式 %> 输出变量 表达式
3、声明: <%! 变量、方法%> 全局变量
7、request对象主要用于处理客户端请求,方法有:
String getParameter(String name) 根据页面表单组件名称获取页面提交数据
String[ ] getParameterValues (String name) 获取一个页面表单组件对应多个值时的用户的请求数据
void setCharacterEncoding (String charset) 指定每个请求的编码 在调用request.getParameter()之前进行设定,可以解决中文乱码问题
request.getRequestDispatcher(String path) 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求
request.setAttribute("key",value);
Object request.getAttribute("key");
8、application对象的常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
Object getAttribute(String key):根据键去获取application中存放对象的值
application.getRealpath("/"); 得到项目的路径
9、session对象常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","zhangsan");
Object getAttribute(String key):根据名称去获取session中存放对象的值
String name = (String) session.getAttribute("name");
session.getId(); 得到session的ID
session.isNew(); 判断该session是否是新的
session.Invalidate(); 销毁session