JSP
1.Java server Pages {java 服务端的页面},
2.本身就是一个简化版的Servlet
3.我们可以进行理解成,JSP是一个特殊的页面,可以在jsp页面中定义
HMTL 标签,和java代码
Jsp 指令
作用: 用于配置JSP页面,导入资源文件的
taglib 导入资源的 如导入JSTL prefix="" 在使用一个资源的时候,需要进行加上的前缀名称 uri="" 对应的资源的地址路径 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
格式:
<%@ 指令名称 属性名=属性值 属性名1=属性值1 …%>
page 配置jsp的页面的
contentType=“text/html;charset=UTF-8”
设置当前JSP页面的编码格式
language=“java”
语言
import=""
导包
errorPage=""
当前页面发生异常后,会自动的跳转到 指定的错误页面上
isErrorPage=""
标识是当前是否是错误的页面
false 否
true 是
如:
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
include
页面包含的,导入的页面的资源文件
<%@include file=“login.jsp”%>
注释
<!----> HTML的注释 ,被注释的会显示在页面
<%----%> Jsp的注释,被不会进行显示在页面
如:
<%--
<H1>
LGOIN LGOIN LGOIN LGOIN LGOIN LGOIN LGOIN LGOIN LGOIN
</H1>
--%>
<!--
<H1>
我去恶趣味请问请问请问
</H1>
-->
内置对象
名称 类型 作用
pageContext PageContext 当前页面共享数据,还可以进行获取到其他的8个内置对象
request (4大作用域) HttpServletRequest 一次请求访问多个资源的(转发)
session (4大作用域) HttpSession 一次会话的多个请求
appliaction (4大作用域) ServletContext 所有用户之间进行共享数据
response HttpServletResponse 响应对象
page (4大作用域) Object 当前页面的Servlet的对象 this
out JspWiter 输出对象,数据在页面上进行显示
config ServletConfig Sevlet的内置对象进行初始化
exception Throwable 异常对象
(注意,要使用该对象, isErrorPage=""为true)
四大内置对象的范围:
page<request<session<appliaction
JSP 脚本
在jsp页面中写JAVA代码
<% java代码 %>
定义java代码的,在对应的页面编译后的.java文件中的sevice方法
service方法中定义了什么,那么该脚本就可以进行定义什么
<%! java代码 %>
定义java代码,在jsp转换后的文件中 - 为 java成员变量
<%= java代码%>
定义java代码,进行输出到页面
EL 表达式
作用:是为了JSP页面用起来更加的简单
提供了JSP简化的表达式的方法,
语法:${表达式}
注意:
jsp默认是支持EL表达式的,
可以在jsp的page指令中进行设置 isELIgnored=“true” ,忽略当前页面的所有的el表达式
<%@ page isELIgnored=“true” contentType=“text/html;charset=UTF-8” language=“java” %>
如要进行忽略其中的某个一个
${表达式} 表示忽略当前的表达式
eg: ${2 * 3}
${2 * 3}
使用的方式
运算符
算术运算符/(div) % (mod)
比较运算符
< > = >= <= !=
逻辑运算符
&&(and) ||(or) !(not)
空运算符
empty
功能,进行判断字符串 集合 数组 对象,是否为null 或者长度为0
三目运算符
A?B:C
案例:
<H1>算术</H1>
\${3 + 4}= ${3 + 4}<br/>
\${3 / 4}=${3 / 4}<br/>
\${3 % 4}=${3 % 4}<br/>
\${3 mod 4}= ${3 mod 4}<br/>
<H1>比较</H1>
\${3 == 4}= ${3 == 4}<br/>
<H1>逻辑</H1>
\${3 > 4 && 3< 5}=${3 > 4 && 3< 5}<br/>
\${3 > 4 and 3< 5}=${3 > 4 and 3< 5}<br/>
取值
可以从作用域中获取到对应的值
${域名称.键名}
从4大作用域中获取.同过指定对应的域来进行获取
pageScope
requestScope …
${键名}
标识是从最小的一个域中进行查询到有该键的对应值,
EL 获取对象,集合 map
对象获取方式:
${作用域.键名.属性名}
集合
${作用域.键名[索引]}
map
${作用域.键名[“key名称”]}
${作用域.键名.key名称}
//案列:
@WebServlet("/Test_EL_Servlet")
public class Test_EL_Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Users users = new Users();
users.setAge(12);
users.setName("ADMIN");
users.setBirthby(new Date());
req.setAttribute("users",users);
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(1231);
arrayList.add("jack");
arrayList.add(users);
req.setAttribute("arrayList",arrayList);
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("name","tom");
objectObjectHashMap.put("age",23);
objectObjectHashMap.put("users",users);
req.setAttribute("map",objectObjectHashMap);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
//页面
<H1>对象</H1>
\${users.name}=${users.name} <br/>
\${users.age}=${users.age}<br/>
\${users.birthby}=${users.birthby}<br/>
<H1>集合</H1>
\${arrayList[0]}=${arrayList[0]}<br/>
\${arrayList[1]}=${arrayList[1]}<br/>
\${arrayList[2]}=${arrayList[2]}<br/>
\${arrayList[2].name}=${arrayList[2].name}<br/>
<H1>map</H1>
\${map.name}=${map.name}<br/>
\${map["name"]}=${map["name"]}<br/>
\${map.age}=${map.age}<br/>
\${map.users}=${map.users}<br/>
\${map.users.name}=${map.users.name}<br/>
</body>