JSP本质上就是servlet,JSP就是HTML+JS+CSS+JAVA的文件
为什么要有JSP:JSP主要负责与用户进行交互,将最终的界面呈现给用户
当服务器接收到一个jsp后缀的请求时,会将该请求交给jsp引擎去处理,每一个jsp页面第一次被访问的时候,JSP引擎会将它翻译为一个servlet文件,再由web容器调用servlet完成相应的部署。
单纯从开发的角度来看:jsp就是在HTML中嵌入java程序
三种嵌入方式:
1.jsp脚本,执行java逻辑代码
<%
String srt = "hello world";
%>
2.jsp声明,定义Java方法
<%!
public String test(){
String str = "hello world";
return str;
}
%>
3.jsp表达式,把Java对象直接输出到HTML页面中
//输出到HTML文件
<%=str%>
测试:
<%
List<String> name = new ArrayList<>();
name.add("张三");
List<Integer> age = new ArrayList<>();
age.add(22);
%>
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<tr>
<td>
<%=name.get(0)%>
</td>
<td>
<%=age.get(0)%>
</td>
</tr>
</table>
运行结果:
改良:嵌入Java的for循环
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
for(int i=0;i<name.size();i++){
%>
<tr>
<td>
<%=name.get(i)%>
</td>
<td>
<%=age.get(i)%>
</td>
</tr>
<%
}
%>
改良:
创建一个实体类
package test;
public class Users {
private String username;
private Integer age;
public Users(String username,Integer age){
this.username=username;
this.age=age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
jsp优化:
<%
List<Users> list = new ArrayList<>();
list.add(new Users("张三",21));
list.add(new Users("李四",18));
%>
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
for(int i=0;i<list.size();i++){
%>
<tr>
<td>
<%=list.get(i).getUsername()%>
</td>
<td>
<%=list.get(i).getAge()%>
</td>
</tr>
<%
}
%>
</table>