1.jsp概述
- JSP(全称Java Server Pages),是一种动态网页开发技术。它既可以使用HTML标签来写页面,也可以写Java代码。其本质就是一个Servlet
2.jsp页面的访问过程
- 当客户端发送请求访问服务端的
index.jsp 页面 - 服务器内部会把
.jsp 文件翻译成.java 文件 - 再编译
.java 文件生成.class 文件, - 由字节码完成请求与响应的操作(其实这个字节码就是Servlet)

3.jsp语法
<1>注释
<%--1.这是注释--%>
<2>java代码块
<%
System.out.println("Hello Jsp");
out.println("Hello Jsp<br/>");
String str ="你好";
out.println(str);
%>
<3>jsp表达式
<%=“Hello”%>相当于 out.println (Hello");
<%="Hello </br>"%>
<4>jsp中的声明(变量或方法)
- 如果加!代表的是声明的是成员变量
- 如果不加!代表的是声明的是局部变量
- 方法体内不能打印输出
<% String s ="123";%>
<%! String s ="abc";%>
<%="局部变量"+s%>
<%="成员变量"+this.s%>
<%!public void method(){
String m ="def";
} %>
4.jsp指令
<1>errorPage【界面出现异常则跳转到指定页面】
<%--导包--%>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%int a =1/0;%>
<%ArrayList<Object> list = new ArrayList<>();%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isErrorPage="true" %>
<html>
<head>
<title>页面错误</title>
</head>
<body>
<strong>不好意思,界面出错了<strong/><br/>
<img src="img/nan.png" width="25%">
</body>
</html>
<2><%@include file=包含的页面%>【在当前页面输入包含页面则可以使用该页面的属性和值】
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--include指令--%>
<%@include file="include.jsp"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=s%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>被包含的页面</title>
</head>
<body>
<% String s ="Hello";%>
</body>
</html>
<3>taglib指令:可以引入外部标签库【EL表达式(JSTL)】
- <%@taglib uri=标签库的地址prefix=前缀名称%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>流程控制</title>
</head>
<style>
table {
text-align: center;
}
</style>
<body>
<%--
<c:if test="" 当条件判断
<c:choose></c:choose> 多条件判断
<c:forEach 遍历
需求1:将学生信息遍历显示到table表格中。
需求2:奇数行数据背景色是pink粉色,偶数行数据背景色是gray灰色。
--%>
<%
Student student1=new Student("张三",20);
Student student2=new Student("张益达",22);
Student student3=new Student("张三",20);
ArrayList<Student> list=new ArrayList<>();
list.add(student1);
list.add(student2);
list.add(student3);
request.setAttribute("students",list);
%>
<table align="center" border="1" width="40%" cellspacing="0">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${students}" var="stu" varStatus="statu">
<c:if test="${statu.count%2==1}">
<tr align="center" style="background-color: pink">
<td>${statu.count}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
</tr>
</c:if>
<c:if test="${statu.count%2==0}">
<tr align="center" style="background-color: gray">
<td>${statu.count}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>
【多标签可以同时导入,下面为jsp page属性】 
5.jsp四大域对象

5.MVC模型
<1>JSP的演变
- 在早期JavaEE开发是没有JSP技术的,只有使用Servlet往浏览器输出HTML标签和内容数据。在Java代码中拼接HTML代码非常痛苦。
- 后来有了JSP技术,简化了Servlet的开发。可是又延伸出另一个问题,在HTML页面中嵌套了过多的Java代码,不利于阅读和维护。
- 为了解决Java代码和HTML代码耦合性强的问题,JavaWeb项目开发引入了MVC开发模式,从而把页面展示和业务逻辑分离。采用MVC模式让程序设计更加合理。
<2>MVC介绍 - Module(模型层): 模型层用于封装数据(JavaBean对象),和一些业务逻辑处理。
- Controller(控制层): 它控制着数据的流向
1.先接受用户的请求数据 2.将数据交给模型层处理 3.将处理后的数据交给视图层 - View(视图层):视图层用于展示数据

|