Jsp 全名为 java server pages,中文名java服务页面,其根本是一个简化的servlet 设计,它是有sun microsystems 公司倡导、许多公司一起建立的一种动态网页技术标准。
特点:本质行还是Servlet
跨平台,一次编写处处运行
组件跨平台
健壮性和安全性
tomcat 只认识servlet,在项目中的jsp 文件 需要经过tomcat内部 接收 并转成servlet文件(底层 为Jspservlet引擎,吧jsp文件读取,经过jspservlet 的I/O流操作,读出来时 为servlet 文件)
JSP的三种注释:
符号:<%-- --%>
1.前段语言注释:会被转译,也会被发送,但是不会被浏览器执行。
2.java语言注释:会被转译,但是不会被servlet 执行
3.jsp 注释:不会被转译
JSP的page指令学习:
<%@page 属性名=“属性值” 属性名=“属性值”....%>
language:声明jsp 要被转译的语言。
import:声明转译的java文件呀导入的包,不同的包会用逗号隔开。
pageEncoding: 设置jsp 文件的数据编码格式;
contentType="text/html;charset=utf-8" :设置jsp数据响应给浏览器时,浏览器的解析和编码格式;
session: 设置转译的servlet中是否开启session支持,默认开启,true表示开启,false表示关闭。
errorPage:设置jsp 运行错误跳转页面。
extendPage:设置jsp转译的java文件要继承的父类(包名 + 类名)。
以上 作用:配置jsp文件的转译相关的参数。
Jsp局部代码块:
特点:局部代码块中声明的java代码会原样转译到jsp对应的servlet文件的_JspService方法中
代码块中声明的变量都是局部变量
使用:<% java代码 %>
缺点:使用局部代码块在jsp 中进行逻辑判断,书写麻烦,阅读困难。
所以逻辑代码一般用servlet处理。
开发使用:使用servlet 进行逻辑处理,使用jsp进行页面展现。
全局变量:
特点:声明的java 代码作为全局代码转译到对应的servlet类中。
使用:<%! 全局代码 %>
注意:全局代码块声明的代码,需要使用局部代码块调用;
Jsp脚本端语句:
特点:帮助我们快速获取变量或者方法的返回值作为数据响应给浏览器;
使用: <%=变量名或者方法%>
注意:不要在变量名或方法后 加分号; ;
Jsp的静态引入和动态引入:
静态引入:
使用:<%@include file="要引入的jsp文件路径" %>
特点:会将引入的jsp和当前的jsp文件转译成一个java文件使用。在网页中也就显示了 合并后的显示。
注意:静态引入 引入的jsp 文件不会单独转译成java(Servlet)文件,在tomcat 的work中可查看_jsp.java 文件查看。
当前文件和静态引入的jsp 文件中不能够使用 java 代码块声明 同名变量。
如 int a = 2; String a ="haha"; 也不行,因为变量下需要内存地址,而内存地址和变量相关,和变量类型无关。(如门牌号)
动态引入:
使用: <jsp:include page="要引入的jsp文件路径"></jsp:include>
特点:会将引入的jsp文件单独转译,在当前文件转译好的java文件中调用 引入的jsp 文件的转译文件,在网页中也就显示了 合并后的显示。
注意:动态引入 允许文件中 声明同名变量;因为动态 相当于 两个文件。
优点:降低jsp代码的冗余,便于维护升级;
Jsp的转发标签:
使用:<jsp:forward page="要引入的jsp文件路径"></jsp:forward>
特点:一次请求,地址栏信息改变
注意:
在转发标签的两个标签中除了写<jsp:param value="aaa" name="str"/> 子标签不会报错,其他任意字符都会报错
name属性为附带的数据的健名
value为附带的数据内容 ,会将数据以?的形式拼接在转发路径的后面。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page errorPage="error.jsp" %>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h3>jsp基本语法学习</h3>
<hr />
<%
//java语言
String str = "jsp逻辑代码块很麻烦";
int a = 2;
if(a>2){
%>
<b>jsp真的很简单</b>
<% }else{ %>
<i> <%= str %></i>
<%test();} %>
<!-- 全局代码块 -->
<%!
int b = 5;
public void test(){
System.out.println("全局代码块");
}
%>
<!-- jsp的静态引入 -->
<%@include file="includeStatic.jsp" %>
<!-- jsp的动态引入 -->
<jsp:include page="includeActive.jsp"></jsp:include>
<!-- 转发标签的引入 -->
<jsp:forward page="fowword.jsp">
<jsp:param value="aaa" name="str"/>
</jsp:forward>
</body>
</html>