1、jsp命令指令
2、jsp隐含对象
3、jsp动作指令
4、jsp中的javabean
5、jsp用户自定义标签
6、jsp2.0的新特性
————————————————————————————
jsp隐含对象
在jsp中,web服务器为jsp定义了许多隐含对象,用户可以通过这些对象与jsp网页中的可执行servlet环境交互。
在jsp环境中用户可以直接用这些对象的各种方法。这些隐含对象如下:
request 客户端请求,包括从GET/POST请求传递过来的参数
response 网页传回客户端的反应
session 与请求关联的会话
config 代码片段配置对象
application 代码片段的运行环境
out 传送响应的输出流
pageContext 在此管理网页属性
page JSP网页本身
exception 有错的网页中未被捕获的例外
-----------------------------
一、request
用于封装客户端的请求信息,通过调用相应的方法可以获取客户端提交的信息。
客户端通常使用html表单向服务器提交信息。表单的格式一般如下:
<FORM method=get action="提交信息的目的页面">
</FORM>
××××××实例3 获取客户提交的信息××××××××××
1、编写login.jsp
< HTML >
< BODY >
< FORM action = " getinfo.jsp " method = post name = form >
< INPUT type = " text " name = " name " >
< INPUT TYPE = " submit " value = " Enter " name = " submit " >
</ FORM >
</ FONT >
</ BODY >
</ HTML >
2、把login.jsp保存到webapps/02/3目录下
3、编写getinfo.jsp
< HTML >
< BODY >
< P > 获取文本框提交的信息:
<% String textContent = request.getParameter( " name " );
%>
< BR >
<%= textContent %>
< P > 获取按钮的名字:
<% String buttonName = request.getParameter( " submit " );
%>
< BR >
<%= buttonName %>
</ FONT >
</ BODY >
</ HTML >
4、把login.jsp保存到webapps/02/3目录下
5、在浏览器中输入输入http://localhost:8989/02/3/login.jsp就可以了
¥¥¥如果直接进入http://localhost:8080/02/3/getinfo.jsp则获得
null
获取按钮的名字:
null
¥¥¥¥¥¥工作流程是<FORM action="getinfo.jsp" method=post name=form>把login.jsp的对象信息获取保存到getinfo.jsp来,然后再getinfo.jsp用request语法把这些信息提取出来。
——————————————————————————————————————————————————
二、response 对象
与request相对应,response 用于对客户端请求做出动态响应,将jsp容器处理后的信息向客户端输出。
在某些情况下,当响应客户端时,需要将客户端转向另一个页面。
这就可以用response 对象的sendRedirect(URL url)方法实现客户端的重定向。
××××实例4 页面重定向××××××××××
本实例包含三个页面,分别是登录页面、正确显示信息页面、信息填写不全的错误提示页面
1、编写登录页面input.html
< HEAD >
< TITLE > 登录页面 </ TITLE >
</ HEAD >
< BODY >
< BR >
< FORM action ="sendRedirect.jsp" method =post name =form1 >
< P > 姓名 : < INPUT name =inputName ></ P >
< P > E-Mail : < INPUT name =inputE_Mail ></ P >
< INPUT name =submit type =submit value =送出 >
</ FORM >
</ BODY >
</ HTML >
2、编写处理提交信息及正确显示信息页面sendRedirect.jsp
<% @ page language = " java " %>
<%
String Name = request.getParameter( " inputName " );
String E_Mail = request.getParameter( " inputE_Mail " );
if (Name.equals( "" ) || E_Mail.equals( "" )) // 检查Name或E_Mail是否完成资料输入
response.sendRedirect( " sendRedirect.html " ); // 若未完成资料输入则将网页导向sendRedirect.html
%>
< HTML >
< HEAD >
< TITLE > 网页引导 </ TITLE >
</ HEAD >
< BODY >
< BR >
< P > 您输入的姓名是:
<%= Name %>
</ P >
< P > 您输入的E - Mail帐号为:
<%= E_Mail %>
</ P >
</ BODY >
</ HTML >
3、编写错误提示页面sendRedirect.html
< HEAD >
< TITLE > 网页引导 </ TITLE >
</ HEAD >
< BODY >
< BR >
< FORM action ="sendRedirect.jsp" method =post name =form1 >
< font size =5 color =red >
你输入的信息不完整,请重新输入!
</ font >
< br >
< P > 姓名 : < INPUT name =inputName ></ P >
< P > E-Mail : < INPUT name =inputE_Mail ></ P >
< INPUT name =submit type =submit value =送出 >
</ FORM >
</ BODY >
</ HTML >
4、把这三个页面保存到webapps/02/4目录下
在浏览器中输入输入http://localhost:8989/02/4/input.html就可以了
----------------------------------
三、session 对象
Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。每一访问者都会单独获得一个Session
。在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共
享数据;如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session
变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。
--想想登录论坛的时候每个页面上都有的用户名
session 中存储和获取信息的方法:
session.setAttribute(String name,String value)设置指定名称的session属性值;
Object getAttribute(String name)获取指定名称的session属性值;
void removeAttribute(String name)移除指定名称的session属性值;
void putValue(String name,Object value)添加一个session变量;
Object getValue(String name)获得指定名称的session变量的值;
void removeValue(String name)移除一个session变量的值;
String[] getValueName()取得所有session变量的名称的集合。
×××××实例5 在会话过程中存储用户属性××××××××××××××××
有三个页面,在第一个页面session1.jsp中输入用户名,
第二个页面session2.jsp通过request对象提取session1.jsp表单中的thename值,将它存储为name变量,然后将
这个name值保存到session对象中。第三个页面session3.jsp的主要任务是显示问答结果,它从session对象提取
thename的值并显示它,以此证明在多个页面中可以通过session对象存储和维持信息。
1、编写session1.jsp
< BODY >
< FORM METHOD =POST ACTION ="session2.jsp" >
请输入您的姓名:
< INPUT TYPE =TEXT NAME ="thename" >
< INPUT TYPE =SUBMIT VALUE ="SUBMIT" >
</ FORM >
</ BODY >
</ HTML >
2、编写session2.jsp
< BODY >
<% @ page language = " java " %>
<%! String name = "" ; %>
<%
name = request.getParameter( " thename " );
session.putValue( " thename " , name);
%>
您的姓名是: <%= name %>
< p >
< FORM METHOD = POST ACTION = " session3.jsp " >
您喜欢吃什么 ?
< INPUT TYPE = TEXT NAME = " food " >
< P >
< INPUT TYPE = SUBMIT VALUE = " SUBMIT " >
</ FORM >
</ BODY >
</ HTML >
3、
编写session3.jsp
< BODY >
<% @ page language = " java " %>
<%! String food = "" ; %>
<%
food = request.getParameter( " food " );
String name = (String) session.getValue( " thename " );
%>
您的姓名是: <%= name %>
< P >
您喜欢吃: <%= food %>
</ BODY >
</ HTML >
4、把这三个页面保存到webapps/02/5目录下
在浏览器中输入输入http://localhost:8989/02/5/session1.jsp就可以了
------------------------------
四、application 对象
和Session类似但作用范围不同,Session每个用户各一个互不共享,而所有用户共享同一个application对象。
×××××实例6 简单网站计时器×××××
具体代码application.jsp如下(这里面还有几个有用的html语法)
<% @ page language = " java " %>
< HTML >
< HEAD >
< TITLE > 存取application数据 </ TITLE >
</ HEAD >
< BODY >
< CENTER >
< FONT SIZE = 5 COLOR = blue > 存取application数据 </ FONT >
</ CENTER >
< BR >
< HR >
< BR >
<%
Object obj = null ;
String strData = (String)application.getAttribute( " Data " );
int Data = 1 ;
// 检查是否Data变量是否可取得
if (strData != null )
// 将取得的值增加1
Data = Integer.parseInt(strData) + 1 ;
// 起始Data变量值
application.setAttribute( " Data " , String.valueOf(Data));
%>
< CENTER >
当前您的访问次数是:
< Font color = red ><%= Data %></ Font >
</ CENTER >
< BR >
</ BODY >
</ HTML >
2、把这个页面保存到webapps/02/6目录下
在浏览器中输入输入http://localhost:8989/02/6/application.jsp就可以了。
————————————————————————------
五、out对象
out对象是一个输出流,用来向客户端输出数据。
××××××××××实例7 向客户端输出数据××××××××××××××
1、具体代码out.jsp如下
<% @page import = " java.util.* " %>
< HTML >
< HEAD >
< TITLE > out对象使用实例 </ TITLE >
</ HEAD >
< BODY >
<%
out.println( new Date().toLocaleString());
out.print( " <BR> " );
out.print( " 测试成功 " );
%>
</ BODY >
</ HTML >
2、把这个页面保存到webapps/02/7目录下
在浏览器中输入输入http://localhost:8989/02/7/out.jsp就可以了。
---------------------
六、config对象
config 对象
config对象提供了对每一个给定的服务器小程序或JSP页面的javax.servlet.ServletConfig对象的访问。它封装
了初始化参数以及一些使用方法。
作用范围就当前页面,被包含到别的页面无效.jsp的config对象作用不什么到,在servlet中作用比较大.
config对象的方法
(1)getInitParameter(String name)----返回String类型的初始化参数。
语法如下:
config.getInitParameter(String name)
(2)getInitParameterNames()----返回所有初始化参数的名字。
语法如下:
config.getInitParameterNames()
(3)getServletName()----获得当前服务器小程序或JSP页面的名称。
语法如下:
config.getServletName()
(4)getServletContext()----获得当前服务器小程序或JSP页面的服务器小程序环境。
语法如下:
config.getServletContext()
实例:(调试失败)
config.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>meg.jsp</title>
</head>
<body>
<table align="center" border="0" cellPadding="0" cellSpacing="0"
width="730">
<tr>
<td>
<div align="center">
<br>
客户服务信箱:
<%=config.getInitParameter("email")%>
客户服务热线:
<%=config.getInitParameter("phone")%>
<br>
客户服务 QQ:
<%=config.getInitParameter("qq")%>
<br>
</div>
</td>
</tr>
</table>
</body>
</html>
在web.xml的</web-app>前插入
<!-- config -->
<servlet>
<servlet-name>admin</servlet-name>
<jsp-file>/config.jsp</jsp-file>
<init-param>
<param-name>email</param-name>
<param-value>service@abc.com</param-value>
</init-param>
<init-param>
<param-name>phone</param-name>
<param-value>0411-12345678</param-value>
</init-param>
<init-param>
<param-name>qq</param-name>
<param-value>88888中文呢</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>admin</servlet-name>
<url-pattern>/config.jsp</url-pattern>
</servlet-mapping>
<!-- end config -->
####参考####
1、《白领就业指南:J2EE开发员成长之路》
2、http://blog.chinaunix.net/u/27731/showart_290196.html