蓝旭第四次培训——JSP

JSP

  • 1.JAVA WEB
    • 1.1 啥是web应用程序
    • 1.2 静态网页与动态网页
    • 1.3 手写一个web
  • 2.JSP
    • 2.1 JSP页面元素构成
      • 2.1.1 JSP指令(着重讲page、include)
      • 2.1.2 JSP注释
      • 2.1.3 JSP脚本(在jsp中执行的java代码)
      • 2.1.4 JSP声明(在jsp中定义变量,方法)
      • 2.1.5 JSP表达式
    • 2.2 JSP页面生命周期
    • 2.3 JSP内置对象
      • 2.3.1 out对象
      • 2.3.2 request对象
      • 2.3.3 response对象
      • 2.3.4 session对象
      • 2.3.5 application对象
      • 2.3.6 page 、 pageContext 、config 、 exception 对象
  • 3.JavaBean

1.JAVA WEB

1.1 啥是web应用程序

  • 通过web访问的程序,用户有网、浏览器就行。

    eg.京东、天猫

1.2 静态网页与动态网页

  • 静态网页
  1. 网页内容不变
  2. 技术:HTML,CSS

  • 动态网页
  1. 网页内容通过程序动态显示、更新
  2. 技术:HTML,CSS,数据库,一门高级语言——Java,主流的动态网页脚本技术——JSP

  • 写web,我们需要啥???
  1. jdk( Java 语言的软件开发工具包)
  2. idea
  3. tomcat服务器:属于JSP/Servlet容器,如下
    蓝旭第四次培训——JSP_第1张图片
  • bin目录中,startup.shstartup.bat 的区别???
    在这里插入图片描述

  • tomcat的bin文件夹中存在一份.bat文件和相对应的.sh文件,一个是为了在window系统上执行的文件,另一个是linux下的批处理文件。例如:startup.bat和startup.sh

  • lib目录中,jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。

1.3 手写一个web

课上示范:创建项目、弄tomcat、改路径名字、改index名字、导包

2.JSP

2.1 JSP页面元素构成

2.1.1 JSP指令(着重讲page、include)

蓝旭第四次培训——JSP_第2张图片

  • page指令:

蓝旭第四次培训——JSP_第3张图片
刚刚新建的index.jsp上面有

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

text/html:表明这是一个文本文件
utf-8:字符集支持中文

  • include指令:

当前 JSP 页面与静态引入的文件紧密结合为一个 Servlet。这些文件可以是 JSP 页面、HTML 页面、文本文件等。

<%@ include file="haha.jsp"%>
<%@ include file="haha.txt"%>
<%@ include file="haha.html"%>
  • taglib指令:

使用标签库定义新的自定义标签,在 JSP 页面中启用定制行为。

<%@ taglib uri="uri" prefix="prefixOfTag" %>

2.1.2 JSP注释

蓝旭第四次培训——JSP_第4张图片
其中JSP脚本注释,也是在客户端不可见

课上示范

2.1.3 JSP脚本(在jsp中执行的java代码)

语法:

<% java代码 %>

例如:

<% out.println("大家好") %>

2.1.4 JSP声明(在jsp中定义变量,方法)

语法:

<%! java代码 %>

例如:

<%!
    String s="小吴";
    int add(int x,int y)
    {
        return x+y;
    }
%>

课上示范:

  • out.print()out.println()的区别???

println()虽然看似是换行,但转成网页之后,这种换行被认为是空格,所以输出的内容仍然在一行,用空格分隔,但右键点击页面查看源代码时,却能看出换行竟然对源代码起作用了。如果在页面上需要换行的话,可以使用

<%
    out.println("haha"+"
"
); out.println(s+"
"
); out.println(add(1,2)+"
"
); %>

2.1.5 JSP表达式

语法:

<%=表达式 %>//表达式不以分号结束

例如:

你好<%=s%><br>
答案是<%=add(1,2)%>

2.2 JSP页面生命周期

蓝旭第四次培训——JSP_第5张图片

  • 编译阶段:
    servlet 容器编译 servlet 源文件,生成 servlet 类
(1)解析JSP文件。
(2)将JSP文件转为servlet。
(3)编译servlet。
  • 初始化阶段:
    jsp页面第一次被请求的时候就执行jspInit()方法,把servlet常驻留与内存,下面针对用户每一个请求,分别去创建一个线程,去调用jspService()方法
public void jspInit(){
  // 初始化代码
}
//一般来讲程序只初始化一次
  • 执行阶段:
    当 JSP 网页完成初始化后, JSP 引擎将会调用 jspService() 方法。jspService() 方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,就像下面这样:
void jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}
// jspService() 方法在每个 request 中被调用一次并且负责产生与之相对应的 response

  • 销毁阶段:
    调用与 JSP 对应的 servlet 实例的销毁方法,然后销毁 servlet 实例,需要执行任何清理工作时复写 jspDestroy() 方法,比如释放数据库连接或者关闭文件夹等等。jspDestroy() 方法的格式如下:
public void jspDestroy()
{
   // 清理代码
}

2.3 JSP内置对象

内置对象简介

jsp内置对象是web容器创建的一组对象,不使用new关键字创建就可以使用
蓝旭第四次培训——JSP_第6张图片

2.3.1 out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象

常用方法:
void println() //向客户端打印字符串
void clear() //清除缓冲区的内容,在 flush 之后调用会抛出异常
void clearBuffer() //清除缓冲区的内容,在 flush 之后调用不会抛出异常
void flush() //将缓冲区内容输出到客户端
int getBufferSize() //返回缓冲区字节数的大小,如不设缓冲区则为 0
int getRemaining() //返回缓冲区还剩余多少可用
boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常
void close() //关闭输出流

