JSP简介

本文深入讲解JSP技术原理,包括JSP与Servlet的关系、JSP指令及脚本标识使用、内置对象的功能与方法、作用域介绍及客户端与服务器端跳转的区别等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP(Java Server Pages)是动态网页技术,其原理是Servlet技术。

1. JSP与Servlet的关系

        JSP继承了HttpJspBase类(Tomact中work目录可以找到JSP页面的java文件),

        HttpJspBase类又继承了HTTPServlet类,

        HTTPServlet类又继承了GenericServlet类,

        GenericServlet类实现了Servlet接口。

 

2. JSP指令:

         <%@ page   language contentType pageEncoding import %> 页面的相关信息设置

        <%@ include file %> 页面的静态包含

        <%@ taglib uri  prefix%>   声明该页使用的标签库

 

3. JSP脚本标识

 

 

 

JSP表达式: <%= %>
JSP声明标识:<%! %>
JSP代码片段:<% %>

 

 

 

4. JSP动态标识

 

 

 

<jsp:include page="url">  页面的动态包含
<jsp:forward page="url">  页面的跳转(服务器跳转)

 

 

 

5. 页面的静态包含和动态包含有什么区别:

 

 

 

① 静态包含将包含的文件内容和主体文件先合并再编译为一个java文件
     动态包含是各个jsp文件分别被编译为对应的java文件
② 静态包含不能有两个相同的变量,动态可以包含相同的变量
③ 静态包含的页面不能独立存在,动态包含的页面可以独立存在

 

 

 

6. JSP内置对象

 

HttpServletRequest         request request
HttpServletResponse response         request
HttpSession         session session
ServletContext application application
ServeltConfig         config page
JspWriter                 out         page
pageContext         pageContext page
Object         page page
Exception         exception         page
(1) request对象封装了有客户端生成的JSP请求的所有细节,主要包括HTTP头信息、
          系统信息、请求方式、请求参数、服务器端跳转
request.getParameter(name);
request.setAttribute(name, value);
request.getAttribute(name);

 

request.getCoolies();

request.setCharacterEncoding(charsetType);

request.getRequestURL();     // 返回一个完整的路径(http://localhost:8080/day40/emp/empServelt)

request.getRequestURI();    // 返回一个去掉前面域名的路径(/day40/emp/empServlet)

request.getContextPath();     // 返回工程名(/day40)

request.getServletPath();    // 返回除去域名和工程名的部分(/emp/empServlet)

 

(2)response对象用于响应客户请求,向客户传输信息,处理HTTP头文件、客户端跳转
response.sendRedirect(path);
response.setHeader()

 

response.addCookie()

response.setCharaterEncoding(charsetTpye);

response.setContextType("text/html;charset=utf-8");

 

 

 

(3)session对象存储或读取客户的相关信息(浏览器打开时自动创建,手动销毁或session时间到了)
session.setAttribute(name, value);
session.getAttribute(name);
session.removeAttribute(name);
session.setMaxInactiberval(value);
session.invalidate();
(4)application对象用于保存整个项目的共有数据(服务启动创建、停止销毁)
application.getInitParameter(name);
application.getAttributeNames();
application.getAttribute(name);
application.setAttribute(name, value);
application.removeAttribute(name);
(5)config对象主要用于获取服务器的配置信息
getServeltContext();
getInitParameter();
getInitParameterNames();
(6)out对象在web浏览器用于输出信息,并管理服务器的输出缓冲区
out.print();
out.println();
out.clear();
out.cleatBuffer();
out.flush();
(7)pageContext对象获取JSP的内置对象request、response、session、application、exception等
(8)page对象代表JSP本身
(9)exception用来处理JSP页面发生的错误和异常

 

 

 

7. JSP作用范围

 

 

page(页面范围)  request(请求到响应)  session(会话)  application(全局)

 

 

8. 客户端重定向和服务器端跳转的区别:

 

客户端重定向 response.sendRedirect(url)
服务器端跳转 request.getRequestDispatcher(url).forward(request.response)
(1)服务器端跳转浏览器不会看见url,客户端重定向会显示url
(2)服务器端跳转是一次请求,客户端重定向是两次请求
(3)指定目标资源的URL,服务器跳转指的是应用程序的根目录,客户端重定向是指应用服务器根目录

 

 

9. EL表达式

${ }
${empty }
${not empty }
${条件表达式 ? 表达式1 : 表达式2 }
${pageContext. }

 

 

10. JSTL标签库

JSTL分为5个不同的功能标签库:
核心标签库
  <c:out value="${  }"></c:out>
<c:if test="${ }">value</c:if>
<c:choose>
<c:when test="${ }">value1</c:when>
<c:when test="${ }">value2</c:when>
<c:otherwise>value</c:otherwise>
</c:choose>
<c:forEach items="${ }" var="" begin="" end="" step="" varStatus="">
<!-- varStatus有4个可选属性index、count、first、last -->
</c:forEcah>

格式标签库
SQL标签库
XML标签库
函数标签库

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值