JSP内置对象详解

JSP内置对象详解

1、Out对象

主要用来向客户端输出各种格式的数据,并且管理应用服务器上的输出缓冲区,Out对象的基类是javax.servlet.jsp.JspWriter类。
Out对象主要用来向客户端输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,其基类是JspWriter.Out对象的主要方法为:
out.print(类型)或out.println(类型):out.print()方法与out.println()方法的区别是out.print()方法在输出完毕后,并不结束该行,而out.println()方法在输出完毕后,会结束当前行,下一个输出语句将在下一行开始输出.
out.newLine():输出一个换行符号.
out.clearBuffer():清除缓冲区里的数据,并且把数据写到客户端去.
out.clear():清除缓冲区里的数据,但不把数据写到客户端去.
out.getRemaining():获取缓冲区中没有被占用的空间的大小.

out.flush():输出缓冲区里的数据.out.flush()方法也会清除缓冲区中的数据,但是此方法会先将之前缓冲区中的数据输出至客户端,然后再清除缓冲区中的数据.
out.getBufferSize():获得缓冲区的大小,缓冲区的大小可以用来设置.
out.isAutoFlush():返回布尔值,如果auto flush,那么返回true,反之返回false.是否auto fush可以用来设置.
out.close():关闭输出流,从而可以强制终止当前页面的剩余部分向浏览器输出.


Out的主要方法:

out.println(DataType);或out.print(DataType);

实例:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> out对象使用实例</TITLE>
</HEAD>
<BODY>
<%
out.println(new Date().toLocaleString());
out.print("<BR>");
out.print("测试成功");
%>
</BODY>
</HTML>

2、Request对象
Request内置对象代表了客户端的请求信息,主要用于接受客户端通过HTTP协议传送给服务器端的数据.在客户端的请求中如果有参数,则该对象就有一个参数列表.它通常是HttpServlet-Request的子类,其作用域就是一次Request请求.

Request对象包括很多方法,主要有:
getCookies():返回客户端的cookie对象,结果是一个cookie数组.
getSession(boolean create):返回和当前客户端请求相关联的HttpSession对象,如果当前客户端请求没有和任何HttpSession对象关联,那么当create变量为true,则创建一个HttpSession对象并返回;反之,返回null.
getHeader(String name):获得http协议定义的传送文件头信息。
getAttribute(String name):返回name指定的属性值,若不存在指定的属性,就返回null.
getattributeNames():返回request对象所有属性的名字,结果集是一个Enumeration(枚举)类的实例.
getHeaderNames():返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例.getHeaders(String name):返回指定名字的request header的所有值,结果集是一个Enumeration(枚举)类的实例.
getMethod():返回客户端向服务器端传送数据的方法,一般方法有GET,POST,PUT等类型.
getParameter(String name):以字符串的形式返回客户端传来的某一个请求参数的值,该参数名由name指定.当传递给此方法的参数名没有实际参数与之对应时,返回null.
getparameterNames():返回客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例.当传递给此方法的参数名没有实际参数与之对应时,返回null.
getParameterValues(String name):以字符串数组的形式返回指定参数所有值.
getQueryString():返回查询字符串,该字符串由客户端以GET方法向服务器端传送.
getRequestURI():获得发出请求字符串的客户端地址.
getServletPath():获得客户端所请求的脚本文件的文件路径.
setAttribute(String name,Java.lang.Object o):设定名字为name的request参数值,该值由Object类型的o指定.
getServerName():获得服务器的名字,如果没有设定服务器名,则返回服务器IP地址.
getServerPort():获得服务器的端口号.
getRemoteAddr():获得客户端的IP地址.
getRemoteHost():获得客户端主机的名字,若失败,则返回客户端电脑的IP地址.
getProtocol():获取客户端向服务器端传送数据所依据的协议名称,如http/1.1.
getContentLength():以字节为单位返回客户端请求的大小.如果无法得到该请求的大小,则返回-1.
getContentType():获取客户端请求的MIME类型.如果无法得到该请求的MIME类型,那么返回-1.
getInputStream():以二进制的形式将客户端的请求以一个ServletInputStream的形式返回.使用此方法可以获得客户端的multipart/form-data数据,可以实现文件上传.

isSecure():如果客户机是通过一个安全的访问方式访问的,就返回true;反之,返回false.
getDateHeader():返回一个long类型的数据,表示客户端发送到服务器的头信息中的时间信息.
getInitHeader():获取客户端发送到服务器端的头信息中的某一个特定的信息,并转换为int类型.
getContextPath():返回环境路径.对于JSP来说,一般是当前Web应用程序的根目录.
isRequestedSessionIdValid():返回一个指示客户端请求发送Session ID是否仍然有效的布尔值.
isRequestedSessionIdFromCookie():返回一个指示客户端请求发送Session ID是否存在于Cookie中的布尔值.
isRequestedSessionIdFromURL():返回一个指示客户端请求发送Session ID是否存在于URL中的布尔值.


Request.setAttribute()与Request.getAttribute()方法实例(也可以使用forward建立请求关系):

