JSP技术

本文介绍了JSP技术的基本概念,包括其作为动态Web技术的角色,与HTML的区别,以及工作原理。详细讲解了JSP的脚本片段、声明、表达式和注释等基本语法,还有JSP指令如page、include和taglib指令的使用。此外,还讨论了JSP动作元素如include和forward标签,并列举了JSP的9个内置对象(隐式对象)及其作用。

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


JSP技术

一、概述

1、简介

  • JSP是Java Server Pages(Java服务器端页面),也和Servlet一样,用于动态Web技术。
  • 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。
  • JSP最终也会被转换成为一个Java类。
  • JSP本质上就是一个Servlet。

2、最大特点

  • 写JSP就像在写HTML
  • 区别:
    • HTML只给用户提供静态的数据
    • JSP页面中可以嵌入Java代码,为用户提供动态数据

3、原理

  • 代码层面没有任何问题

  • 服务器内部工作

    • tomcat有一个work目录,会发现页面变成了Java程序

    • IDEA中使用tomcat的会在tomcat中生产一个word目录

4、创建与编写JSP文件

1、创建jsp文件
在这里插入图片描述
2、jsp文件命名
在这里插入图片描述
3、生成jsp文件
在这里插入图片描述
4、编写jsp文件
在这里插入图片描述

二、JSP基本语法

1、JSP脚本片段 <% %>

作用:编写Java代码,可以与HTML嵌套使用

<%  %>
<%
    int sum = 0;
    for (int i = 0; i < 101; i++) {
        sum += i;
    }
    out.println("<h1>sum="+sum+"</h1>");
%>

<%--在代码中嵌入HTML元素--%>
<%
    for (int i = 0; i < 5; i++) {
%>
    <h1>Hello world  <%=i%></h1>
<%
    }
%>

2、JSP声明 <%! %>

作用:声明Java变量,方法。

<%!  %>
<%!
    static {
        System.out.println("Loading Servlet!");
    }
    private int globalVar = 0;
    public void sgz(){
        System.out.println("进入了方法sgz");
    }
%>

3、JSP表达式 <%= %>

作用:用来将程序的输出,输出到客户端

 <%=  %>
 <%= a%>
 <%= new java.util.Date()%>

4、JSP注释

4.1、隐藏注释
  • JSP的注释不会在客户端显示
<%--   --%>
<%--这是JSP注释--%>
4.2、动态注释
  • HTML会在客户端显示
<!--  -->
<!--这是HTML注释-->

5、JSP三大基本语法总结

<%  %>		JSP脚本片段
<%!  %>		JSP声明
<%=  %>		JSP表达式

三、JSP指令

1、pase指令

<%@ page 属性名1="" 属性名2="" ...... %>			<%-- 页面功能 --%>			
属性名取值范围作用
languagejava指定JSP页面所用的脚本语言,默认为Java
import任何包名、类名指定JSP页面使用的包,import是唯一可以声明多次的page指令;一个import属性可以引用多个类,中间用逗号隔开
pageEncoding当前页面指定页面编码方式
contentType有效的文档类型指定当前JSP页面的MIME类型和字符编码:text/html;text/plain;image/jpeg;image/gif;application/msword
sessionture、false指定该JSP是否内置Session对象,默认为true
isErrorPagetrue、false指定该页面是否为错误处理页面,默认为false
errorPage某个JSP页面的相对路径指定一个错误页面,该JSP抛出异常会跳转到errorPage指定的页面,指定的页面需要isErrorPage属性为true
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.text.SimpleDateFormat,java.util.Date" %>
<%@ page session="false" %>
<%@ page errorPage="error/500.jsp" %>
<%@ page isErrorPage="true" %>
<%@ page contentType="image/jepg" %>
  • web.xml配置错误页面,适配整个项目
<!--web.xml配置错误页面-->
<error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error/500.jsp</location>
</error-page>

2、include指令

  • 将被包含文件内容原封不动地插入包含页中,被包含的文件最终会生成一个文件,变量和方法会冲突,可以互相调用,合并页面。
  • 被引入的页面去掉 < body > < html > 标签
<%@ include file="被包含的文件地址"%>		<%-- 会将两个页面合二为一,当前JSP页面中包含另一个JSP页面 --%>		
  • include1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个页面</title>
</head>
<body>

<h1>第一个页面</h1>
<%
    int a = 1;
    int b = 2;
%>

</body>
</html>
  • include2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第二个页面</title>
</head>
<body>

<h1>第二个页面</h1>
<%= a + b%>

</body>
</html>

3、taglib指令

  • 表示该页面中引用JSTL标签库,并指定标签的前缀,就可以通过前缀来引用标签库中的标签。
  • prefix:指定标签的前缀,不能命名为:jsp、jspx、java、sun、servlet、sunw。
  • uri:指定标签库文件的存放位置。
<%@ taglib  %>		<%-- 表示该页面中引用JSTL标签库 --%>		
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

四、JSP标签(JSP动作元素)

1、include标签

  • 当前页面引入其它的文件可以动态或静态,每个文件都是单独编译的,变量和方法不会冲突,不能互相调用,拼接页面。
<%--
	<jsp:include: page="指定被引入文件的相对路径" flush="ture|false"/>	     拼接页面,本质还是两个
--%>
  • include1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>第一个页面</title>
</head>
<body>

<h1>第一个页面</h1>
<jsp:include page="include2.jsp" flush="true"/>

</body>
</html>
  • include2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第二个页面</title>
</head>
<body>

<h1>第二个页面</h1>
<%
    out.print("这是被包含的页面");
%>

</body>
</html>

2、forward标签

  • 将当前请求转发到其它Web资源(如HTML页面、JSP页面、Servlet等),执行请求转发之后,当前页面将不再执行,而是执行该元素指定的目标页面。
<jsp:forward page="请求转发资源的相对路径"/>
<jsp:forward page="include.jsp"/>

五、JSP9九内置对象(隐式对象)

名称类型作用
pageContextfinal javax.servlet.jsp.PageContext pageContext存东西,获取页面上下文
sessionjavax.servlet.http.HttpSession session存东西,用于保存用户的信息
applicationfinal javax.servlet.ServletContext application存东西,所有用户的共享信息
requestjavax.servlet.http.HttpServletRequest request存东西,请求
responsejavax.servlet.http.HttpServletResponse response响应
configfinal javax.servlet.ServletConfig config服务器配置,可以取得初始化参数
outjavax.servlet.jsp.JspWriter out页面输出
pagefinal java.lang.Object page不用了解,将当前页面转换后的servet类的实例
exceptionjava.lang.ThrowableJSP页面发生的异常,在错误页中才起作用(isErrorPage)
<%
    pageContext.setAttribute("name1","沈公子1号");  // 保存的数据只在一个页面中有效
    request.setAttribute("name2","沈公子2号");      // 保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","沈公子3号");      // 保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器才失效
    application.setAttribute("name4","沈公子4号");  // 保存的数据只在服务器中有效,从打开服务端到关闭服务器才失效
    config.getInitParameter();					  // 获取初始化参数
    out.print();								  // 页面输出
    exception.getMessage()						 // JSP页面发生的异常,在错误页中才起作用(isErrorPage)
%>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值