JSP详细讲解
前言
一、JSP 介绍
JSP(全称 Java Server Pages)Java 服务端页面技术,是 JavaEE 平台下的技术规范。它允许使用特定的标签在 HTML 网页中插入 Java 代码,实现动态页面处理,所以 JSP 就是 HTML 与Java 代码的复合体。JSP 技术可以快速的实现一个页面的开发,相比在 Servlet 中实现页面开发将变得更加容易。
二、JSP 运行原理
1、JSP 技术特点
JSP 和 Servlet 是本质相同的技术。当一个 JSP 文件第一次被请求时,JSP 引擎会将该 JSP编译成一个 Servlet,并执行这个 Servlet。如果 JSP 文件被修改了,那么 JSP 引擎会重新编译这个 JSP。
JSP 引擎对 JSP 编译时会生成两个文件分别是.java 的源文件以及编译后的.class 文件,并放到 Tomcat 的 work 目录的 Catalina 对应的虚拟主机目录中的 org\apache\jsp 目录中。两个文件的名称会使用 JSP 的名称加”_jsp”表示。如:index_jsp.java、index_jsp.class。
2、JSP 与 Servlet 区别
三、 JSP 的使用
1、JSP 的三种原始标签
JSP 的原始标签在 JSP 的任何版本中都可以使用。
2、JSP 原始标签的使用
需求:以 20%概率显示你中奖
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎来到中奖游戏
<%
int flag = new Random().nextInt(100);
if (flag <= 20){
%>
中奖了 <%=flag %>
<% }else {
%>
再试一次吧 <%= flag %>
<% } %>
</body>
</html>
3、 JSP 的指令标签
JSP 指令标签的作用是声明 JSP 页面的一些属性和动作。
<%@指令名称 属性=“值” 属性=“值”%>
4、JSP 指令标签分类
1、Page 指令标签
2、Include 指令标签
静态包含,可以将其他页面内容包含进来,一起进行编译运行.生成一个 java 文件.
<%@include file=“被包含 JSP 的相对路径” %>
3、 Taglib 指令标签
导入标签库。
<%@taglib prefix=“前缀名” uri=“名称空间” %>
四、JSP 的内置对象
JSP 中一共预先定义了 9 个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception。
五、 请求转发
1、什么是请求转发
2、请求转发与重定向的区别
3、请求转发案例
需求:在 Servlet 中获取客户端浏览器所支持的语言,并通过 JSP 页面将客户端浏览器所支持的语言响应给客户端浏览器。
//需求:在 Servlet 中获取客户端浏览器所支持的语言,
// 并通过 JSP 页面将客户端浏览器所支持的语言响应给客户端浏览器。
@WebServlet("/language.do")
public class LanguageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String header = req.getHeader("Accept-Language");
req.setAttribute("key",header);
req.getRequestDispatcher("showMsg.jsp").forward(req,resp);
}
}
showMsg.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String value = (String)request.getAttribute("key");
%>
当前支持的语言为:<%= value%>
</body>
</html>
运行结果:
六、JSP 中的四大作用域对象
作用域:“数据共享的范围”,也就是说数据能够在多大的范围内有效。