目录
一、JSP
1、JSP介绍
- JSP全称Java Server Pages,Java服务器页面,本质是Servlet
- JSP是J2EE的功能模块,由Web服务器执行
- JSP可以将java代码与HTML分离,降低动态网页开发难度
2、JSP的执行过程
JSP–>转译为:Servlet源代码–>编译为:Servlet字节码
3、JSP基本语法
(1)JSP代码块
- JSP代码块用于在JSP中嵌入Java代码
- JSP代码块语法:
<% java代码块 %>
- 例如:
<%System.out.println("Hello World!") %>
(2)JSP声明构造块
- JSP声明构造块用于声明变量或方法
- JSP声明构造块语法:
<% 声明语句 %>
- 例如:
<% public int add(int a,int b)(return a+b;) %>
(3)JSP输出指令
- JSP输出指令用于JSP页面中显示java代码执行结果
- JSP输出指令语法:
<%=java代码 %>
- 例如:
<%="<b>" + name + "</b>" %>
(4)JSP处理指令
- JSP处理指令用于提供JSP执行过程中的辅助信息
- JSP处理指令语法:
<%@jsp指令 %>
- 例如:
<%@page import="java.util.*" %>
常用处理指令
<%@page %>
定义当前JSP页面全局设置<%@include %>
将其他JSP页面与当前JSP页面合并<%@taglib %>
引入JSP标签
二、公司薪资制度
新入职员工:基本工资1500元
工作5年内员工:每年工资上浮基本工资的10%
工作5-10年员工:每年工资上浮基本工资的20%
工作10年以上:每年工资上浮基本工资的25%
要求列出工资试算表。
1、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>
</table>
</body>
</html>
2、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>
<%
for(int i=0;i<=30;i++){
out.println("<tr>");
out.println("<td>" + i + "</td>");
int sal=0;
if(i<=5){
sal = 1500 + 150*i;
}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>
通过if,else-if判断语句实现
3、网页效果
![](https://img-blog.csdnimg.cn/ce1aea6704c84d2ebdb16861816b774d.png)
![](https://img-blog.csdnimg.cn/4eaef3c1a09d48e38578e1d024d9e2bf.png)
三、质数算法
任务要求
- 列出1000内的质数(除1以外,只能被1和自身整除)
- 要求1:使用List保存所有有效的质数
- 要求2:将结果打印到页面,格式为"<h3>X是质数</h3>"
1、prime.jsp页面
<%@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>");
%>
<h3 style="color:green;"><%=p %>是质数</h3>
<%
}
%>
注解:
- 质数:通过循环寻找只有能被自己整除的数
<%@page import="java.util.*" contentType="text/html;charset=utf-8" %>
导入包,实现数组的创建,让中文能够正常显示<%! boolean isPrime(int num){}
声明判断质数的方法,为JSP构造块<%=p %>
为JSP输出指令
2、网页输出效果
![](https://img-blog.csdnimg.cn/7e105710613943a5b3c488ace65eff3b.png)
四、JSP页面重用
在新闻网页中有目录不需要更改的,我们可以采用JSP页面重用
1、代码相关
news.jsp页面
<%@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" %>
header.jsp页面
<%@page contentType="text/html;charset=utf-8"%>
要闻|推荐|财经|体育|娱乐|
footer.jsp页面
<%@page contentType="text/html;charset=utf-8"%>
<hr/>
CopyRight 1999-2022
video.jsp页面
<%@page contentType="text/html;charset=utf-8"%>
<%@include file="include/header.jsp" %>
<h1>视频</h1>
<%@include file="include/footer.jsp" %>
注解:
<%@page contentType="text/html;charset=utf-8"%>
让中文正常显示,page定义当前JSP页面全局设置<%@include file="include/header.jsp" %>
<%@include file="include/footer.jsp" %>
JSP重用,include将news.jsp与header.jsp、footer.jsp进行合并
2、网页效果
![](https://img-blog.csdnimg.cn/1a38d508b4bd4931b90fdeb6edea1c37.png)
![](https://img-blog.csdnimg.cn/41d65065a44c4945880ffb6bb7116838.png)
可以看到目录部分没变,只有正文部分进行了改变