Java学习笔记:JSP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nidhoggz/article/details/78417677

JSPJava Server Pages

jsp的组成html+java脚本+jsp标签(指令)

jsp里有九大内置对象

request

javax.servlet.http.HttpServletRequest

response

javax.servlet.http.HttpServletResponse

out

javax.servlet.jsp.JspWriter

session

javax.servlet.http.HttpSession

application

javax.servlet.ServletContext

config

javax.servlet.ServletConfig

pageContext

javax.servlet.jsp.PageContext

page

javax.servlet.jsp.HttpJspPage

exception

java.lang.Throwable

 

3java脚本:

<%...%>

java脚本,用于定义0到多条java语句,方法内能放什么就能放什么

<%=...%>

java表达式,通常用于输出,用于输出一条表达式或变量的结果。

<%!...%>

声明,用于创建类的成员方法与成员变量         只学不用

 

JSP注释:

<%-- JSP注释 --%>JSP注释不会发给浏览器,HTML注释会原样发给浏览器

<!--HTML注释-->HTML的注释

 

JSP就是一种特殊的Servletjava脚本直接使用,html以字符串的方式输出

JSP原理

1.第一次请求时,转换jsp页面到jsp实现类,转换成功后Servlet容器编译该Servlet类,并装载和实例化该类,像其他正常的Servlet一样执行生命周期操作

2.对同一个jsp页面的后续操作,Servlet容器会先检查jsp页面是否被修改过。如果是,则该jsp页面会被重新翻译、编译并执行。如果不是,则执行已经在内存中的JSP Servlet

 

JSP指令

page指令

通过page指令来控制JSP转换器转换当前JSP页面的某些方面。

<%@ page attribute1="value1"attribute2="value2" … %>

@page间空格不是必须的,atttribute等是page指令的属性。

  • import:定义一个或多个本页面将被导入和使用的java类型。例如:import="java.util.*,java.sql.*" JSP默认导入java.lang,javax.servlet,javax.servlet.http,javax.servlet.jsp
  • session:值为True,本页面加入会话管理;值为False则相反。默认值为True,访问该页面时,若不存在javax.servlet.http.HttpSession实例,则会创建一个。
  • buffer:KB为单位,定义内置对象out的缓冲大小。必须以KB后缀结尾。默认为8KB大小或更大(取决于JSP容器)。该值可以为none,这意味着没有缓冲,所有数据将直接写入PrintWriter
  • autoFlush:默认值为True。若值为True,则当输出缓冲满时会自动写入流。而值为False,则仅当调用内置对象的flush方法时,才会写入输出流。若缓冲溢出,则会抛出异常。
  • isThreadSafe:定义该页面的线程安全级别,不推荐使用JSP参数,因为使用该参数后会生成一些Servlet容器已经过期的代码。
  • info:返回调用容器生成的Servlet类的getServletInfo方法的结果。
  • errorPage:定义当出错时用来处理错误的页面。
  • isErrorPage:标识本页是一个错误标识页面。
  • contentType:定义本页面内置对象response的内容类型,默认是text/html
  • pageEncoding:定义本页面的字符编码,默认是ISO-8859-1
  • isELIgnored:配置是否忽略EL表达式。ELExpression Language的缩写。
  • language:定义本页面的脚本语言类型,默认是Java,这个在JSP 2.2中是唯一的合法值。
  • extends:定义JSP实现类要继承的父类。仅在非常特殊理由下使用。
  • deferredSyntaxAllowedAsLiteral:定义是否解析字符串中出现“#{”符号,默认是False。“{#”是一个表达式语言的起始符号
  • trimDirectiveWhitespaces:定义是否不输出多余的空格/空行,默认是False

大部分page指令是可以出现在页面的任意位置的,但当page指令包含contentTypepageEncoding属性时,其必须出现在java代码发送任何内容之前。

 

include指令

可以使用include指令将其他文件中的内容包含到当前JSP页面。一个页面中可以有多个include指令。

<%@ include file="url"%>

为保证include指令能够正常工作,copyright.jspf必须与main.jsp位于同一目录,按照惯例,以JSPF为扩展名的文件代表JSP fragement。虽然JSPfragment现在被称为JSP segment,但为保证一致性,JSPF后缀名依然被保留。


taglib指令

JSP允许用户自定义标签,一个自定义标签库就是自定义标签的集合,taglib指令导入一个标签库的定义,包括库路径、自定义标签。<%@taglib uri="uri" prefix="prefixOfTag"%>

uri指标签库的路径,prefix指在本页面的前缀

 

动作标签

动作是第三种类型的语法元素,它们被转换成Java代码来执行操作。

forward

forward将当前页面转向其他资源

<jsp:forward page="jspf/login.jsp">

<jsp:param name="text" value="Pleaselogin">

</jsp:forward>

 

param

param用于传递参数,必须与其他支持参数曲标签一起使用。

 

include

include动作用来动态地引入另一个资源。可以引入另一个JSP页面,也可以引入Servlet或一个静态的HTML页面。

<jsp:include page="jspf/menu.jsp">

<jsp:param name="text" value="How areyou?"/>

</jsp:include>

对于include指令,资源引入发生在页面转换时,即当JSP容器将页面转换成为生成的Servlet时。而对于include动作,资源引入发生在请求页面时。

 

plugin

plugin用于下载 JavaBean 或 Applet 到客户端执行

 

useBean

useBean将创建一个JavaBean

<jsp:useBean id="today"class="java.util.Date" />

<%=today%>

 

setPropertygetProperty

setProperty动作可对一个JavaBean设置属性,而getProperty则会输出JavaBean的一个属性。

<jsp:useBean id="employee"class="app03a.Employee"/>

<jsp:setProperty name="employee"property="firstName" value="Abigail"/>

First Name:<jsp:getProperty name="employee"property="firstName"/>


JavaBean
JavaBean的规范:
1.必须有一个默认的构造器。
2.必须提供get/set方法,如果只有get方法,则这个属性是只读属性。

3.属性:有get/set方法的成员,还可以没有成员,只有get/set方法。属性名称由get/set方法来决定,而不是成员名称。

4.方法名称满足一定规范,那么它就是属性,boolean类型的属性,它的读方法可以是is开头,也可以是get开头。


猜你喜欢

转载自blog.csdn.net/Nidhoggz/article/details/78417677