JavaEE基础篇:JSP

2018-05-10  本文已影响16人  younger_times

JSP笔记

最终都会编译成Servlet

组成部分

  1. 静态部分:标准的 HTML 标签、静态的页面内容,这些内容与静态 HTML 页面相同。
  2. 动态部分:受 Java 程序控制的内容,这些内容由 Java 脚本动态生成。
image
  1. JSP 文件必须在 JSP 服务器内运行。
  2. JSP 文件必须生成 Servlet 才能执行。
  3. 每个 JSP 页面的第一一个访问者速度很慢,因为必须等待 JSP 编译成 Servlet。
  4. JSP 页面的访问者无须安装任何客户端,甚至不需要可以运行 Java 的运行环境,因为 JSP 页面输送到客户端的是标准 HTML 页面。

JSP声明

JSP 声明用于声明变量和方法。

不能使用 abstract 修饰声明部分的方法,因为抽象方法将导致;JSP 对应 Servlet 变成抽象类,从而导致无法实例化。

<%! 声明部分 %>

<%!
public int count;
public String info(){
    return "hello";
}    
%>

输出JSP表达式

JSP 提供了一种输出表达式值的简单方法

<%=表达式%>

<%=count %>
<%=info() %>

JSP脚本

JSP 脚本里可以包含任何可执行的的 Java 代码
<% %>

JSP 小脚本部分也可以声明变量,但在 JSP 脚本部分声明的变量是局部变量,但不能使用 private、public 等访问控制符修饰,也不可使用 static 修饰。JSP脚本里不能定义方法

<%
for (int i 0; i <'10; i++){
    //todo
}
%>
<p><%=i%></p>

<%}%>

JSP的3个编译指令

<%@ 编译指令名 属性名="属性值"....%>

page指令

JSP 内建了异常机制支持,所以 JSP 可以不处理异常,即使是 checked 异常。

include指令

使用 include 指令,可以将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP语句。这是个静态的 include 语句,它会把目标页面的其他编译指令也包含进来。

<%@include file="relativeURLSpec" %>

JSP的7个动作指令

<jsp:forward page="forward-result.jsp">
     <jsp: param name="age" value="29"/> 
</jsp:forward>

跳转结果页面可以使用内置对象获取age

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

include 指令是一个动态 include 指令,也用于包含某个页面,它不会导入被 include 页面的编译指令,仅仅将被导入页面的 body 内容插入本页面。

<jsp: useBean id="name" class="classname" scope="page | request|session| application"/>

name 属性确定需要输出的 JavaBean 的实例名;property 属性确定需要输出的属性名。

静态导入和动态导入区别

JSP脚本中的9个内置对象

application对象

1. 让多个JSP,Servlet共享数据

application 通过 setAttribute(String attrName, Object value)方法将一个值设置成 application 的 attrName 属性,该属性的值对整个 Web 应用有效,因此该 Web 应用的每个 JSP 页面或 Servlet 都可以访问该属性,访问属性的方法为 getAttribute (String attrName)。

<%application.setAttribute("counter",1);%>
<%=application.getAttribute("counter");%>
ServletContext sc = getServletConfig().getServletContext();

由于在 Servlet 中并没有 application 内置对象,在 JSP 页面中可通过 application 内置对象访问该实例,而 Servlet 中则必须通过代码获取。

2. 获取Web应用配置参数 web.xml

<%
String driver = application.getInitParameter ("driver");
%>

web.xml的配置

<context-param>
    <param-name>driver</param-name>
    <param-value>iOS</param-value>
</context-param>

config对象

config 对象代表当前JSP配置信息

<%=config.getInitParameter("age")%>

exception对象

JSP 脚本包含的所有可能出现的异常都可交给错误处理页面处理。也只有错误页面运行如此

异常类型是:<%=exception.getClass () %> <br/>
异常信息是:<%=exception.getMessage () %> <br/>

out对象

out 对象代表一个页面输出流,通常用于在页面上输出变量值及常量。out 是个页面输出流,负责输出页面表格及所有内容,

out.print("<br/>");

pageContext对象

这个对象代表页面上下文,该对象主要用于访问 JSP 之间的共享数据。使用 pageContext 可以访问page、request、session、application 范围的变量。

pageContext.setAttribute ("request2", "hello",pageContext.REQUEST_ SCOPE);

获取其他内置对象

request对象

request 对象是 JSP 中重要的对象,每个 request 对象封装着一次用户请求,并且所有的请求参数都被封装在 request 对象中,因此 request 对象是获取请求参数的重要途径。

1. 获取请求头/请求参数

2. 操作request返回的属性

  1. setAttribute (String attName, Object attValue):将 attValue 设置成 request 范围的属性。
  2. Object getAttribute(String attName):获取 request 范围的属性。

3. 执行forward 或 include

response对象

response 代表服务器对客户端的响应。

1. response 响应生成非字符响应

 <%@ page contentType="image/png" language="java"%>

2. 重定向

重定向是 response 的另外一个用处,与 forward 不同的是,重定向会丢失所有的请求参数和 request 范围的属性,因为重定向将生成第二次请求,与前一次请求不在同一个 request 范围内,所以发送一次请求的请求参数和 request 范围的属性全部丢失。

<%response.sendRedirect ("redirect-result.jsp");%>

3. 增加Cookie

4. session对象

session 对象也是一个非常常用的对象,这个对象代表一次用户会话,session 范围内的属性可以在多个页面的跳转之间共享。

上一篇 下一篇

猜你喜欢

热点阅读