目录
一、简介:
1.为什么需要JSP?
因为Servlet的缺点:
- 静态HTML和动态的Java代码混合在一起,难以维护。
- Servlet利用out.println()语句输出,开发效率低下。
- Eclipse很难在开发过程中发现错误,调试困难。
2.JSP:
- 全称:Java Server Pages( 即Java服务器页面)
- 是J2EE的功能模块,由Web服务器(Tomcat)执行。
- 作用:降低动态网页的开发难度。
3.JSP特点:
- 使用简单,短时间可上手。
- JSP将Java代码与HTML分离,降低开发难度。
- JSP本质是Servlet 。
4.JSP运行要求:
- 可正常运行的Tomcat。
- 所有JSP页面扩展名必须是.jsp。
- JSP页面应放在Web应用程序目录下。
例:第一个jsp页面
公司薪资制度:新入职员工:基本工资是15000元;入职5年员工:每年工资上涨基本工资的10%;入职5-10年:每年工资上涨基本工资的20%;入职10年以上:每年工资上涨基本工资的25%。要求列出工资试算表。
salary.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<th>year</th>
<th>salary</th>
</tr>
<tr>
<td>0</td>
<td>1500</td>
</tr>
<tr>
<td>1</td>
<td>1650</td>
</tr>
<tr>
<td>2</td>
<td>1800</td>
</tr>
<tr>
<td>3</td>
<td>1950</td>
</tr>
<tr>
<td>4</td>
<td>2100</td>
</tr>
<tr>
<td>5</td>
<td>2250</td>
</tr>
<tr>
<td>6</td>
<td>2550</td>
</tr>
<tr>
<td>7</td>
<td>2850</td>
</tr>
<tr>
<td>8</td>
<td>3150</td>
</tr>
<tr>
<td>9</td>
<td>3450</td>
</tr>
<tr>
<td>10</td>
<td>3750</td>
</tr>
<tr>
<td>11</td>
<td>4125</td>
</tr>
</table>
</body>
</html>
可见此时html代码编写太繁琐。
改用jsp代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<th>year</th>
<th>salary</th>
</tr>
<tr>
<td>0</td>
<td>1500</td>
</tr>
<tr>
<td>1</td>
<td>1650</td>
</tr>
<!-- Java代码块 -->
<%
for (int i = 0; i <= 11; i++) {
out.println("<tr>");
out.println("<td>" + i + "</td>");
int salary = 0;
if (i <= 5) {
salary = 1500 + i * 150;
} else if (i > 5 && i <= 10) {
salary = 1500 + 150 * 5 + 300 * (i - 5);
} else if (i > 10) {
salary = 1500 + 150 * 5 + 300 * 5 + 375 * (i - 10);
}
out.println("<td>"+salary+"</td>");
out.println("</tr>");
}
%>
</table>
</body>
</html>
5.JSP的执行过程:
6.JSP的转译过程:
二、JSP的基本语法:
- JSP代码块
- JSP构造声明块
- JSP输出指令
- JSP处理指令
1.JSP代码块:
- 用于在JSP中嵌入Java代码。
- 语法:<% java代码 %>
- 如:<%System.out.println("Hello!"); %>
注意System.out.println是向Java的控制台输出,而out.println是向当前页面输出。
2.JSP构造声明块:
- 应用声明变量或方法。
- 语法:<%! 声明语句 %>
- 如:<%! public int add(int a,int b){return a+b; %>
3.JSP输出指令:
- 用于在JSP页面显示java代码执行结果。
- 语法:<%= java代码 %>
- 如:<%= "<b>"+name+"</b>" %> ,相当于out.println的简写。
4.JSP处理指令:
- 用于提供JSP执行过程中的辅助信息。
- 语法:<%@ jsp指令 %>
- 如:<%@ page import="java.util.*" %>
- JSP常用处理指令:
指令 | 用法 |
<%@ page %> | 定义当前JSP全局设置 |
<%@ include %> | 将其他JSP页面和当前JSP页面合并 |
<%@ taglib %> | 引入JSP标签库 |
5.JSP注释:
- <%--注释--%> JSP注释,被注释语句不做任何处理。
- //注释 或 /*注释*/ 用于注释<%%>java代码块,被注释代码不执行。
- <!--注释--> HTML注释,被注释语句不会被浏览器解释。
例:质数算法
要求:列出1000内的质数。使用List存储所有有效的质数。将结果打印到页面,格式为:<h1>X是质数</h1> 。
<%@page import="java.util.*" contentType="text/html;charset=utf-8"%>
<%!boolean isPrime(int x) {
boolean flag = true;
for (int j = 2; j < x; j++) {
if (x % j == 0) {
flag = false;
break;
}
}
return flag;
}
%>
<%
List<Integer> prime = new ArrayList();
//0和1不是质数
for (int i = 2; i <= 1000; i++) {
boolean flag = isPrime(i);
if (flag == true) {
prime.add(i);
}
}
%>
<%
for (int m : prime) {
/* out.print("<h1>" + m + "是质数</h1>"); */
%>
<h1 style="color: green"><%=m%>是质数</h1>
<%
}
%>
三、JSP页面重用:
例:
<%@ page contentType="text/html; charset=utf-8"%>
<%@include file="include/header.jsp"%>
<%
out.println("<h1>新闻标题</h1>");
out.println("新闻正文");
%>
<%@include file="include/footer.jsp"%>
header.jsp:
<%@ page contentType="text/html; charset=utf-8"%>
要闻推荐|财经|娱乐
footer.jsp:
<%@ page contentType="text/html; charset=utf-8"%>
<hr>
Copyright 2000-2021