JSP就是Servlet.它是一个类。最终会在访问的是编译成.class文件。
(包含指令,动作)
1.导入包 <%@ page import="包名.类1,包名.类2"%>
2.Url传值
<%String str="12"; int number=Inter.parseInt(str);%>
该数字的平方:<%=number*number%><hr>
<a href="urlp2.jsp?number=<%=number%>"> 到达p2</a>
urlp2.jsp
<% String str=request.getParameter("number");
int muber=Integer.parseInt(str);
%>
该数字的立方为:<%=number*number*number%>
3.设定字符集
<%@ page pageEncoding="编码类型(UTF-8/gbk)"%>
4.设置错误页面
<%@ page errorPage="anErrorPage.jsp"%>
在anErrorPage,jsp页面中设置<%@ page isErrorPage="true"%>
5.设置MIME类型和字符编码
<%page contentType="MIME类型;charset=utf-8"%>
例如<%
contentType
=
"text/html; charset=UTF-8"
%>
6.include指令可以在jsp程序中插入多个外部文件,可以使(jsp,html,java,文本)
<%@ include file="logo.jsp"%>
二.jsp页面元素和指令元素(page include taglib)
1. jsp指令元素有三种:page,include,taglib.(只编译一次即可到处运行)
指令元素主要是用于为转换阶段提供JSP页面的相关信息。指令不会产生任何输入到当前jsp页面中,它置顶了有关页面本身的信息,这些信息在请求之间一直保持不变。指令方法如下:
<%@ 指令名称 属性=属性值 %>
1:page指令:该指令用于整个页面,定义与页面相关的属性,他是JSP页面和容器的通信员,一般放在JSP页面的第一行。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
注意点:import是唯一一个可以重复的属性,如果导入多个包如下:
<%@ page language="java" import="java.util.*,java.io.*,com.keke.util.*" pageEncoding="UTF-8" %>
注意点:
1⃣️:pageEncoding的默认编码是:ISO8859-1
2⃣️:参数的名称对大小写敏感。
inclue指令用于在JSP页面包含一个文件。改文件可以是JSP页面,也可以是HTML网页,或者文本文件或者一段JAVA代码。用它可以简化页面代码和提高代码的重用性。语法如下:
<%@include file="文件的URL路径" %>
注意:在包含的文件中最好不要使用<html></html>,<body></body>标签。
1.include指令(用来包含一个静态的文件)
<%@ 指令名 属性1=“值1” 属性2=“值2” 属性3=“值3”%>
语法<%@include file="URL"%>
date.jsp
<%@
page
import
=
“java.text.SimpleDateFormat,
java.util.*
”
%>
<%@
page
language
=
"java"
contentType
=
"text/html; charset=UTF-8"
pageEncoding
=
"UTF-8"
%>
<%
Date d=
new
Date();
// SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类
SimpleDateFormat sdf=
new
SimpleDateFormat(
"yyyy年MM月dd日"
);
String s=sdf.format(d);
out.println(s);
%>
show.jsp
<%@
page
language
=
"java"
contentType
=
"text/html; charset=UTF-8"
pageEncoding
=
"UTF-8"
%>
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
>
<
title
>
显示时间
</
title
>
</
head
>
<
body
>
<
h1
>
Include指令
</
h1
>
<
hr
>
<%@
include
file
=
"date.jsp"
%>
</
body
>
</
html
>
taglib指令允许页面使用定制的标签或者JSP自身提供的标签:格式如下:
<%@ taglib uri="url" prefix="前缀"%>
如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!--迭代标签-->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><!--国际化标签和数据日期格式化->
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><!--字符串操作标签-->
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %><!--数据库标签-->
<%@ taglib prefix="tm" uri="/WEB-INF/tlds/online.tld" %><!--自定义标签-->
2.jsp注释
html的注释 <!--html--!>
//客户端可见
jsp的注释:<%--html注释--%>
//客户端不可见
jsp脚本注释
//单行注释 /* */多行注释
3.Jsp脚本
<% java片段块代码 %> <%= %> <%! //定义方法和属性,给表达式或片段 %>
在jsp页面中执行的Java代码
语法: <%Java代码%>
脚本是在<% %>里嵌入的Java代码。这里的Java代码和一般的Java代码没有什么区别。只不过放在jsp中的<%java代码%>最终是编译到Servlet的service方法中。
4.jsp声明(
当用户第一次请求一个JSP页面时,首先被执行的方法是(构造方法);)
在Jsp页面中定义变量或者方法
语法; <%! java代码%>
声明:<%! 定义变量属性和方法%>
如 index.jsp
<%!
private int i = 0;
public String getName(){
return "xxxxx";
}
%>
其实这个index.jsp就是一个普通的java类,到时候需要使用这个页面里面的方法,只要通过
<%@include file="index.jsp" %>包含即可。
jsp变量声明(全局变量
和
局部变量
)
全部变量:<%! %>声明的变量在整个jsp页面都有效,会将这些变量作为类的成员变量,这些变量的内存空间知道服务器关闭后才释放。但在该方法内定义的变量只在该方法内有效。
局部变量:<% %>对外部函数是不可见的
5.jsp表达式(Exception),计算表达式,向jsp页面输出表达式的运算结果
在jsp页面中执行的表达式
语法: <%=表达式%>
//表达式不以分号结束
使用JSP脚本元素可以将Java代码嵌入到JSP页面中,这些Java代码将出现在有当前的JSP页面生成的Servlet中,使JSP将静态内容和动态内容分离出来。
表达式:
<%= expression%>
如:<%= user.getName()%>表达式的本质,在讲JSP页面转换成Servlet后,使用Out.println将表达式的值输出。实际上它最终在代码里面的体现是:out.print("xxxx");
6.jsp页面生命周期
jspService( )方法被调用来处理客户端请求
jsp引擎以多线程来处理
如果jsp页面代码改变jsp引擎会重新编译,生成新的字节码文件
jsp引擎以多线程来处理
如果jsp页面代码改变jsp引擎会重新编译,生成新的字节码文件
7.iclude指令和include动作比较
include指令(发生作用的时间(页面转换期间),编译时间稍快,文件的实际内容,主页面和包含页面转换为一个Servlet,只编译一次)
<%@include%> 用户访问一次就编译执行到处可以运行
include动作(发生作用的时间(请求期间),
编译时间较快,页面的输出,主页面和包含页面转换为独立的Servlet,
在用户访问时执行
)
<jsp:include></jsp:inclued> 动态执行--用户每次访问的时候都会加载一次
三.动作元素(include,forword,param)
1.include动作(编译时间较快,页面的输出,主页面和包含页面转换为独立的Servlet
)
<jsp:include page="URL" flush="true|false">
page:要包含的页面 flush:被包含的页面是否从缓2冲区读取
可以在每次客户端发出请求时重新把资源包含进来实时根性.
2.forward动作
<jsp:forward page="URL"/>将请求页面转到另外一个页面
只能在同一个Web应用程序内的资源之间转发请求,可以理解为服务器内部的一种操作.
3.param动作
<jsp:param name="参数名" value="参数值">
常与forward一起使用
6.jsp:useBean 获得javabean的一个实例
jsp:setProperty: 设置javaBean的属性
jsp:getProperty: 获得javaBean的属性