Web学习笔记3
一、JSP介绍
-
JSP 本质上就是⼀个 Servlet,JSP 主要负责与⽤户交互,将最终的界⾯呈现给⽤户。JSP = HTML+JS+CSS+Java 的混合⽂件。
HTML+JS+CSS搭建网页基本元素,java填充数据
-
当服务器接收到⼀个后缀是 jsp 的请求时,将该请求交给 JSP 引擎去处理,每⼀个 JSP ⻚⾯第⼀次被访问的时候,JSP 引擎会将它翻译成⼀个 Servlet ⽂件,再由 Web 容器调用 Servlet 完成响应。
-
单纯从开发的⻆度看,JSP 就是在 HTML 中嵌⼊ Java 程序。
-
java程序与客户端交互,只能通过Servlet
-
将html代码写到JSP文件里面,JSP文件再自动转成Servlet,Servlet再通过writer方法,将一条条信息输出,其中在Tomcat的文件夹下,有一个work文件夹,就是存放JSP转Servlet。
二、为什么不直接写html文件?
如下,直接编写一个test_02.html文件,可以在浏览器被访问
那为什么不直接编写html文件,要大费周章的写JSP呢?
因为在html文件下是无法写入java程序的,而在JSP中就可以写入。
三、HTML 中嵌入 Java 程序的三种方式
1. JSP 脚本,执行 Java 逻辑代码
<%
Java代码
%>
举例:
这里,在test.jsp中的
String str =“爱吃凉拌辣芒果”;
System.out.println(str);
在转化成Servlet之后,在控制台输出
2. JSP 声明:定义 Java ⽅法
<%!
声明 Java ⽅法
%>
举例:
3. JSP 表达式:把 Java 对象直接输出到 HTML 页面中
<%= Java变量 %>
举例:
结合以上两步
4. 综合举例
(1)输出一个表格信息
<%
ArrayList<String> name = new ArrayList<>();
name.add("大志");
name.add("芒果");
name.add("妹子");
%>
<%
ArrayList<Integer> age = new ArrayList<>();
age.add(18);
age.add(19);
age.add(16);
%>
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<tr>
<td>
<%=name.get(0)%>
</td>
<td>
<%=age.get(0)%>
</td>
</tr>
<tr>
<td>
<%=name.get(1)%>
</td>
<td>
<%=age.get(1)%>
</td>
</tr>
<tr>
<td>
<%=name.get(2)%>
</td>
<td>
<%=age.get(2)%>
</td>
</tr>
</table>
(2)优化后
<%
ArrayList<String> name = new ArrayList<>();
name.add("大志");
name.add("芒果");
name.add("妹子");
%>
<%
ArrayList<Integer> age = new ArrayList<>();
age.add(18);
age.add(19);
age.add(16);
%>
<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>
<%
}
%>
</table>
(3)再次优化后
<%
ArrayList<User> users = new ArrayList<>();
users.add(new User("大志",18));
users.add(new User("芒果",20));
users.add(new User("梅子",16));
%>
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
for (int i = 0; i < users.size(); i++) {
%>
<tr>
<td>
<%=users.get(i).getName()%>
</td>
<td>
<%=users.get(i).getAge()%>
</td>
</tr>
<%
}
%>
</table>
笔记部分来自韩顺平老师