JavaWeb_servlet核心技术(2)JSP技术

基本概念

JSP也是一种做出动态响应的技术

  • JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为xxx.jsp。
  • 与Servlet不同,JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容
  • JSP主要是用来弥补servlet不便于发送大量信息的不足

JSP实例

<%@ page import="java.util.Date" %> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
	<head> 
		<title>Hello Time</title> 
	</head> 
	<body>
 		现在的时间是:<%= new Date()%> 
 	</body> 
 </html>

import就是导包
contentType就是解决Post乱码时的set设置
language就是语言

JSP与Servlet的关系

在这里插入图片描述

JSP的语法

结构

声明区
程序代码区
表达式
注释
指令和动作
内置对象

声明区

用于定义全局变量、方法、类的相关信息

  • 基本语法
    <%! %>

程序代码区

以定义局部变量以及放入任何的Java程序代码

  • 基本语法
    <%程序代码区%>

表达式

可以输出一个变量或一个具体内容,但=后面必须是字符串变量或者可以被转换成字符串的
表达式

  • 基本语法
    <%=… …%>
    =在这里是输出的意思
<%=“hello world”%> 
<%=i+1%>

简单用一下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>测试变量的声明和打印</title>
    <%!
        int ia;//这是一个全局变量
        public void show(){
            System.out.println("这是一个全局方法!");
        }
        public class MyClass{
            {
                System.out.println("这是一个全局类!");
            }
        }
    %>

    <%
        int ib = 20;//这是一个局部变量
        for(int i=0;i<3;i++){
            System.out.println("随便放入java程序代码");
        }
    %>
</head>
<body>
    <%= ia+1%> <%-- 1 --%>
    <%= ib+1%> <%-- 20 --%>
    <%= "写入字符串"%>
</body>
</html>

结果
在这里插入图片描述
原理就是我们写的JSP,然后Tomcat服务器会帮我们写好相应的Servelet内容

小练习

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现表格的绘制</title>
</head>
<body>
<table>
    <tr>
        <td>id</td>
        <td>name</td>
        <td>age</td>
        <td>salary</td>
    </tr>
    <%
        for (int i = 1; i < 6; i++) {
    %>
    <tr>
        <td><%=i%></td>
        <td><%=i%></td>
        <td><%=i%></td>
        <td><%=i%></td>
    </tr>
    <%
        }
    %>

</table>
</body>
</html>

在这里插入图片描述

注释

格式: 
<!--… …--> HTML文件常用的注释,浏览器可以查看到 
<%--… …--%> JSP文件的注释,浏览器看不到 
<%//… …%> Java语言中的单行注释,浏览器看不到 
<%/*… …*/%> Java语言中的多行注释,浏览器看不到 
注释的内容不会被执行

指令和动作

  • 指令格式:<%@指令 属性=“属性值”%>
  • 指令的属性可以设定多个。
  • JSP常用指令有:page页面、taglib标签库、include包含

page指令

page指令用于导包和设置一些页面属性,常用属性如下:

  • import 导入相应的包,惟一允许在同一文档中多次出现的属性
  • contentType 设置Content-Type响应报头,标明即将发送到浏览器的文档类型 设置的是发送给浏览器的内容的编码
  • pageEncoding 设置页面的编码 当前页面的编码
  • language 指定页面使用的语言 基本都是Java
  • session 控制页面是否参与HTTP会话 设置是否区创建http session对象
  • errorPage 处理当前页面中抛出但未被捕获的任何异常 处理异常
  • isErrorPage 当前页是否可以作为其他页面的错误处理页面 是都是异常页面

简单用一下

<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.List" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>page指令的使用</title>
</head>
<body>
<%
    List<String> list = new LinkedList<>();
%>
</body>
</html>
  • <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>设置了发送给浏览器的内容的类型是一个html文件,编码方式是UTF-8
  • import就是导包

taglib指令

  • <!-- prefix属性用于指定库前缀 --> <!-- uri属性用于指定库的标识 -->
  • <%@taglib uri=“tagLibary” prefix=“prefix”%>

include指令

  • include指令用于引入另一个JSP程序或HTML文件等,格式如下
  • <%@include file=“被包含的文件地址%>
  • JSP引擎会在JSP文件的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工

    在这里插入图片描述
    在这里插入图片描述
    include引入head文件,结果如下
    在这里插入图片描述
    这就是静态包含

jsp:include/jsp:param

  • jsp:include动作用于引入另一个JSP程序或HTML文件等。
  • 执行到include时,被include的文件才会被编译。
  • 如果include的是jsp文件,那它不会被转换成Servlet文件
    include文件修改如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="head.jsp"></jsp:include>
<html>
<head>
    <title>文件引入的使用</title>
</head>
<body>

</body>
</html>

在这里插入图片描述
刷新很多次都可以

include指令和include动作的区别

  • include指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入再编译执行(静态包
    含)。
  • include动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入
    (动态包含,推荐)也就是第二种方式jsp:include
  • include其实就是把其他文件引入到当前文件中

jsp:forward/jsp:param

  • forward动作用于在JSP中实现转发,将请求转发到另一个指定的JSP程序或者Servlet中处理
    在这里插入图片描述
    目标文件target.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>转发的目标文件</title>
</head>
<body>
<h1>服务器转发后到这里</h1>
<%= "获取到的数值为"+request.getParameter("name")%>
</body>
</html>

在这里插入图片描述

JSP内置对象

本身就写好的对象
写JSP代码时可以不需要定义

基本概念

  • 在JSP程序中有9个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量。
  • 在JSP转换成Servlet后,会自动追加这些变量的定义,使用内置对象可以简化JSP的开发

对象名称

在这里插入图片描述

out内置对象

out内置对象是一个缓冲的输出流,用来给客户端输出信息
相关方法
在这里插入图片描述

request内置对象

  • request对象封装的是调用JSP页面的请求信息,它是HttpServletRequest接口的一个实例。
  • 该对象的属性值只在一个请求中保存

常用方法如下:
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>request内置对象的使用</title>
</head>
<body>
<%
    String servletName = request.getServerName();
    System.out.println("获取到的服务器名称为"+servletName);
    int servletPort = request.getServerPort();
    System.out.println("获取到的服务器端口号为:"+servletPort);
%>
</body>
</html>

在这里插入图片描述

response内置对象

  • response对象用于给客户端相应输出处理结果,它是HttpServletResponse接口的一个实例
  • 经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码
    URL

常用方法如下
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>reponse内置对象的使用</title>
</head>
<body>
<%
    //每隔一秒刷新一次
    response.addHeader("refresh","1");
    //获取当前系统时间
    Date d1 = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String format = sdf.format(d1);

%>
<%= "当前时间为;"+ format%>
</body>
</html>

起到一秒刷新一次的效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值