1、JSP本质是一个servlet
jsp底层进行了封装,其实还是通过servlet调用PrintWriter的print方法在给页面写数据。由此可见Jsp其实本质上就是一个servlet,我们在使用时也可以把它当成一个特殊的html来使用。
2、导入包
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
<scope>runtime</scope>
</dependency>
3、基础语法
1.注释
<!-- 会向浏览器输出的注释,会被编译到jsp生成的java类里 --!>
<%-- 不会向浏览器输出的注释 --%>
2.指令
1、page指令
language:java //编程语言,唯一)
contentType:text/html //设置内容类型和静态页面的编码
pageEncoding:UTF-8 //页面本身的编码格式
import: //导入包
2、include指令 //把目标页面的内容包含到当前页面,产生页面叠加的效果,相当于页面合并,可在任意位置插入
语法:<%@include file="index.jsp"%>
3、taglib指令 //导入便签库
语法:<%@taglib prefix=""%>
4、简单应用
<%@ page errorPage="MyError.jsp" %> //让画面出错时进入自定义错误画面MyError
3.表达式
<%-- 输出当前时间,这里也可以写其他Java代码,会被编译到jsp生成的java类里的_jspService方法里 --%>
<%=new java.util.Date()%>
%-- EL表达式 --%>
request.setAttribute("name","北京"); //后台通过此方法存值到键值对中
${requestScope.name} //前台通过EL表达式获取值
HttpSession session=request.getSession();
session.setAttribute("name2","湖北"); //后台通过此方法存值到键值对中
${sessionScope.name2} //前台通过EL表达式获取值
ServletContext application=request.getServletContext();
application.setAttribute("name3","天津"); //后台通过此方法存值到键值对中
${applicationScope.name3} //前台通过EL表达式获取值
pageContext.setAttribute("name","上海"); //后台通过此方法存值到键值对中
${pageScope.name} //前台通过EL表达式获取值
(1)request 作用域:在一次请求过程当中有效(经过servlet算一次请求)
(2)session 作用域:在一次会话过程当中有效(浏览器开关算一次会话)
(3)application 作用域:tomcat启动之后有效(tocamat没重启过)
(4)pageContext 作用域:只在一个页面中有效
${1+1} //结果为2
${true && false} //结果为false,EL表达式中无单&、单|
${not true} //结果为false
${5>=3} //结果为true
${empty null "a"} //结果为false(判断是否为空)
${cookie.name.value} //取出cookie中的name键对应的值
${pageContext.request.contextPath}/servlet //访问项目路径下的servlet
4.标签
<%-- 引用jstl核心标签库 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<form method="get" action="current.jsp">
<%--EL表达式获取表单中的数据${param.参数名}--%>
用户名2:<input type="text" name="name2" value="${param.name2}"><br/>
<input type="submit" value="提交信息"><br/>
</form>
<h5>*********java代码实现*************<h5/>
<% String username=(String)request.getParameter("name2");
if(username.equals("admin"))
out.println("登录成功");
else
out.println("name2="+username);
%>
<h5>*********java代码实现*************<h5/>
<br/>
<%--判断如果是管理员就登录成功--%>
<c:if test="${param.name2=='admin'}" var="isAdmin">
<c:out value="管理员欢迎你"></c:out>
</c:if>
<c:out value="${param.isAdmin}"></c:out>