1.jsp内置对象,类型,以及作用
内置对象 | 类型 | 简介 |
1.pageContext | javax.servlet.jsp.PageContext | JSP页面容器 |
2.request | javax.servlet.http.HttpServletRequest | 客户端向服务端发送的请求信息 |
3.response | javax.servlet.http.HttpServletResponse | 服务器端向客户端的响应信息 |
4.session | javax.servlet.http.HttpSession | 客户端与服务器端的一次会话 |
5.application | javax.servlet.ServletContext | 可存放全局变量,实现用户间数据的共享 |
6.config | javax.servlet.ServletConfig | 服务器配置信息,可以取得初始化参数 |
7.out | javax.servlet.jsp.JspWriter | 向客户端输出内容 |
8.page | java.lang.Object | 当前JSP页面本身,类似于Java类中的this关键字 |
9.exception | java.lang.Throwable | 当一个页面在运行过程中发生了异常,就产生这个对象 |
一:执行时间上:
<%@ include file="index.html"%> 是在翻译阶段执行
<jsp:include page="index.jsp" flush="true" /> 在请求处理阶段执行.
二:引入内容的不同:
<%@ include file="index.html"%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page="index.jsp" flush="true" />引入执行页面或servlet所生成的应答文本,直到输出时才合并
三:动态包含可带参数,静态包含不能带参数.如(<jsp: include page="included.jsp">放入参数</jsp:include>);
四:静态include定不会检查所含文件的变化,而动态include会检查
3.jsp,Servlet的区别
(1)jsp是html加Java语言构成,servlet是Java语言
(2)jsp位于视图层,servlet位于逻辑层
(3)jsp会被编译为servlet文件
4.session和cookie的区别
如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造,但是如果你能够获取某个登录用户的 sessionid,用特殊的浏览器伪造该用户的请求也是能够成功的。sessionid是服务器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性.
5.如果客户在浏览器上禁用了cookie,如何做会话跟踪
我们可以对网页中的链接稍作修改,解决以上问题:
修改前:
<a href=“maillogin.jsp“>
修改后:
<a href=“<%=response.encodeURL(“maillogin.jsp“)%>“>
6. 在前端输入框如果用户输入的是HTML标记本身,是否有安全问题?如何解决?
对html标记转义存储,如< < > >
7. servlet是否是线程安全的?为什么?
servlet对象可以同时被多个线程访问,但是它的所有方法都是非同步(synchronized)的,没有成员变量,即使多个线程同时访问,因为没有共享数据所以不存在线程安全问题.但是你如果在里边加入成员变量,如i++,那么就可能出现安全问题
8. 乱码问题怎么解决?
a\通过filter,统一为request中的文本转码:
request.setCharacterEncoding(“utf-8”);
b\修改tomcat的配置
c\jsp或html中的编码相关的地方全部设置为utf-8
d、如果是json返回要设定response.setContentType(“application/text;charset=utf-8”);
a、 添加对commons-fileupload的依赖
b、 表单form标签增加enctype属性,值为multipart;form标签中定义type=”file”的表单空间
c、 在Servlet中使用fileupload的API可以解析出上传的文件List<FileItem>
d、 处理FileItem,可以获得它的输入流,读到内存中进行下一步处理
10 get和post有什么区别?
get:url直接访问,参数附加在url后面;url长度受限;信息不安全;只能传输文本不能传输图象等二进制内容 name=zhangsan&age=10
post:表单post提交;参数隐藏在报文中,参数长度不受限;较为安全;能上传非文本的内容
11.http响应状态码有哪些?分别是什么含义?
1开头的是表示临时响应并需要请求者继续执行操作的状态码
200 ok
303 权限不足
404 找不到资源
500 服务器内部错误
12.http请求报文和响应报文
请求行
由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
get:GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1
post:GET /search HTTP/1.1
响应:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
如:- 200 OK:客户端请求成功。
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
- 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
- 403 Forbidden:服务器收到请求,但是拒绝提供服务。
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
- 500 Internal Server Error:服务器发生不可预期的错误。
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。