初识 JSP---(注释/小脚本/声明/指令/动作/内置对象)

简介: 注释java : // /* */ /** */html : jsp jsp注释和html注释的区别jsp注释对jsp引擎有作用,当jsp引擎看到这个注释后,生产servlet文件是会忽略他html...

注释

java : // /* */ /** */

html : <!-- -->

jsp <%-- --%>

jsp注释和html注释的区别

jsp注释对jsp引擎有作用,当jsp引擎看到这个注释后,生产servlet文件是会忽略他

html注释对jsp引擎没有作用,jsp引擎把他当成普通标签输出到浏览器,所以在浏览器的

查看源文件时可以看到这个注释,但是浏览器看到这个注释之后,不会把它显示到页面上

小脚本

写在<% %>中的Java代码成为Java小脚本,这些代码,通过jsp引擎转换成servlet后,这些代码

放在service方法当中

脚本片段

就是在Java脚本中间包括html标签

<%

if(true){

%>

<a href="http://www.baidu.com">百度</a>

<%

}else{

%>

<a href="http://www.taobao.com">淘宝</a>

<%

}

%>

声明

<%!

%>

在jsp文件转换为Java后,写在声明中的语句会放在service方法外面,所以

在声明中不能写执行语句,只能写声明语句或者方法,用的很少

表达式

写在<%= %>这个标签中的代码成为表达式,里面可以放表达式,这些表达是会通过

out.print()方法写入到客户端

注意 百分号和等于号(%=)中间不要有空格

指令 : 三大指令

page

标签:<%@page %>

常用的属性

contentType="text/html; charset=utf-8"

这个属性是用来修改页面编码方式

import="java.util.Date,java.util.Random"

这个属性是用来导入在这个jsp中用到的Java类

isELIgnored="false"

是否忽略EL表达式,默认为 false ,即不忽略

errorPage

指定当我们这个jsp页面发生错误的时候要跳转的页面,被指定为errorPage的jsp

要设置 isErrorPage属性,设置为true

isErrorPage

指定当前jsp页面是否错误页面,默认是false

输出:只有设置 isErrorPage = “true” 时,才可以响应 exception 内置对象,将异常信息输出到页面

(不设置isErrorPage 属性页面也可以跳转,但无法响应对象)

include

<%@include %>

将其他页面导入本页,只产生一个servlet类

file="include.jsp"

taglib

引入JSTL标签

prefix

prefix="c"

自定义标签前缀

uri

JSTL标签的统一资源标识符(jstl标签的url地址)

如:uri="http://java.sun.com/jsp/jstl/core"

tagdir

将自定义的标签库或者是第三方的标签(如JSTL)放到项目的路径下,通过tagdir进行指定(引入自己的标签库)

动作

include

<jsp:include>

导入其他jsp页面

page

page="include.jsp" : 导入其include.jsp页面

forward

相当于servlet中的request.getRequestDispatcher("include.jsp").forward(request,response);

会转发到include.jsp页面,页面展示的内容就是转发后页面的内容

userBean

该标签会先在设置的域中查找有没有该类的对象,如果有就从域中获取,如果没有就

根据class中的类的全名创建一个对象,将该对象放入域中,相当于

com.oaec.pojo.User user = new com.oaec.pojo.User();

request.setAttribute("u",user);

域包括下面四个值

    page :当前页面有效

    request :一次请求有效

    session :一次回话(根据浏览器)

    application 整个web项目共享

在index.jsp中设置后,转发到include.jsp中仍然可以获取(在request域中)

    <jsp:useBean id="u" class="com.oaec.pojo.User" scope="request"></jsp:useBean>

    <jsp:setProperty property="name" name="u" value="zhangsan"/>

    <jsp:setProperty property="age" name="u" value="50"/>

    <jsp:forward page="include.jsp"></jsp:forward>

在include.jsp页面中获取

    <jsp:useBean id="u" class="com.oaec.pojo.User" scope="request"></jsp:useBean>

    <jsp:getProperty property="name" name="user"/>

九大内置对象

在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.

