JSP入门

JSP入门

  1. 了解JSP的用途
  2. 了解JSP执行原理
  3. 掌握JSP基本语法

1. 为什么引入JSP?

Servlet开发一个网页,主要使用的就是out.println(),但如果全部都使用out.println()工作量就太大了。

Servlet的缺点:
静态的HTML和动态的Java代码混合在一起,难以维护
Servlet使用out.println()语句输出,开发效率低下
Eclipse很难在开发中发现错误,调试困难

2. JSP介绍

  1. JSP的全称是(Java Server Pages),Java服务器页面
  2. JSP是J2EE的功能模块,由Web服务器执行
  3. JSP的作用就是降低动态网页开发难度

- JSP的特点

  1. JSP使用简单,短时间便可上手
  2. JSP可将Java代码与HTML分离,降低开发难度
  3. JSP本质就是Servlet

3. JSP运行要求

  1. 可正常运行的Tomcat
  2. 所有JSP页面的扩展名必须是.jsp
  3. JSP页面应该放在WEB应用程序目录下面

4. 第一个JSP

案例描述:
公司的薪资制度:新入职员工:基本工资1500元;工作五年内员工:每年工资上浮基本工资的10%;工作5~10年员工:每年工资上浮基本工资的20%;工作10年以上:每年工资上浮基本工资的25%。

  1. 先在Web Content下新建HTML,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> 

显示:alt

如果有30多年的老师傅这样的写法很繁杂,所以我们把静态HTML改成动态的JSP
JSP语法块代码:<% %> 在中间填写Java代码
2.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table>
		<tr>
			<th>year</th>
			<th>salary</th>
		</tr>
		
		<%
			for (int i =0; i <= 50; i++){
				out.println("<tr>");
				out.println("<td>"+ i + "</td>");
				out.println("<td>--</td>");
				out.println("</tr>");
			}
		%>
		
	</table>
</body>
</html> 

显示:alt

修改代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table>
		<tr>
			<th>year</th>
			<th>salary</th>
		</tr>
		
		<%
			for (int i =0; i <= 50; i++){
				out.println("<tr>");
				out.println("<td>"+ i + "</td>");
				int sal = 0;
				if (i<= 5){
					sal = 1500 + i * 150;
				}else if (i > 5 && i <=10){
					sal = 1500 + 150 * 5 + 300 * (i-5);
				}else if (i > 10){
					sal = 1500 + 150 * 5 + 300 * 5 + 375 * (i - 10);
				}
				out.println("<td>" + sal +"</td>");
				out.println("</tr>");
			}
		%>
		
	</table>
</body>
</html> 

显示:alt

JSP的执行过程

alt
alt

5. JSP的基本语法

  1. JSP代码块
  2. JSP声明构造块
  3. JSP输出指令
  4. JSP处理指令

A .JSP代码块

  1. JSP代码块用于在JSP中嵌入Java代码
  2. JSP语法块代码:<% Java代码 %>
  3. 区别System.out.print()oue.print():一个是向控制台输出,一个是向当前页面输出。

B. JSP声明构造块

  1. JSP声明构造块用于声明变量或方法
  2. JSP声明构造块语法:<%! 声明语句 %>
  3. 例如:<%! public int add(int a,int b){return a+b;}%>

C. JSP输出指令

  1. JSP输出指令用于在JSP页面中显示Java代码的执行结果
  2. JSP输出指令语法:<%= Java代码 %>
  3. 例如:<%= "<b>" + name + "</b>"%>,这里代码含义是将name值加粗显示在页面里

D. JSP处理指令

  1. JSP处理指令用于提供JSP执行过程中的辅助信息
  2. JSP处理指令语法:<%@ JSP指令 %>
  3. 例如:<%@ page import="java.util.*"%>,这里的代码含义是在当前页面导入util包
    JSP中常用的处理指令:
    | 代码 | 含义 |
    | -------- | :----- |
    |<%@ page %> | 定义当前JSP页面全局设置 |
    |<%@ include %>| 将其他JSP页面与当前JSP页面合并|
    |<%@ taglib %>| 引入JSP标签库|

E. JSP中注释的区别

代码含义
<%–注释–%>JSP注释,被注释语句不被处理
//、 /……/用于注释<% %>Java代码,注释代码不被执行
<!–HTML–>HTML注释,被注释的语句不会被浏览器解释

6. JSP综合训练:质数训练

题干:列出1000内的质数(除1以外,只能被1和自身整除的自然数)要求:

  1. 使用List保存所有有效的质数
  2. 将结果打印到页面,格式为:“

    X是质数

代码:

<%
	for (int i =2; i <= 1000; i++){
		boolean flag = true;
		for (int j = 2; j < i; j++){
			if (i % j == 0){
				flag = false;
				break;
			}
		}
		
		if (flag == true){
			out.println("<h1>"+ i + "</h1>");
		}
	}


%>

结果:alt

优化:

<%@page import="java.util.*"%>

<%!
	boolean isPrime(int num){
		boolean flag = true;
		for (int j = 2; j < num; j++){
			if (num % j == 0){
				flag = false;
				break;
			}
		}
		return flag;
	}
%>

<%
	List<Integer> primes = new ArrayList();
	for (int i =2; i <= 1000; i++){
		boolean flag = isPrime(i);
		if (flag == true){
			//out.println("<h1>"+ i + "</h1>");
			primes.add(i);
		}
	}
%>

<%
	for (int p :primes){
		out.println("<h1>"+ p + "是质数</h1>");
	}
%>

alt

为什么出现乱码?因为在Tomcat中默认字符集是ISO-8859-1,即欧洲字符集,不支持中文,所以要改字符集。

再优化:

<%@page import="java.util.*" contentType="text/html;charset=utf-8"%>

<%!
	boolean isPrime(int num){
		boolean flag = true;
		for (int j = 2; j < num; j++){
			if (num % j == 0){
				flag = false;
				break;
			}
		}
		return flag;
	}
%>

<%
	List<Integer> primes = new ArrayList();
	for (int i =2; i <= 1000; i++){
		boolean flag = isPrime(i);
		if (flag == true){
			//out.println("<h1>"+ i + "</h1>");
			primes.add(i);
		}
	}
%>

<%
	for (int p :primes){
		//out.println("<h1>"+ p + "是质数</h1>");
%>
	<h1 style="color:blue;"><%=p %>是质数</h1>
<%		
	}
%>


结果:alt

7. JSP页面重用

很多网站的页头、页脚是不变的,所以使用JSP重用指令便捷完成这一操作。

<%@page contentType="text/html;charset=utf-8"%>
要闻|推荐|财经|娱乐
<%
	out.println("<h1>新闻标题</h1>");
	out.println("<p>新闻正文</p>");


%>

<hr/>
Copyright 1999-2021

显示:alt

这样页头、页脚的代码复用率不高,我们使用include代码进行优化:

  1. 先在WebContent里新建文件夹include用于存放页头和页脚
  2. 在文件夹里创建页头和页脚的jsp文件,代码如下:
<%@page contentType="text/html;charset=utf-8"%>
要闻|推荐|财经|娱乐
<%@page contentType="text/html;charset=utf-8"%>
<hr/>
Copyright 1999-2050
  1. 在新闻页面引入页头和页脚:
<%@page contentType="text/html;charset=utf-8"%>
<%@include file="include/header.jsp" %>
<%
	out.println("<h1>新闻标题</h1>");
	out.println("<p>新闻正文</p>");


%>
<%@include file="include/footer.jsp" %>

结果:alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值