注意:

  1. flush方法把缓冲区内容给到客户端后,缓冲区被提交的部分会被清空,这样我们剩余缓冲区就会变大
  2. 若在flush后面使用clear方法,会报异常,那么clear之后的内容就不会被执行
  3. flushclearclearBuffer的区别???
    flush:缓冲区给客户端,再清空
    clear:直接清空,在flush后面报错
    clearBuffer:直接清空,在flush后面不报错

2.3.2 request对象

表单提交方式(填在method里面)

方式 说明
get 以明文方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不能超过2KB。安全性较低,但效率比post高。适合提交数据量不大,安全性不高的数据。比如:搜索,查询
post 将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。比如:注册、修改、上传。

request对象:

客户端的请求信息被封装在 request 对象中,通过他才能了解到客户的需求,然后抛出响应。它是HttpServletRequest类的实例,request对象具有请求域:即完成客户端的请求之前,该对象一直有效。

常用方法:
String getParameter(String name)//返回此 request 中 name 指定的参数,若不存在则返回 null
String[] getParameterValues(String name)//返回指定名称的参数的所有值,若不存在则返回 null
void setAttribute(String name,Object o)//存储属性
Object getAttribute(String name)//返回名称为 name 的属性值,如果不存在则返回 null
void setCharacterEncoding()//设置 request 的字符编码集名称

String getContentType()//返回 request 主体的 MIME 类型,若未知则返回 null
String getProtocol()//返回此 request 所使用的协议名和版本
int getServerPort()//返回服务器端口号
int getContentLength()//返回 request 主体所包含的字节数,若未知的返回 -1
String getRemoteAddr()//返回客户端的 IP 地址
String getContextPath()//返回 request URI 中指明的上下文路径


2.3.3 response对象

response对象包含了响应客户请求的有关对象,具有作用域:即访问一个页面时,该页面的response对象只能对这次访问有效,其他页面的response对象对该页面无效

常用方法:
PrintWriter getWriter()//返回客户端输出字符的一个对象
void setContentType(String type)//设置响应的内容的类型,如果响应还未被提交的话
void sendRedirect(String location)//使用指定的 URL 向客户端发送一个临时的间接响应

注意:

  1. PrintWriter 的对象总是比内置out对象先输出。除非用out.flush()提前交上去
  2. response.sendRedirect(String location),请求重定向到一个页面。重定向之前不能out.flush(),不然会报错,失效

2.3.4 session对象

  1. session表示客户端与服务器的一次会话。eg.Web中的session指的是用户从打开浏览器到关闭所经过的这段时间
  2. 服务器内存中保存着不同用户的不同session :为什么要保存?因为当一个客户访问一个服务器时,可能在这个服务器的几个页面切换跳转,需要让服务器知道这是一个用户
常用方法:
long getCreationTime()//返回 session 创建时间
public String getId()// 返回 session 创建时 JSP 引擎为他设的唯一 ID 号
public Object setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
String[] getValueNames()//返回一个包含此 session 中所有可用属性的数组
int getMaxInactiveInterval()//返回两次请求间隔多长时间此 session 被取消(单位秒)
  1. session的生命周期
    蓝旭第四次培训——JSP_第7张图片
    蓝旭第四次培训——JSP_第8张图片
    蓝旭第四次培训——JSP_第9张图片

2.3.5 application对象

  1. application对象实现用户间数据共享,可存放全局变量
  2. application作用域:开始于服务器启动,终止于服务器关闭
常用方法:
public void setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
Enumeration getAttributeNames()//返回所有可用属性名的枚举
String getServerInfo()//返回 JSP(Servlet)引擎名及版本号


2.3.6 page 、 pageContext 、config 、 exception 对象

  1. page 对象就是指向当前 JSP 页面本身,有点像类中的 this ,它是 java.lang.Object 类的实例。
  2. pageContext 对象提供了对 JSP 页面内所有对象及名字空间的访问,它可以访问到本页所在的 session ,也可以取本页所在的 application 的某一属性值。
  3. config 对象是在一个 Servlet 初始化时, JSP 引擎向它传递信息用的,此信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象)。
  4. exception 对象是一个异常对象,到一个页面在运行过程中发生了异常,就产生这个对象。如果一个 JSP 页面要应用这个对象,就必须把page指令中的 isErrorPage 设为 true ,否则无法通过编译。

3.JavaBean

符合某种规范的Java类
蓝旭第四次培训——JSP_第10张图片

  • jsp页面中如何使用Javabeans
  1. 像使用普通java类一样,创建javabean实例
  2. 用jsp动作标签使用javabean(useBeanssetPropertygetProperty动作)

  • useBean
语法:
<jsp:useBean id="唯一标志" class="java类名" scope="作用范围" />

  • setProperty
语法:
<jsp:setProperty name="JavaBean实例名" property="*" />//与表单有关
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" /> //与表单有关
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value=" BeanValue"/>//手工设置
<jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中参数名" />//与request参数有关

  • getProperty
语法:
<jsp:getProperty name="JavaBean实例名" property="属性名" />

  • Javabean的四个作用域范围(scope)
  1. page//当前页面有效
  2. request//可通过HttpRequest.getAttribute()方法获得JavaBean对象
  3. session//可通过HttpSession.getAttribute()方法获得JavaBean对象
  4. application//可通过application.getAttribute()方法获得JavaBean对象

你可能感兴趣的:(haha,java)