你们好,我是Java最全面试题库的提裤姐,今天这篇是JavaWeb系列的第四篇,主要总结了JavaWeb中JSP相关的问题,在后续,会沿着第一篇开篇的知识线路一直总结下去,作到日更!若是我能作到百日百更,但愿你也能够跟着百日百刷,一百天养成一个好习惯。html
定义:jsp
本质上就是一个 Servlet
,它是 Servlet 的一种特殊形式(由 SUN 公司推出),每一个 jsp 页面都是一个 servlet实例。
Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。
一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,全部自定义的 servlet 均必须实现 Servlet 接口。web
区别:面试
页面显示
;逻辑控制
,mvc 设计思想中 jsp 位于视图层,servlet 位于控制层Jsp 运行机制:数据库
JVM 只能识别 Java 类,并不能识别 jsp 代码;
web 容器收到以.jsp
为扩展名的 url 请求时,会将访问请求交给tomcat 中 jsp 引擎
处理,每一个 jsp 页面第一次被访问时,jsp 引擎将 jsp 代码解释为一个 servlet
源程序,接着编译servlet 源程序生成.class
文件,再由web 容器 servlet 引擎去装载执行 servlet 程序,实现页面交互。浏览器
四大域对象:tomcat
pageContext page 域
:指当前页面,在当前 jsp 页面有效,跳到其它页面失效request request 域
:指一次请求范围内有效,从 http 请求到服务器处理结束,返回响应的整个过程。在这个过程当中使用 forward(请求转发)方式跳转多个 jsp,在这些页面里你均可以使用这个变量session session 域
:指当前会话有效范围,浏览器从打开到关闭过程当中,转发、重定向都可以使用application context 域
:指只能在同一个 web 中使用,服务器未关闭或者重启,数据就有效对象 | 生命周期 | 做用域 | 使用状况 |
---|---|---|---|
request | 一次请求 | 只在 Jsp 页面内有效 | 用于接受经过 HTTP 协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。 |
Reponse | 一次响应 | 只在 Jsp 页面内有效 | 表示服务器端对客户端的回应。主要用于设置头信息、跳转、Cookie 等 |
Session | 从存入数据开始,默认闲置 30 分钟后失效 | 会话内有效 | 用于存储特定的用户会话所需的信息 |
Out | 用于在 Web 浏览器内输出信息,而且管理应用服务器上的输出缓冲区 | ||
PageContext | 用于存取其余隐含对象,如 request、reponse、session、application 等对象。(实际上,pageContext 对象提供了对 JSP 页面全部的对象及命名空间的访问。 | ||
Page | page 对象表明 JSP 自己(对应 this),只有在 JSP 页面内才是合法的 | ||
Exception | 显示异常信息,必须在 page 指令中设定< %@ page isErrorPage="true" %>才能使用,在通常的 JSP 页面中使用该对象将没法编译 JSP 文件 | ||
Application | 服务器启动发送第一个请求时就产生了Application 对象,直到服务器关闭。 | 用于存储和访问来自任何页面的变量全部的用户分享一个 Application 对象 | |
Config | 取得服务器的配置信息 |
<%…%>
用于在JSP页面中嵌入Java脚本<%!…%>
用于在JSP页面中申明变量或方法,能够在该页面中的<%…%>脚本中调用,声明的变量至关于Servlet中的定义的成员变量。服务器
区别:session
实现方式:mvc
response.sendRedirect("重定向的路径")
request.getRequestDispatcher("转发路径").forward(request, response);
1.JSP与Java Servlet同样,是在服务器端执行的,一般返回该客户端的就是一个HTML文本,所以客户端只要有浏览器就能浏览
2.在大多数Browser/Server结构的Web应用中,浏览器直接经过HTML或者JSP的形式与用户交互,响应用户的请求
3.JSP在服务器上执行,并将执行结果输出到客户端浏览器,咱们能够说基本上与浏览器无关app
一、JSP页面显示乱码 <%@ page contentType=”text/html; charset=gb2312″%>
二、表单提交中文时出现乱码request.seCharacterEncoding("gb2312″)
对请求进行统一编码
三、数据库链接出现乱码 要涉及中文的地方所有是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK
就能够了。
四、经过过滤器完成
五、在server.xml
中的设置编码格式
<%@ page session="false" %>
当客户端向一个jsp页面发送请求时,Web Container将jsp转化成servlet的源代码(只在第一次请求时),而后编译转化后的servlet并加载到内存中执行,执行的结果response到客户端
jsp只在第一次执行的时候会转化成servlet,之后每次执行,web容器都是直接执行编译后的servlet,因此jsp和servlet只是在第一次执行的时候不同,jsp慢一点,之后的执行都是相同的。