JSP 基础知识

<!-- 以下为指令标识区域 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Scanner" %>
<!-- 以下为HTML代码 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>模拟服务器与浏览器的一次简单交互</title>
</head>
<body>
	<!--  以下为嵌入的java语句 -->
	<%
		Date date = new Date(); // 获取当前时间戳
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 时间日期格式
		String today = sdf.format(date);
		Scanner input = new Scanner(System.in);
		System.out.println("浏览器需要你的名字:");
		String name = input.nextLine();
		System.out.println("浏览器需要你的性别:");
		String sex = input.nextLine();
		System.out.println("浏览器需要你的年龄:");
		int age = input.nextInt();
		input.close();
	%>
	当日时间:<%= today%>
	<br>
	服务器的名字:<%= name %>
	<br>
	服务器的性别:<%= sex %>
	<br>
	服务器的年龄:<%= age %>
</body>
</html>

在这里插入图片描述
JSP指令标识的语法如下:

<%@ 指令名 属性 1="属性值 1" 属性 2="属性值 2"...%>
指令名:用于指定指令名称。
属性:用于指定属性名称,不同的指令包含不同的属性。
属性值:用于指定属性值。

指令标识

page指令

<%@ page attr1="value1" attr2="value2" ...%>

常用属性有15个:

language属性

设置JSP页面脚本语言属性,默认脚本语言为Java

<!-- 例如设置为java语言 -->
<%@ page language="java"%>
extends属性

该属性设置JSP页面继承的Java类

import属性

在JSP中导入类包

<!-- 导入Scanner包 -->
<%@ page import="java.util.Scanner"%>
pageEccoding属性

定义JSP页面的编码格式,即指定文件编码

<!-- 指定为UTF-8编码格式 -->
<%@ page pageEccoding="UTF-8"%>
contentType属性

用于设置JSP页面的MIME类型和字符编码

<!-- 设置JSP页面的MIME类型和字符编码为UTF-8 -->
<%@ page contentType="text/html; charset=UTF-8"%>
session属性

指定JSP页面是否使用HTTP的的session会话对象

<!-- 设置JSP页面不使用HTTP会话对象 -->
<%@ page session="false"%>
buffer属性

用于设置JSP的out输出对象使用的缓存区的大小,默认大小为8kb,且单位只使用kb。

<!-- 设置JSP页面out输出对象的使用缓冲大小为128kb -->
<%@ page buffer="128kb"%>
autoFlush属性

用于设置当JSP页面缓存满时,是否自动刷新缓存,默认值为true

<!-- 设置JSP页面取消自动刷新缓存 -->
<%@ page autoFlush="false"%>
isErrorPage属性

该属性可以将当前的JSP页面设置成错误处理页面来处理另一个JSP页面的错误

<!-- 设置当前JSP页面为错误处理页面 -->
<%@ page autoFlush="true"%>
errorPage属性

用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true

<!-- 设置处理JSP页面异常错误的页面 -->
<%@ page errorPage="error/aErrorPage.jsp"%>

include指令

该指令可以在一个JSP页面中包含另一个JSP页面,但是该指令是静态包含,即相当于一个JSP页面嵌入另一个JSP页面中,因此不能有相同名称的变量。

其语法如下:

<%@ include file="path/test.jsp"%>

taglib指令

声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀

<%@ taglib prefix="tagPrefix" url ="tagURL"%>

脚本标识

JSP表达式

JSP表达式用于向页面中输出信息,其不仅可以插入网页的文本中,用于输出内容,也可以插入HTML标签中设置属性值

<%= 表达式%>

声明标识

用于在JSP页面中定义全局的变量或方法

<%! 声明的变量或者方法的代码%>

举例:

<%! 
   int number = 0;
   int getSum(){
   	number++;
   	return number;
   }
%>
<!-- <%= getSum()>每次刷新页面都会使number+1 -->

代码片段

所谓代码片段就是JSP页面中嵌入的Java代码或者脚本代码

<% 嵌入的java代码或者脚本代码 %>

举例:

<!-- 以下为指令标识区域 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!-- 以下为HTML代码 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>九九乘法表</title>
</head>
<body>
   <!--  以下为嵌入的java语句 -->
   <%! 
   	String getTable(){
   		String str = "";
   		for(int i = 1 ; i<10; i ++){
   			for(int j = 1  ; j<=i ; j++){
   				str += j+"*"+i+"=" +i*j;
   				str += "&nbsp;";
   			}
   			str += "<br>";
   		}
   		return str;
   }
   %>
   <table border="1" style=“font:9px”>
   	<tr><td height = "30" align="center">九九乘法表</td></tr>
   	<tr><td><%= getTable() %></td></tr>
   </table>
</body>
</html>

在这里插入图片描述

JSP注释

HTML 注释

客户端可见

<!-- 这里为注释内容 -->

带有JSP表达式的注释

//单行注释内容

/*
   多行注释内容
*/

/**
* 文档注释
*/

隐藏注释

浏览器中通过源码也无法显示的注释

<%-- 注释内容 -->

动作标识

包含文件标识<jsp:include>

JSP的动作标识<jsp:include>用于向当前页面中包含其它文件,被包含的文件可以是静态文件或者动态文件

<jsp:include page="url" flush="false|true"/>
或者
<jsp:include page="url" flush="false|true">
   子动作标识符<jsp:param>
</jsp:include>

请求转发标识<jsp:forward>

可以将请求转发到其它的Web资源,可以是另一个JSP文件、HTML页面、Serlet等

<jsp:forward page="url">
或者
<jsp:forward page="url">
   <jsp:param>
</jsp:forward>

请求转发标识<jsp:param>

作为其它标识符的子标识符,用于为其它标识传递参数

<jsp:param name="参数名" value="参数值">

out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象

常用方法如下:

void println()  向客户端打印字符串
void clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常
void clearBuffer() 清除缓冲区的内容,如果在flush之后调用不会抛出异常
void flush() 将缓冲区域内容输出到客户端
int getBufferSize() 返回缓冲区的字节大小,如不设缓冲区就为0
int getRemaining() 返回缓冲区还剩余多少可用空间

request对象

客户端请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应

常用方法如下:

String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String,Object) 存储此请求的属性
Object getAttribute(String name) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所使用的端口号
String getCharacterEncoding() 返回字符编码格式
void setCharacterEncoding(String ecoding) 设置请求字符编码格式
int getContentLength() 返回请求体的长度(以字节数)
String getRemoteAddr() 返回发送此请求的客户端的IP地址
String getRealPath(String path) 返回一虚拟路径的真实路径
String getContextPath() 返回上下文路径

response对象

response对象包含了响应客户端请求的有关信息,但在JSP中很少直接用到它

常用方法如下:

String getCharacterEncoding() 返回响应的用的是何种字符编码
void setContentType(String type) 设置响应的MIME类型
PrintWriter getWriter() 返回可以向客户端输出字符的一个对象
sendRedirect(java.lang.String location) 重新定向客户端的请求

请求转发和请求重定向理解

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL会发生改变。
请求转发:服务器行为,request.getRequestDispatch().forward(req,resp)是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
  • 2
    点赞
  • 8
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2020 设计师:CSDN官方博客 返回首页
评论

打赏作者

一夜星尘

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值