13.jsp技术


1.JSP入门学习

概念:java server pages (java服务器端页面)
可以将其理解成一个特殊的页面,既可以写java代码,又可以定义html代码
作用:简化书写
可以看出我们在写servlet的时候如果使用response对象获取流的方式将html整个页面输出在浏览器,会有多么的麻烦。
原理:jsp本质上就是一个servlet(为我们将html代码封装打印出来)
图解:

图解

JSP脚本:jsp用来声明(定义java代码的方式)
1,<%java代码%>:定义java代码,这个方式写的代码写在service方法中,可以定义service方法中定义的内容。在使用的时候可以使用多个<%java代码1%><%java代码2%>将内容截断。

  <%
      String path =  request.getServletPath();
      System.out.println(path);
      System.out.println("写在service方法中");
  %>

在index转换的“.java”文件中的service方法中

2,<%! java代码%>:定义的java代码,jsp转换后的java类的成员位置(我们使用的很少),因为我们一般不会在servlet中定义成员,防止多线程的数据问题。

  <%! int i = 10;%>
在index转换的“.java”文件中的成员位置

3,<%= java代码%>:定义java代码都会输出到页面上,输出语句定义什么,该脚本就可以定义什么。它是利用out.print();进行输出的

 <%= 2>3? 2:3%>
在index转换的“.java”文件中的输出语句中

jsp的内置对象:在jsp页面中不需要获取和创建,可以直接使用的对象(jsp一共有9个内置对象)
1,request
2,response
3,out :可以将数据输出到页面上(和responde.getWriter()类似)字符输出流对象
out和response.getWriter();之间的区别
在tomcat服务器真正给客户端做出响应之前,会先找到response缓冲区数据,再找out缓冲区数据
所以response的数据输出总是在out的前面
在我们使用的时候推荐统一,推荐使用out,response对象的流对象获取的数据可能会影响布局

  <% out.print("out对象");%>
  <%! int i = 10;%>
  <%
      String path =  request.getServletPath();
      System.out.println(path);
      System.out.println("写在service方法中");
  %>
  <%= 2>3? 2:3%>
  <% response.getWriter().write("response流对象");%>
out写在response的前面但是输出在后面

下面使用表格的形式描述jsp的内置对象

编号 变量名 真实类型 作用
1 pageContext pageContext 在当前页面共享数据,还可以获取其余的8个对象
2 request HttpServletRequest 一次请求的访问的多个资源间共享数据(转发)
3 Session HttpSession 一次会话的多个请求间共享数据
4 application ServletContext 多个用户共享数据
5 response HttpServletResponse 响应对象
6 page Object 当前页面(servlet)的对象,相当于this
7 out JspWriter 输出对象数据输出到页面上
8 config ServletConfig Servlet的配置对象
9 exception Throwable 异常对象

pageContext对象功能:
1.在当前页面共享数据

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    内置对象


<%
 //1.在当前页面共享数据   
 pageContext.setAttribute("msg","xzw");
%>
<%=pageContext.getAttribute("msg")%>


2.获取其余的8个对象

获取方法

jsp指令
作用:用于配置jsp页面,导入资源文件
格式:<%@ 指令名称 属性1=属性值1 属性2=属性值2 ....... %>
指令名称分类
1.page:用于配置jsp页面
常见属性:
1,contentype:等同于response.setContentType();
作用1.设置响应体的mime类型和字符集
作用2.设置当前页面的字符集(只能是IDE才能生效,如果是低级的编译器需要设置pageEncoding)
2,pageEncoding:设置当前页面的字符集
3,language :设置使用语言,永远都是java
4,buffer:缓冲区大小
5,import:导包,在java中使用对象需要用到的包
6,errorpage:错误页面(当前页面出现异常之后,会自动跳转到指定的错误页面,增加用户体验)
7,iserrorpage:标识当前是不是错误页面,默认值为false,设为true之后可以适应exception内置对象

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>


    错误页面


服务器忙。。。。。

<%=exception.getMessage()%>

只有页面标识成错误页面了之后才能使用exception内置对象


页面信息

2.include:(用来包含页面,可以将写的对个页面叠加在一起)很少使用

<--页面体 将top.jsp通过include指令导入-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="top.jsp"%>


    内置对象


页面体

<--页面头top.jsp--> <%@ page contentType="text/html;charset=UTF-8" language="java" %>

页面头

可以将页面叠加在一起

3.taglib:导入资源(标签库)如:ESTL标签库
我们以后再jsp中无论使用哪一种标签库,都需要提前导入,如导入ESTL标签库
1.导入需要的jar包
2.在jsp页面中导入
导入格式:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
其中的c是自定义的名字,但是我们在使用ESTL标签库的时候一般都使用c,所以推荐写成c


你可能感兴趣的:(13.jsp技术)