1.什么是jsp?
在传统网页中加入java程序片断和jsp标记就构成了jsp网页。
2.在MVC模式中,jsp、javabean和servlet之间有何关系?
3.jsp文件的编写
一个复杂一点的jsp页面可能会包括如下一些常用的jsp指令:
<%@ page contentType=”text/html;charset=gbk”%>
<!–定义程序所要输出的字符集–>
<%@page import=”java.sql.*”%>
<!–<%@ page %>是JSP语法的指令,import是<%@ page %>的属性,和java中import关键字意思一样,没有区别。–>
<%@ taglib uri=”http://struts-menu.sf.net/tag-el” prefix=”menu” %>
<!–<%@ taglib %>是JSP语法的指令,taglib指令说明需要在jsp页面中引入标签库,uri是指标签库所在的位置,prefix是指在jsp中引用标签库时指定的前缀–>
<jsp:useBean id=”userBean” class=”com.userBean” scope=”request”/>
<!–实例化一个JavaBean,取名为userBean–>
<html>
<head><title>A Comment Test</title></head>
<body>
<!–正文内容略–>
</body>
</html>
4.javabean在jsp中的声明和使用
<jsp:usebean>指令表示用来在JSP页面中创建一个BEAN实例。在<jsp:usebean>指令中定义了几个属性:
id:定义了生成的bean组件的名字
scope:定义了bena的活动范围,取值如下:page(表示当前页有效) | request(表示这次请求有效) | session(表示这次会话有效) | application(表示在应用程序的生命周期有效).
class:说明了bean的类文件的名称
5.标签库的配置
<%@ taglib uri=”http://jakarta.apache.org/struts/tags-bean”
<%@ taglib uri=”http://jakarta.apache.org/struts/struts-htm” prefix=”html”%>
<%@ taglib uri=”http://jakarta.apache.org/struts/struts-logic” prefix=”logic”%>
<%@ taglib uri=”http://jakarta.apache.org/struts/struts-nested” prefix=”nested”%>
<%@ taglib uri=”/WEB-INF/struts-bean.tld” prefix=”bean”%>
<%@ taglib uri=”/WEB-INF/struts-html.tld” prefix=”html”%>
<%@ taglib uri=”/WEB-INF/struts-logic.tld” prefix=”logic”%>
<%@ taglib uri=”/WEB-INF/struts-nested.tld” prefix=”nested”%>
增加如下配置:
<taglib>
6.jsp脚本元素
脚本元素包含三部分:声明(Declarations)、Scriptlets、表达式(Expressions)
1)声明(Declarations)
功能:在JSP程序中声明变量、实例和类。声明是以<%! 为起始;%> 为结尾。
语法:<%! code %>
2)Scriptlets
功能:Scriptlet 中可以包含有效的程序片段,只要是合乎Java本身的标准语法即可。Scriptlet 是以 <% 为起始;%> 为结尾。
语法:<% code fragment %>
3)表达式(Expressions)
功能:JSP提供了一种简单方法访问可用的Java变量或Java表达式,并生成页面HTML字符串。Expressions标签是以 <%= 为起始;%> 为结尾,
其中间内容包含一段合法的Java的表达式。
语法:<%= expression %>
7.jsp中”预定义变量”的使用
为了简化JSP表达式和scriptlets中的代码,要求对4种预定义变量熟练掌握,它们是:request,response,out,session,
1)request
与request相联系的是HttpServletRequest类,使您可以得到request的参数(通过getParameter方法),request 的类型(GET,POST,HEAD,等等),和引入的HTTP头(cookies,Referer,等等)。严格来说,request是类ServletRequest的一个子类而不是HttpServletRequest类的,事实上,如果request的协议不是HTTP,那麽它几乎不会工作。
2)response
对客户端的response与HttpServletResponse 相连。请注意,因为输出流是放入缓冲的,所以可以设置HTTP状态码和response头,尽管在标准的servlets中不允许将之发送到客户端。
3)out
这里使用PrintWriter类来发送输出到客户端。然而,为了使response对象有效,可使用一个PrintWrite类的使用缓冲的版本JspWriter。使用session的属性page directive,您可以自己定义缓冲的大小,甚至可以在使用了buffer属性后关闭缓冲。也请注意,out仅用于scriptlets之中,因为JSP表达式自动的放入输出流,所以极少需要明确的声明out。
4)session
应用与request相联系的HttpSession类。因为session是自动创建的,即使没有一个引入的session,这种变量仍可绑定。有一个例外是,如果您用page directive关闭session,再试图使用session时将导致错误(在JSP页面向servlet转换时)。