Jsp基础
1)Jsp的执行过程 :
- tomcat服务器完成 :
- jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法
2)Jsp语法
- jsp表达式: <%=变量或表达式%> 向浏览器输出变量或表达式计算的结果
- jsp脚本: <% java代码 %> 执行java代码 原理:翻译到_jspService()方法中
- jsp声明: <%! 变量或方法 %> 声明jsp的成员变量或成员方法
- jsp注释: <%!-- jsp注释 --%> 用于注释jsp代码, 不会翻译到java文件中, 也不会执行
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Jsp语法</title>
</head>
<body>
<!-- jsp表达式 -->
<%
//变量
String name = "eric";
int a = 10;
int b =20;
%>
<%=name %>
<br/>
<%=(a-b) %>
<hr/>
<!-- jsp脚本 -->
<%
//生成随机数
Random ran = new Random();
float num = ran.nextFloat();
%>
随机小数:<%=num %>
<hr/>
<!-- 穿插html代码 -->
<%
for(int i=1;i<=6;i++){
%>
<h<%=i %>>标题<%=i %></h<%=i %>>
<%
}
%>
<hr/>
<!-- 练习: 使用脚本和html代码显示99乘法表 -->
<%
for(int i=1;i<=9;i++){//行
for(int j=1;j<=i;j++){//公式
%>
<%=i %> x <%=j %>=<%=(i*j) %>
<%
}
%>
<br/>
<%
}
%>
<%
String age = "20";
/* 脚本中不能声明方法
public String getAge(){
return age;
}
*/
%>
<!-- jsp声明 -->
<%!
//变量
String name = "jacky";
public String getName(){
return name;
}
/*jsp声明中不能重复定义翻译好的一些方法
public void _jspInit(){
}
*/
%>
<!-- html注释 -->
<%-- <jsp:forward page="/01.hello.jsp"></jsp:forward> --%>
<%-- jsp注释 --%>
</body>
</html>
3)jsp的三大指令
- include指令 : 用于包含其他页面 (原理: 先合并再翻译, 叫静态包含)
<%@include file="common/header.jsp"%>
- page指令 : 告诉tomcat服务器如何把jsp文件翻译成java文件
- language : 翻译的动态语言
- import : 类导入
- jsp文件编码问题:
1. pageEncoding: 告诉tomcat服务器使用什么编码翻译jsp文件(jsp->java文件)
2. contentType: tomcat服务器发送给浏览器的数据编码(tomcat服务器->浏览器)
<%@ page
language="java"
import="java.util.*,java.text.*"
pageEncoding="utf-8"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page指令</title>
</head>
<body>
<%
new Date();
new SimpleDateFormat();
%>
老王
</body>
</html>
- 异常错误相关的:
1. errorPage: 指定当前jsp页面的错误处理页面
2. isErorrPage: 指定当前页面是否为错误处理页面。false->不是错误处理页面,则不能使用exception内置对象; true->错误处理页面, 可以使用exception内置对象
- 配置全局的错误处理页面 :
<!-- 全局错误处理页面配置 -->
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
- session : 是否开启session功能。false->不能用session内置对象;true->可以使用session内置对象
- buffer : jsp页面的缓存区大小
- isELIgnore : 是否忽略EL表达式
- taglib指令
Jsp最佳实践
- Servlet技术: 开发动态资源。是一个java类,最擅长写java代码
- jsp技术: 开发动态资源。通过java代码最擅长输出html代码。
- 在web项目中涉及到逻辑:
1)接收参数 servlet做
2)处理业务逻辑,返回结果 servlet做
3)显示数据到浏览器 jsp做
4)跳转到其他页面 servlet做 - servlet+jsp模式 : servlet的数据->jsp页面, 使用域对象 共享数据
- servlet: 接收参数; 处理业务逻辑; 把结果保存到域对象中; 跳转到jsp页面
- Jsp : 从域对象取出数据, 把数据显示到浏览器