主页面:

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%@ include file="1.jsp" %>
你刚才输入的内容是:
<%=request.getAttribute("gr")%>

引入页面:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request对象使用实例</TITLE>
</HEAD>
<BODY>
<%
request.setAttribute("gr","123333");
%>
</FORM>
</BODY>
</HTML>

Request.getParameter()方法实例

主页面

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getParameter()方法使用实例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" NAME="submit" value="提交">
<INPUT TYPE="reset" NAME="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>

引入页面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
你刚才输入的内容是:<BR>
<%=request.getParameter("gr1")%><BR>
<%=request.getParameter("gr2")%><BR>
<%=request.getParameter("gr3")%><BR>

Request.getParameterName()方法实例

主页面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getParameterName()方法使用实例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=post ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" value="提交">
<INPUT TYPE="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>

指向页面

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
你刚才输入的内容是:<BR>
<%
Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String parameterName=(String)e.nextElement();
String parameterValue=(String)request.getParameter(parameterName);
out.print("参数名称:"+parameterName+"<BR>");
out.print("参数内容:"+parameterValue+"<BR>");
}
%>

Request.getAttributeName()方法实例

主页面:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getAttributeName()方法使用实例</TITLE>
</HEAD>
<BODY>
<jsp:include page="2.jsp" flush="true"/>
<%
Enumeration e=request.getAttributeNames();
while(e.hasMoreElements()){
String attributeName=(String)e.nextElement();
String attributeValue=(String)request.getAttribute(attributeName);
out.print("变量名称:"+attributeName);
out.print("变量内容:"+attributeValue+"<BR>");
}
%>
</FORM>
</FORM>
</BODY>
</HTML>


转向页面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%
request.setAttribute("gr1","111");
request.setAttribute("gr2","222");
request.setAttribute("gr3","333");
%>

request.getRemoteAddr()方法实例:

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getRemoteAddr()方法使用实例</TITLE>
</HEAD>
<BODY>
<B>你的IP地址:</B>
<B><%=request.getRemoteAddr()%></B>
</FORM>
</FORM>
</BODY>
</HTML>

3、Response对象
Response对象实现HttpServletResponse接口,可对客户的请求做出动态的响应,向客户端发送数据,如Cookie,HTTP文件头信息等,一般是HttpServlet.Response类或其子类的一个对象.该对象的常用方法为:
addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,用request的getCookies()方法可以获得这个Cookie.
addHeader(String name,String value):添加HTTP文件头,该header将会传到客户端去,如果有同名的header存在,那么原来的header将会被覆盖掉.
containsHeader(String name):判断指定名字的HTTP文件头是否存在,并返回布尔值.

sendError(int sc):向客户端发送错误信息,例如,505指示服务器内部错误;404指示网页找不到的错误.
setHeader(String name,String value):设定指定名字的HTTP文件头的值,如果该值存在,那么它会被新的值覆盖.
setContenType(String type):响应设置内容类型头.
sendRedirect(URL):可以将用户重定向到一个不同的页面(URL).sendRedirect(URL)方法通过返回特定的状态代码而起作用,当它被调用时,返回一个状态代码,然后在响应中定位,给新页面一个新地址.状态代码和定位头会自动把浏览器重定位到新页面.不过,用户通常不能被顺利重定位到新的页而,特别是老一些的浏览器,而且一些新版本的浏览器在自动响应定向作用状态代码时会有些问题,当浏览器无法自动响应状态代码时,会收到一些字段信息.

Session是一种服务器个别处理与记录用户端上网使用者信息的技术.当使用者与服务器联机时,服务器可以给每一个上网的使用者一个Session并设定其中的内容,这些Session都是个别独立的,服务器端可以借此来辨别使用者信息进而提供个别的服务. Session对象的常用方法为:
getAttribute(String name):获得指定名字的属性,如果该属性不存在,将会返回null.
getAttributeNames():返回Session对象中存储的每个属性对象,结果集是一个Enumeration类的实例.
setAttribute(String name,java.lang.Object value):设定指定名字的属性值,并且把它存储在Session对象中.
isNew():判断目前Session是否为新的Session,若是则返回ture,否则返回false.


response.setHeader()方法网页自动刷新实例:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> response刷新页面实例</TITLE>
</HEAD>
<BODY>
<%
response.setHeader("refresh","3");
out.println(new Date().toLocaleString());
%>
</BODY>
</HTML>

4、Application对象

在JSP服务器运行时刻,仅有一个Application对象,它由服务器创建,也由服务器自动清除,
不能被用户创建和清除。我们只能创建这个Appliation对象的同步拷贝。

Application对象和Session对象相比,含义更加广泛.在使用Session对象时,各个客户端共享一个Session对象,而使用Application对象时,在同一个服务器中的JSP文件共享一个Application对象.Application对象主要方法为:
getAttribute(String name):返回由name指定名字的Application对象属性的值,这是个Object对象,如果没有,就返回null.
getAttributeNames():返回所有Application对象的属性的名字,结果集是一个Enumeration(枚举)类的实例.
3.4 Application对象的方法
getInitParameter(String name):返回由name指定的名字的application对象的某个属性的初始值,如果没有参数,就返回null.
getServerInfo():返回servlet编译器当前版本信息.
setAttribute(String name,Object object):将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个属性.



