JSP:全称java server page,在HTML中嵌入java代码,更擅长页面展示
1.jsp技术基础知识
(1)运行原理:jsp在第一次被访问时会被web容器翻译成servlet,即jsp本质上是servlet。
(2)jsp脚本
<%java代码%>---------------内部的java代码翻译到service方法的内部
<%!java代码%>---------------会被翻译成servlet的成员的内容
<%=java变量或表达式%>-----会被翻译成service方法内部out.print()
(3)jsp注释
HTML注释: <!--注释内容-->--jsp源码、翻译后的servl和HTML源码均可见
jsp注释:<%--注释内容--%>--仅jsp源码中可见
java注释://单行注释 /*多行注释*/--jsp源码和翻译后的servlet可见
(4)jsp指令:指导jsp翻译和运行的命令
<%@ page contentType="text/html;charset=utf-8" language="java"%>
<%@ include file="/jinclude.jsp" %>
<%@ taglib uri="xxx" prefix="c" %>
(5)jsp九大隐藏对象:
out、request、response、config、session、 application、page、pageContext、exception
(6)jsp静态与动态包含关系:
(7)jsp转发代码:<jsp:forward page="hello.jsp"></jsp:forward>
2、EL表达式:
(1)解释:全名expressin language,它提供了在jsp中简化表达式的方法,让jsp的代码更加简化,可以嵌入式在jsp页面内部,减少jsp脚本的编写。
(2)语法:${EL表达式}
(3)四大域中数据:
pageContext域:${pageScope.key}
request域:${requestScope.key}
session域:${sessionScope.key}
application域:${applicationScope.key}
(4)EL从四个域中获取某个值${key},顺序如下(找到即不再往下找)
pageContex、request、session、application
(5)EL的内置对象:pageScope/rquestScope/sessionScope/applicationScope
param.paramValue/header.headerValue/initParam/cookie
pageContext
(6)EL表达式:如${1+1}/${1>2}/${empty user}/${3>2?true:false}等等
3、JSTL标签
(1)介绍:jstl(java servlet page standard tag library),jstl标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能,jstl出现的目的同EL一样也是要代替jsp页面中的脚本代码。
(2)配置:下载好文件--idea中的web的web-inf目录下创建lib包---找到解压后的jstl下载文件中的lib下的两个文件jstl.jar和standard.jar复制到idea创建的lib包
idea中file---setting---launguages & frameworks下的schemas and dtds--选择右边的“+”---在URI栏中输入内容:http://java.sun.com/jsp/jstl/core---在file中选择解压后的jstl下载文件中的tld/c.tld文件---ok---apply---ok
(3)在使用文件jsp中配置:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
(4)jstl标签的if和foreach标签使用示例代码如下:
<%--
Created by IntelliJ IDEA.
User: qinguangguo
Date: 2020/8/13
Time: 10:48
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jstl标签应用示例</title>
</head>
<body>
<c:if test="${1+1>1}">
welcome to our site!
</c:if>
<c:if test="${1+1==2}">
thanks for your coming!
</c:if>
<c:forEach begin="0" end="${10}" var="i">
${i}
</c:forEach>
<%--<c:forEach items="${list}" var="user">--%>
<%--${user.name}--%>
<%--</c:forEach>--%>
</body>
</html>
package study.zx.jstl;
import study.zx.bean.Phone;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "PhoneServlet",urlPatterns = "/phone")
public class PhoneServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Phone phone1=new Phone ();//alt+enter键创建类
phone1.setId (001);
phone1.setName ("小米1");
phone1.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
phone1.setPrice (800);
Phone phone2=new Phone ();//alt+enter键创建类
phone2.setId (002);
phone2.setName ("小米2");
phone2.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
phone2.setPrice (1000);
Phone phone3=new Phone ();//alt+enter键创建类
phone3.setId (003);
phone3.setName ("小米3");
phone3.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
phone3.setPrice (1200);
Phone phone4=new Phone ();//alt+enter键创建类
phone4.setId (004);
phone4.setName ("小米4");
phone4.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
phone4.setPrice (1800);
List<Phone> list=new ArrayList<Phone> ();
list.add (phone1);
list.add (phone2);
list.add (phone3);
list.add (phone4);
request.setAttribute ("list",list);
request.getRequestDispatcher ("/phone.jsp").forward (request,response);
}
}
<%--
Created by IntelliJ IDEA.
User: qinguangguo
Date: 2020/8/13
Time: 11:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>手机列表</title>
</head>
<body>
<c:forEach items="${list}" var="phone">
<div>
<img src="${phone.image}" width="180" height="180">
<p>
<a href="http://www.baidu.com">${phone.name}</a>
</p>
<p>
商城价:${phone.price}
</p>
</div>
</c:forEach>
</body>
</html>
4.