内置对象名          类型
request           HttpServletRequest
response       HttpServletResponse
config         ServletConfig
application    ServletContext
session        HttpSession
exception      Throwable
page           Object(this)
out            JspWriter
pageContext    PageContext 

 

解析:

1.pageContext(jsp 运行上下文)【可以获取其他八个对象】

页面的上下文,可以获取其他的内置对象,可以设置在page域的键值对

如:pageContext.setAttribute("username","zhangsan");

使用场景:在自定义标签时会频繁使用到PageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象就能解决问题.

2.out : JspWriter向浏览器中写入数据(,相当于带缓存的PrintWriter(不带缓存)

PrintWriter:write("内容")           直接向浏览器输出内容

JspWriter:writer("内容")            向jsp缓冲区写出内容

JspWriter当满足以下条件时之一时,缓冲区的内容写出:

a,缓冲区满了

b,刷新缓冲区

c,关闭缓冲区

d,jsp页面执行完毕

3.exception

只能错误页面也就是 isErrorPage="true"

配置异常信息,这些异常信息只能ErrorPage页面进行显示

4.application  :对应的ServletContext

5.config:ServletConfig

域对象(4个):

在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId()

ServletContext     context域
HttpServletRequet  request域
HttpSession        session域     --前三种在学习Servlet时就能接触到
PageContext        page域     --jsp学习的

域对象的作用:保存数据,获取数据,共享数据.

保存数据:

pageContext.setAttribute("内容");//默认保存到page域
pageContext.setAttribute("内容",域范围常量);//保存到指定域中
//四个域常量
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE

获取数据:

pageContext.getAttribute("内容");

pageContext.getAttribute("name",域范围常量);

//自动在四个域中搜索数据 pageContext.findAttribute("内容");

//在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)

 

目录
相关文章
|
3月前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
1月前
|
XML Java 数据格式
探索研究JSP 动作元素
【10月更文挑战第1天】
52 4
|
3月前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
|
3月前
|
存储 Java
<jsp:useBean>动作的使用
该博客文章介绍了JSP中`<jsp:useBean>`动作的使用方法,包括其语法和如何通过该动作在不同作用域(如page、request、session、application)中创建和操作JavaBean对象,并提供了示例代码。
|
3月前
|
Java
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
该文章展示了如何创建一个JSP页面,使用Scriptlet编写包含除零操作的计算代码,并配置page指令将错误信息重定向至另一个JSP页面进行显示。
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
|
3月前
|
Java
JSP指令
该文章解释了JSP中的指令,包括page指令、include指令和taglib指令的语法和用途,以及如何使用它们来设置JSP页面的属性和引入标签库。
JSP指令
|
3月前
|
小程序 Java
JSP脚本知识
该文章详细介绍了JSP中的脚本元素,包括表达式、Scriptlet和声明,并提供了相应的语法格式和示例代码。
|
3月前
|
缓存 Java 应用服务中间件
JSP的内置对象 request和response
这篇文章详细介绍了JSP的内置对象,包括request、response、out、session和application对象的使用方法和特性,以及如何通过这些对象处理HTTP请求和响应、管理会话和输出数据。
|
6月前
|
Java
JSP 教程 之 JSP 动作元素 7
`jsp:getProperty`动作用于从已定义的Bean中获取属性值并以字符串形式输出。基本语法是在`jsp:useBean`后使用`jsp:getProperty`,指定`name`为Bean的ID和`property`为要获取的属性。例如,一个名为`TestBean`的Java类有`getMessage()`方法,Bean在JSP中定义并使用后,可通过`jsp:getProperty`获取`message`属性。编译`TestBean.java`生成`.class`文件,并放入JSP项目相应目录以使用。
47 5
|
6月前
|
Java
JSP 教程 之 JSP 动作元素 10
`jsp:plugin`元素在JSP中用于基于浏览器类型插入OBJECT或EMBED标签以运行Java Applet或JavaBean。当插件缺失时,它会自动下载。属性如`codebase`, `code`, `width`, `height`用于配置组件,`jsp:param`传递参数。示例展示了一个包含错误处理fallback的applet使用案例。
41 4