setAttribute(),getAttribute()和removeAttribute()方法实例:

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Application对象方法实例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
application.setAttribute("username",username);
application.setAttribute("password",password);
out.println(application.getAttribute("username")+"<BR>");
out.println(application.getAttribute("password")+"<BR>");
application.removeAttribute("password");
out.println(application.getAttribute("password")+"<BR>");
%>
</BODY>
</HTML>

getAttributeNames()方法实例:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> Application对象方法实例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";

application.setAttribute("username",username);
application.setAttribute("password",password);

Enumeration enum=application.getAttributeNames();
while(enum.hasMoreElements()){
String attrName=(String)enum.nextElement();
out.println(attrName+"----"+application.getAttribute(attrName)+"<BR>");
}

%>
</BODY>
</HTML>


5、Session对象
getId():返回Session对象在服务器端的编号.每生成一个Session对象,服务器都会给它一个编号,并且该编号不会重复,这样服务器才能根据编号来识别Session,并且正确的处理某一特定的Session及其提供的服务.
getCreationTime():返回Session对象被创建的时间,单位为毫秒.
getLastAccessedTime():返回当前Session对象最后一次被操作的时间,时间的单位为毫秒.
getMaxInactiveInterval():获取Session对象的生存时间,时间的单位为秒.
setMaxInactiveInterval(int interval):设置Session的有效时间(也叫超时时间),时间的单位为秒.
removeAttribute(String name)"删除指定的属性(包含属性名,属性值).如果在有效时间内,用户做出了新的请求,那么服务器就会将其看作一个新的用户,此时,服务器将创建一个新的Session,旧的Session信息将会丢失

当用户登陆网站,系统将为他生成一个独一无二的Session对象,用以记录改用户的个人信息
,一旦改用户退出网站,那么该Session对象将会注销。Session对象可以绑定若干个人信息或
者Java对象,不同Session对象的同名变量是不会相互干扰的。

getValue(String name)、putValue(String name)、removeValue(String name)、getValueNames()
、getCreationTime()、getId()、getLastAccessedTime()、getMaxInactiveInterval()、
setMaxInactiveInterval()方法:

主文件:

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session主页面</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
session.putValue("username",username);
session.putValue("password",password);
%>
<A HREF="2.jsp">指向第二页</A>
</BODY>
</HTML>

转向页面1

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session转向页面1</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%><BR>
<%out.println("session create:"+session.getCreationTime());%><BR>
<%out.println("session id:"+session.getId());%><BR>
<%out.println("session last access:"+session.getLastAccessedTime());%><BR>
<%out.println("session 原来最大休眠时间:"+session.getMaxInactiveInterval());%><BR>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+1);%><BR>
<%out.println("session 最新最大休眠时间:"+session.getMaxInactiveInterval());%><BR
<%
String []name=session.getValueNames();
out.println("--------------"+"<BR>");
for(int i=0;i<name.length;i++)
{
out.println(session.getValue(name[i])+"<BR>");
}
%>
<%
session.removeValue("username");
%>
<A HREF="3.jsp">指向第三页</A>
</BODY>
</HTML>

转向页面2

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session转向页面2</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%>
</BODY>
</HTML>

invalidate()方法将会将会清除当前的session对象解除它和任何参数或者JAVA对象的绑定关系

实例略







简单的JSP计数器
实例:

主页面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> JSP计数器 </TITLE>
</HEAD>
<BODY>
<div align="center"><font face="黑体" size="10">你是第<jsp:include page="11.jsp" flush="true"/> 位访客</font> </div>
</BODY>
</HTML>

引入页面

<%!protected int count=0;%>
<%=++count%>
JavaBean设计规范及实例
javaBean的设计规范:
一个javaBean类必须是一个公共类
一个javaBean类必须有一个空的构造函数
一个javaBean类不应有公共实例变量
持有值应该通过一组存取方法(getXxx和setXxx)来访问
实例:

package Show;
import java.sql.*;

public class DBconn{
private String sDBDriver="org.gjt.mm.mysql.Driver";
private String sConnStr="jdbc:mysql://10.1.1.79:3306/web?user=root&password=2676141";
private Connection conn=null;
private ResultSet rs=null;

public DBconn(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.out.println("DBconn():"+e.getMessage());
}
}

public String getsConnStr(){
return sConnStr;
}

public void setsConnStr(String sConnStr){
this.sConnStr=sConnStr;
}

public void executeUpdate(String sql)throws Exception{
sql=new String(sql.getBytes("GBK"),"ISO8859_1");
try{
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
conn.close();
stmt.close();
}
catch(SQLException ex){
System.out.println("sql.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)throws Exception{
rs=null;
try{
sql=new String(sql.getBytes("GBK"),"ISO8859_1");
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
conn.close();
stmt.close();
}
catch(SQLException ex){
System.out.println("sql.executeQuery:"+ex.getMessage());
}
return rs;
}
}


转CSDN

你可能感兴趣的:(JSP内置对象详解)