Java后台之路(13)-JSP

jsp语法

jsp的语法。

1. 中文编码问题

如果我们想在页面中正常显示中文,需在jsp头部添加以下代码:

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

2. 脚本程序<% %>

<% %>在jsp中编写脚本,我们必须严格遵循Java语法来编写,此处的内容我们会原封不动地放入到对应servlet中的_jspService()方法中去。

<% 
    Date date = new Date();
    System.out.println(date.toLocaleString());
%>

3. JSP声明<%! %>

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

在此处定义的变量和方法是jsp以及其对应的servlet的全局成员和方法。

<%!
    private String name = "qdl";

    public String getDate(){
        return (new Date()).toLocaleString();
    }
 %>

<p><%=name %></p><br>
<p><%=getDate() %></p>

4. JSP表达式<%= %>

可以将jsp中定义的Java变量转换成String,然后在插入到相应的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

<%! 
    Date date = new Date();
    String dateString = date.toLocaleString();
 %>

<p><%=dateString %></p><br>
<p><%=(new Date()).toLocaleString() %></p>

5. JSP注释<%- %>

<%-这是jsp注释 %>
<!-这是html注释 ->

jsp指令

JSP指令是为JSP引擎而设计的,用于告知JSP引擎如何处理JSP页面中代码。指令的格式:

<%@ 指令名称 属性1=”值1” 属性2=”值2” …… %>

JSP2.0中定义了三个指令:page、include、taglib。

1. page指令

用于定义jsp页面的各种属性,在上面我们为了正常显示中文就用到了page指令。

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

利用language属性指明该jsp文件中是java代码,利用pageEncoding声明编码格式等等,常见的page指令属性:

  • session,是否自动创建session对象,默认值是true;
  • errorPage,假若页面中有错误跳转到指定的资源;
  • isErrorPage,是否创建throwable对象,默认是false;
  • contextType,设置内容类型,等同于response.setContextType();
  • pageEncoding,告知JSP引擎用什么编码翻译该jsp文件;
  • isELIgnored,是否支持EL表达式,默认是false。

2. include指令

用来指定jsp包含其他文件,文件格式可包含jsp、html、文本文件,包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

<%@ include file=”文件相对 url 地址” %>

include 指令中的文件名实际上是一个相对的 URL 地址。
如果没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。

3. taglib指令

taglib指令用于在JSP页面中导入JSTL标签库。在导入JSTL标签库后就可用标签替换JSP中的java代码。

<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>


jsp动作

介绍常见的jsp动作。

<jsp:include>,用于动态地把其它资源包含到当前页面中。
<jsp:forward>,用于请求转发。
<jsp:param>,用于请求转发时携带参数。

//请求转发示例,在此转发至test.jsp且携带了name和age两个参数
<jsp:forward page="/test.jsp">
<jsp:param name="name" value="qdl" />
<jsp:param name="age" value="25" />
</jsp:forward>

<jsp:useBean>,创建一个对象
<jsp:setProperty>,给对象的属性赋值
<jsp:getProperty>,取出对象的属性值

//创建对象示例,在此创建了cn.com.Person类的对象p,且为该对象的name属性赋值
<jsp:useBean id="person" class="cn.com.Person"/>
<jsp:setProperty name="person" property="name" value="戚继光"/>
<jsp:getProperty name="person" property="name" />

更多jsp动作参照这里。


jsp的隐式对象

jsp隐式对象是指jsp容器为每个页面提供的Java对象,开发者可以不用声明而直接使用它们。也被称为预定义变量,九大隐式对象。

1. request对象

是HttpServletRequest类的实例,这是我们在讲Servlet时提到的。每当客户端请求一个jsp页面时,jsp引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
详细解读参照Servlet系列

2. response对象

是HttpServletResponse类的实例,当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
详细解读参照Servlet系列

3. out对象

out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered=’false’属性来轻松关闭缓存。

  • out.print(dataType dt),输出Type类型的值;
  • out.println(dataType dt),输出Type类型的值然后换行;
  • out.flush(),刷新输出流。

4. session对象

session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
session对象用来跟踪在各个客户端请求间的会话。
可参照之前的HttpSession文章

5. application对象

application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。
这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
参照之前的Servlet文章。

6. config对象

config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。
这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。
参照之前的Servlet文章。

7. pageContext 对象

pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。
这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。
这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。
其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute(“attrName”)移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:

pageContext.removeAttribute("attrName", PAGE_SCOPE);

8. page 对象

这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。
page 对象就是this对象的同义词。

9. exception 对象

exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值