JavaWeb—JSP入门

什么是JSP

JSP全名为Java Server Pages,中文名叫java服务器页面,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段和JSP标记,后缀名为(*.jsp),其根本是一个简化的Servlet设计。

为什么要有JSP

直接使用Html文件是没有办法输出Java当中的信息,使用servlet来去输出一个网页非常的麻烦,于是就出现了jsp,又能写html,又能写Java代码。

JSP的组成部分

  1. 静态数据,如HTML
  2. JSP脚本元素和变量
  3. JSP指令,如include指令
  4. JSP标签动作
  5. 用户自定义标签

JSP脚本元素和变量

  • 在JSP当中写Java代码
  1. <%java代码%> 用来输出内容。
  2. <%!java代码%> 用来定义成员变量属性和方法。
  3. <%=java变量或表达式%> 会被翻译成service方法内部out.print()
  • JSP注释
    HTML注释: 可见范围 jsp源码、翻译后的servlet、页面
    Java注释
    Jsp注释,<%–注释内容–%>

JSP指令

  • 什么是指令
    JSP指令用于设置整个JSP页面的相关信息,以及用于JSP页面与其它容器之间的通信。
  • page指令:用于设定整个JSP页面的属性和相关功能 ,多个属性之间使用空格隔开。
指令 功能
contentType contentType属性指定JSP页面的MIME和编码格式
pageEncoding pageEncoding属性用来指定JSP文件的编码格式
import 在JSP中引入Java的包和类,多个包之间以逗号隔开
session 指定当前页面是否能获得当前用户的session对象缺省是true,如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误
errorPage 如果当前页面发生异常,网页会重定向到errorPage所指定的页面进行处理
language属性 指定页面中使用的脚本语言种类,目前只支持java
extends 用于指定该JSP生成的servlet继承自哪个父类,必须指定包名加类名
buffer 用来设置输出流缓冲区,缓冲区的作用就是为了提高IO性能,也就是说减少write的次数
autoFlush 用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区
isThreadSafe 缺省值为true,指定该JSP文件是否支持多线程访问
info 用来设置该jsp文件的介绍信息
isELIgnored 用来标示是否支持EL表达式
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  • include指令
    表示在JSP编译时插入一个包含文件或者代码的文件,include指令所包含的文件名不能是一个变量url,只能是静态的文件名。将两个jsp页面接着到一起, 然后再翻译成servlet。file属性的设置值必须使用相对路径。
<%@ include file="被包含的的文件的地址"%>
  • taglib指令
    作用:声明JSP文件使用了标签库
    有哪些标签库:
  1. JSP标准标签库
  2. 第三方标签库
  3. 自定义标签库

jsp动作元素

页面包含:<jsp:include page=“被包含的页面”></jsp:include>
动态包含,各自翻译自己的页面,然后再引入。
请求转发:<jsp:forward page=“要转发的资源”></jsp:forward>

隐式对象

jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕。

out out的类型:JspWriter,out作用就是想客户端输出内容 out.write(),out缓冲区默认8kb, 可以设置成0 代表关闭out缓冲区内容直接写到respons缓冲区,out写的内容写到out缓冲区当中,最后再把out缓冲区当中的内容合并到response缓冲区当中。
request 得到用户请求信息对象
config 服务器配置,可以取得初始化参数
session 用来保存用户会话的信息
application 所有用户的共享信息,就是servletContext
page 指当前页面转换后的Servlet类的实例
pageContext jsp页面的上下文对象,是一个域对象。
exception 表示JSP页面所发生的异常,在错误页中才起作用,只有是错误页面的时候,才会有该对象。

pageContext:
可以向指定的其他域中存取数据可以获得其他8大隐式对象

setAttribute(“name”,"lk",PageContext.REQUEST_SCOPE);
getAttribute("lk",PageContext.REQUEST_SCOPE)/*自动到所有的域当中找数据
从小到大的范围搜索数据
依次从pageContext域,request域,session域,application域中获取属性
在某个域中获取后将不在向后寻找
*/
findAttribute(String name)
pageContext.getRequest();
pageContext.getSession();
发布了25 篇原创文章 · 获赞 0 · 访问量 275

猜你喜欢

转载自blog.csdn.net/qq_42219004/article/details/105327715
今日推荐