1. jsp 和 servlet 的关系

    1.jsp是对servlet的一种高级封装,jsp的本质还是servlet
    2.jsp文件在容器中会被转成servlet,然后在执行
    3.与servlet相比,jsp可以很方便的修改HTML网页,而不用去面对大量的printfln语句。
     
  2. jsp的实现原理

    1.Tomcat将会把xxx.jsp 转换为xxx.java 代码,然后编译成 xxx.class 然后运行,最后把运行的结果通过response响应发送给客户端
     
  3. jsp和HTML的集成开发

    1.语法一:<% Java代码 %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
  <%
    //jsp中可以编写Java代码
    //1.jsp 界面的输出
    out.println("out.println:hello world!");
    //2.在命令行的输出
    System.out.println("System.out.println:hello world");
    //3.jsp 输出日期
    out.println(new Date());
  %>
  </body>
</html>
  1. 2.语法二:<%! 定义变量、函数等%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        /* 声明变量和函数*/
        int a = 10;
        public void test1(){
            System.out.println("我是test1");
        }
        public int add(int a,int b){
            return a + b;
        }
    %>
    <%
        out.println(add(10,20));
        test1();
    %>
</body>
</html>

3.语法三:<%=Java表达式%>  在页面上输出Java表达式的结果

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        int a = 10;

        public int add(int a,int b){
            return a+b;
        }
    %>
    <%=a%> 
    <%=add(a,20)%>
</body>
</html>
  1. jsp的注释和html注释

    1.注释一:<%-- 注释 --%>  jsp注释   注释内容不会被发送到浏览器,甚至不会被编译。
    2.注释二:<!-- 注释 -->  html注释  通过浏览器查看源代码的时候可以看到注释的内容。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基础教程</title>
</head>
<body>
<h3>注释</h3>
<%-- jsp 的注释 不会输出到编译的html --%>
<!-- 使用html式 注释可以写入到生成的html中 -->

</body> 
</html>
  1. jsp指令

    1.<%@page ....%>:定义页面的依赖属性,比如脚本语言,error页面,缓存需求等!
<%@ page contentType="text/html;charset=UTF-8" language="java"  errorPage="error.jsp" %>
  1. 2.<%@ include ...%>:包含其他文件。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="header.jsp"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>middle</h2>
</body>
</html>
<%@ include file="footer.jsp"%>
  1. 3.<%@ taglib ...%>:引入标签库的定义,可以是自定义标签。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  1. page指令 ---- 语法:<%@ page attribute1="value1" attribute2="value2"... %>  page指令提供当前页面的使用说明,一个jsp页面可以包含多个page指令。

    1.属性一:contentType  指定当前jsp页面的MIME类型和字符编码格式。
    2.属性二:errorPage     指定当前jsp页面发生异常的时候,转向的页面。
    3.属性三:isErrorPage  指定当前页面是否可以当作另一个jsp页面的错误处理页面
    4.属性四:import           导入要使用的Java类
    5.属性五:language      定义jsp页面使用的脚本语言,默认是Java
    6.属性六:session        指定当前jsp页面是否使用session,默认是true 立即创建,false是使用的时候创建。
    7.属性七:pageEncoding 指定jsp页面的解码格式。
<%@page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"
    errorPage="error.jsp" isErrorPage="true" session="true" import="" %>

  1. useBean
    语法:
    1. useBean:创建一个对象:
       id:创建的对象的名字。  class:User类的所在的包的路径
<%--创建一个对象--%>
<jsp:useBean id="user" class="com.dl.code.entity.User"></jsp:useBean>

2.setProperty:给对象的属性赋值
   name:这个属性是必须的,他表示是为哪一个对象的属性赋值
   property:这个属性是必须的,他表示要为对象的哪一个属性赋值。
   value:是可以选择的。给属性是用来指定Bean属性的内容。

<%--给user对象的属性赋值--%>
<jsp:setProperty name="user" property="name" value="代先生"/>
<jsp:setProperty name="user" property="password" value="123456"/>

3.setProperty:获取对象的属性。并在jsp页面输出。
   name:对象的名字。
   property:对象属性的名字。

<%--获取对象属性的值--%>
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="password"/>

4.打印的方法

<%--打印方法一--%>
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="password"/>

<%--打印方法二--%>
<%= user.getName()%>
<%= user.getPassword()%>
  1. forward
      语法:<%jsp:forwrad page="url路径" %>
      作用:把请求转到指定的页面
<%--将请求转到error.jsp页面--%>
<jsp:forward page="error.jsp"></jsp:forward>

page属性:相对的url路径

  1. param
      语法:<jsp:param name="" value=""/>
      作用:在转发动作的内部使用,作为参数进行传递。
<%--将请求转到test.jsp页面--%>
    <jsp:forward page="test.jsp">
        <jsp:param name="name" value="DL"/>
    </jsp:forward>

  获取数据:

<%= request.getParameter("name")%>

提示:进行上述操作的时候,注意编码格式。否则会出现乱码。

  1. jsp的内置对象

    1.pageContext    --- javax.servlet.jsp.PageContext
    2.request            --- javax.servlet.http.HttpServletRequest
    3.response         --- javax.servlet.http.HttpServletResponse
    4.session            --- javax.servlet.http.HttpSession
    5.application       ---   javax.servlet.ServletContext

    6.config              ---  javax.servlet.ServletConfig
    7.exception        ---  java.lang.Throwable
    8.out                  ---  javax.servlet.jsp.JspWriter
  2. jsp四大作用对象

    1.pageContext :当前jsp页面范围
    2.request          :一次请求有效
    3.session          :一次会话有效,浏览器关闭后,就失效
    4.application     :整个web应用有效  服务器重启或者关闭,失效。
  3. pageContext的方法

    1.setAttribute("name",value):存储值   仅在当前页面作用域有效
    2.getAttribute("name"):获取值
    3.还可以用于获取其他八个内置对象
<%-- 存一个值 --%>
    <%pageContext.setAttribute("name","代先生");%>
    <%-- 获取存的值 --%>
    <%= pageContext.getAttribute("name")%>
<%-- 获取其他的jsp内置对象 列举四个为例 --%>
     <%
        ServletRequest request1 = pageContext.getRequest();
        ServletResponse response1 = pageContext.getResponse();
        Exception exception = pageContext.getException();
        HttpSession session1 = pageContext.getSession();
     %>