JSP概述
全名:Java Server Page
中文名称:Java服务器页面
1.jsp:来替换servlet 的页面展示,servlet 也可以写网页的内容、页面的展示,servlet 就用于来处理请求与响应
2.运行在服务器的页面,其实就是一个简化的 Servlet 设计
3.jsp:会被编译成:index_jsp
HttpJspBase 是 HttpServlet 的子类
_jspService() 就是 service 的方法
JSP 的脚本
JSP 的使用步骤
1.导入 jar 包,添加依赖
2.添加指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
语法格式
1.<% 编写java代码 %>
2.<%! 1.变量是成员变量 2.可以申明方法 %>
3.<% = %>:输出,类似于out.print()
注意点:
1.小脚本不能写标签,只能写java代码,可以混合使用
2. jsp 中的注释 <%-- -%>在网页中不会显示注释
JSP 的三大指令
1.page 指令:<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
==>>contentType:表示页面的类型,编码格式(默认就是UTF-8) ==>>language:表示语言
==>>import:表示导包
==>>errorPage=“error.jsp”:界面发生异常所跳转的界面 ==>>pageEncoding=“UTF-8”:设置编码格式
==>>autoFlush=“true”:是否自动来刷新这个界面
2 <%@include file=""%>:一般用于引入公共的界面,file 的值就是文件的路径
3.<%@taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>:引入第三方的标签库,prefix:设置的名字,uri:表示可以引入的标签地址
jsp 与 servlet 的关系
1.jsp 就是一个特殊的servlet,主要是做页面展示
2.servlet 用于来处理请求与响应
EL 表达式
EL 的作用
1.使用el表达式可以获取到作用域下的值
2.可以做一些基本上的运算
3.避免一些错误的产生
4.减少页面的java代码量
EL语法
1.获取简单的键值对:$ {键}
2.对象的获取:$ {user.uname}
注意:这个对象必须给其set、get方法
3.获取数组: $ {str[0]}
4.获取map对象的值:$ {map.key2}
注意:前后的泛型都必须给一致
5.获取集合:$ {list.get(0)} || $ {list[0]}
6.获取集合对象的语法: $ {userList[0].uname}
JSP代码
<%@ page import="com.offcn.entity.User" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/12/24 0024
Time: 14:03
To change this template use File | Settings | File Templates.
--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--获取简单的键值对--%>
<%request.setAttribute("aa","aaaa");%>
<%--获取对象--%>
<%
User user = new User();
user.setUname("李四");
user.setUpwd("123");
request.setAttribute("user",user);
%>
<%--获取数组--%>
<%
String[] str = {"123","345","546"};
request.setAttribute("str",str);
%>
<%--获取map对象的值--%>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("key1","value1");
map.put("key2","value2");
request.setAttribute("map",map);
%>
<%--获取List集合--%>
<%
List<String> list = new ArrayList<String>();
list.add("中国");
list.add("美国");
request.setAttribute("list",list);
%>
<%--获取集合中的对象--%>
<%
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setUname("赵茜");
user1.setUpwd("666");
userList.add(user1);
userList.add(user);
request.setAttribute("userList",userList);
%>
${aa}
${user.uname}
${str[1]}
${map.key2}
${list.get(0)}
${list[0]}
${userList[0].uname}
<c:forEach items="${userList}" var="user" varStatus="index">
${user.uname}
${user.upwd}
</c:forEach>
</body>
</html>
EL 的基本运算
算数运算符:+ - * / div(除) mod(取余)
关系运算符:>= <= == != < >
逻辑运算符:&& (并且) || (或者) ! (非)
JSTL 表达式
一般与EL表达式来进行搭配
JSTL 表达式的步骤
1.导入相关的 jar 包
2.在头部引入其标签库:
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>:prefix:表示取的名字 uri:表示引入标签库的地址
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
常用的标签
1.用于判断:<c:if>
==>> test 里是条件表达式
<c:if test="${1==1}">小叶子</c:if>
2.用于循环的:<c:foreach>
==>> items="${userList}" :需要遍历的作用域下的集合,通过el表达式来获取
==>> var=“user”:每次遍历产生对象的别名
==>> varStatus=“index”:遍历的索引
==>> begin=“1”:起始位置
==>> step=“2”:波长
==>> end=“4”:结束位置
<c:forEach items="${userList}" var="user" varStatus="index">
${user.uname}
${user.upwd}
</c:forEach>
万能的格式
${pageContext.request.contextPath}